git 杂记
对 git 一些容易忘的点做一些简单的记录。
理解工作区域
- 工作区:未被跟踪的,commit 的时候不会提交这些文件。
- 暂存区:被跟踪的,可以使用 git add 将文件从工作区移到暂存区,提交的时候这之中的文件会被提交。
- 提交: 进行 git commit 之后会将暂存区中的文件进行提交。
add
- 将文件从工作区添加到暂存区。
- 在某些冲突处理完毕之后,可以使用 git add 表示处理完毕。
merge
对于同一条线上的 merge,只是会进行指针上的移动。对于不在同一条线上的 merge,会找到公共的祖先进行一个三方的 merge 合并,然后形成一个新的 commit,在合并的时候处理冲突。
rebase
本质上来说是把 commit 抽取成补丁,在指定的 base 上应用这些补丁,在进行这个操作的完成的时候,原先的 commit 就已经消失了,将补丁应用之后会产生新的 commit。
reset
本质上来说是取消 commit 记录并移动 HEAD 指针。
- soft:只回退已经提交的版本,但是工作区和暂存区还是存在着修改过的版本。
- default: 不仅回退已经提交的版本,暂存区的版本也进行回退,但是工作区仍然保持着版本。
- hard:完全清空这个记录,连工作区都不再保留这个版本。
checkout
checkout 相对于 HEAD 指针的移动只是进行位置的移动,他在随意移动的时候不会进行对原先 commit 记录的撤销。