提交git commit
提交-包含信息git commit -m "message"
提交-省去add携带信息快速提交git commit -a -m "message"
提交-包含代码微改不希望上次提交记录同步git commit --amend
创建分支git branch <NAME>
切换分支git commit <NAME>
创建并切换分支git commit -b <NAME>
合并分支git merge <目标分支名称> --目标分支与当前分支不同
合并到主分支git merge <目标分支名称> --必要条件,当前分支为主分支
注:把目标分支里的工作直接移到当前分支上。移动以后会使得两个分支的功能看起来像是按顺序开发,但实际上它们是并行开发的。
git rebase <目标分支>
git checkout <历史记录的hash值>
注:通过指定提交记录哈希值的方式在 Git 中移动不太方便。在实际应用时,并没有像本程序中这么漂亮的可视化提交树供你参考,所以你就不得不用 git log 来查查看提交记录的哈希值。
并且哈希值在真实的 Git 世界中也会更长(译者注:基于 SHA-1,共 40 位)。例如前一关的介绍中的提交记录的哈希值可能是 fed2da64c0efc5293610bdd892f82a58e8cbc5d8。舌头都快打结了吧…
比较令人欣慰的是,Git 对哈希的处理很智能。你只需要提供能够唯一标识提交记录的前几个字符即可。因此我可以仅输入fed2 而不是上面的一长串字符。
使用相对引用的话,你就可以从一个易于记忆的地方(比如 bugFix 分支或 HEAD)开始计算。
相对引用非常给力,这里我介绍两个简单的用法:
使用 ^ 向上移动 1 个提交记录
使用 ~<num> 向上移动多个提交记录,如 ~3
父级有多条分支可以使用 ^<num>进行选择,父级分支按先后顺序排列
在 Git 里撤销变更的方法很多。和提交一样,撤销变更由底层部分(暂存区的独立文件或者片段)和上层部分(变更到底是通过哪种方式被撤销的)组成。我们这个应用主要关注的是后者。
主要有两种方法用来撤销变更
git reset # 本地撤销,在reset后, C2 所做的变更还在,但是处于未加入暂存区状态。
git revert # 远程同步撤销,在我们要撤销的提交记录后面会多一个新提交!这是因为新提交记录 C2引入了更改 —— 这些更改刚好是用来撤销 C2 这个提交的。也就是说 C2' 的状态与 C1 是相同的。revert 之后就可以把你的更改推送到远程仓库与别人分享
git rebase -i的使用说明参数 --interactive 的 rebase 命令, 简写为 -i。
Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。在实际使用时,所谓的 UI 窗口一般会在文本编辑器 —— 如 Vim —— 中打开一个文件。
当 rebase UI界面打开时, 你能做3件事:
调整提交记录的顺序(通过鼠标拖放来完成)
删除你不想要的提交(通过切换 pick 的状态来完成,关闭就意味着你不想要这个提交记录)
合并提交。 它允许你把多个提交记录合并成一个。
使用自由移动提交记录的两种方法实现。主要用于提交顺序,记录是否删除
创建里程碑git tag <NAME>
查找最近里程碑git describe [NAME] – 缺省值为当前记录
查找里程碑同git disect(一个查找产生 Bug 的提交记录的指令)搭配使用