Skip to content

git 杂记

对 git 一些容易忘的点做一些简单的记录。

理解工作区域

  1. 工作区:未被跟踪的,commit 的时候不会提交这些文件。
  2. 暂存区:被跟踪的,可以使用 git add 将文件从工作区移到暂存区,提交的时候这之中的文件会被提交。
  3. 提交: 进行 git commit 之后会将暂存区中的文件进行提交。

add

  1. 将文件从工作区添加到暂存区。
  2. 在某些冲突处理完毕之后,可以使用 git add 表示处理完毕。

merge

对于同一条线上的 merge,只是会进行指针上的移动。对于不在同一条线上的 merge,会找到公共的祖先进行一个三方的 merge 合并,然后形成一个新的 commit,在合并的时候处理冲突。

rebase

本质上来说是把 commit 抽取成补丁,在指定的 base 上应用这些补丁,在进行这个操作的完成的时候,原先的 commit 就已经消失了,将补丁应用之后会产生新的 commit。

reset

本质上来说是取消 commit 记录并移动 HEAD 指针。

  1. soft:只回退已经提交的版本,但是工作区和暂存区还是存在着修改过的版本。
  2. default: 不仅回退已经提交的版本,暂存区的版本也进行回退,但是工作区仍然保持着版本。
  3. hard:完全清空这个记录,连工作区都不再保留这个版本。

checkout

checkout 相对于 HEAD 指针的移动只是进行位置的移动,他在随意移动的时候不会进行对原先 commit 记录的撤销。