Pro Git
Git 基础

1 取得项目的Git仓库

有两种取得 Git 项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来。

1.1 在工作目录中初始化新仓库

git init
git add *.c
git add README.md
git commit -m "basic version"

初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。 如果当前目录下有几个文件想要纳入版本控制,需要先用git add命令告诉 Git 开始对这些文件进行跟踪,然后提交。

1.2 从现有仓库克隆

git clone https://github.com/username/project_name.git [new_folder_name]

在当前目录创建名为project_name的目录,里面包含.git目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。另外也可以指定新的目录名new_folder_name

2 记录每次更新到仓库

工作目录下面的所有文件都不外乎这两种状态:已跟踪未跟踪。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新已修改或者已放入暂存区。而所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。Git文件状态变化周期如图:Git status

2.1 检查当前文件状态

要确定哪些文件当前处于什么状态,可以用git status命令。 Untracked files是未跟踪文件,表面Git在之前的快照(提交)中没有这些文件;Git 不会自动将之纳入跟踪范围,除非使用git add跟踪文件。 Changes to be committed是已暂存文件,等待提交。 Changes not staged for commit是已跟踪文件的内容发生了变化,但还没有放到暂存区。

2.2 跟踪新文件

使用命令git add开始跟踪一个新文件。在git add后面可以指明要跟踪的文件或目录路径。如果是目录的话,就说明要递归跟踪该目录下的所有文件。

2.3 暂存已修改文件

使用命令git add将已跟踪的并且内容发生改变的文件放到暂存区。

2.4 忽略某些文件

创建一个名为 .gitignore 的文件,列出要忽略的文件模式。文件.gitignore的格式规范如下:

  • 所有空行或者以注释符号#开头的行都会被Git忽略。
  • 可以使用标准的glob模式匹配。
  • 匹配模式最后跟反斜杠/说明要忽略的是目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号!取反。

2.5 查看已暂存和未暂存的更新

如果要查看具体修改了什么地方,可以用git diff命令。

2.6 提交更新

2.7 跳过使用暂存区域

2.8 移除文件

2.9 移动文件

3 查看提交历史

3.1 限制输出长度

3.2 使用图形化工具查阅提交历史

4 撤销操作

4.1 修改最后一次提交

4.2 取消已经暂存的文件

4.3 取消对文件的修改

5 远程仓库的使用

5.1 查看当前的远程库

5.2 添加远程仓库

5.3 从远程仓库抓取数据

5.4 推送数据到远程仓库

5.5 查看远程仓库信息

5.6 远程仓库的删除和重命名

6 打标签

6.1 列显已有的标签

6.2 新建标签

6.3 含附注的标签

6.4 签署标签

6.5 轻量级标签

6.6 验证标签

6.7 后期加注标签

6.8 分享标签

7 技巧和窍门

7.1 自动补全

7.2 Git命令别名