1. git commit 提交记录看作是项目的快照。提交记录非常轻量,可以快速地在这些提交记录之间切换!
2. git branch Git 的分支也非常轻量。它们只是简单地指向某个提交纪录
(1) git branch newBranch 创建一个名为newBranch的分支
(2) git checkout newImage 切换分支
(3) git checkout -b <your-branch-name> 创建并切换到新分支
3.合并分支
(1)git merge 合并俩个分支时会产生一个特殊的提交记录,它有俩个父节点(翻译成俩个父节点本身及它们所有的祖先都包含进来)
(2)git rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。Rebase 的优势就是可以创造更线性的提交历史。如果只允许使用 Rebase 的话,代码库的提交历史将会变得异常清晰。
4.在提交树上移动
(1) "HEAD"。 HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。HEAD 通常情况下是指向分支名的
(2)"相对引用"。指定提交记录哈希值的方式在 Git 中移动不太方便。并且哈希值在真实的 Git 世界中也会更长。例如前一关的介绍中的提交记录的哈希值可能是 fed2da64c0efc5293610bdd892f82a58e8cbc5d8。比较令人欣慰的是,Git 对哈希的处理很智能。你只需要提供能够唯一标识提交记录的前几个字符即可。因此我可以仅输入fed2 而不是上面的一长串字符。通过哈希值指定提交记录很不方便,所以 Git 引入了相对引用。这个就很厉害了! 使用相对引用的话,你就可以从一个易于记忆的地方(比如bugFix 分支或 HEAD)开始计算。相对引用非常给力,这里我介绍两个简单的用法:
1. 使用 ^ 向上移动 1 个提交记录
2. 使用 ~<num> 向上移动多个提交记录,如 ~3
(3)强制修改分支位置 git branch -f master HEAD~3 这个命令会将 master 分支强制指向 HEAD 的第 3 级父提交。
5.撤销变更
(1) git reset 通过把分支记录回退几个提交记录来实现撤销改动。你可以将这想象成“改写历史”。git reset 向上移动分支,原来指向的提交记录就跟从来没有提交过一样。例 gie reset HEAD~1.虽然在你的本地分支中使用 git reset 很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的!
(2) git revert 将远程分支退回上个版本,git revert HEAD