使用这个网站https://learngitbranching.js.org/?locale=zh_CN
git commit
提交一个新分支。
git commit –amend
提交过代码之后,发现一个地方改错了,你下次提交时不想保留上一次的记录;或者你上一次的commit message的描述有误,这时候你可以使用接下来的这个命令:git commit –amend。
git checkout
切换分支或者让HEAD指向某个节点。
git merge
当前节点在A,git merge B后,会在A节点后创建一个包含B的分支。
git rebase
第二种合并分支的方法是 git rebase
。Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。
Rebase 的优势就是可以创造更线性的提交历史,这听上去有些难以理解。如果只允许使用 Rebase 的话,代码库的提交历史将会变得异常清晰。
当前节点在A,git rebase B后,会在A节点后创建一个包含B的分支。
git rebase -i
在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。
当 rebase UI界面打开时, 你能做3件事:
- 调整提交记录的顺序(通过鼠标拖放来完成)
- 删除你不想要的提交(通过切换
pick
的状态来完成,关闭就意味着你不想要这个提交记录) - 合并提交。
git rebase -i 开始节点 开始节点之后的节点会进入选择范围
相对引用
- 使用
^
向上移动 1 个提交记录 - 使用
~<num>
向上移动多个提交记录,如~3
git checkout master ^ 移动到master上面
git checkout master ~2 移动到master上面的第2个记录
git reset
git reset
通过把分支记录回退几个提交记录来实现撤销改动。你可以将这想象成“改写历史”。git reset
向上移动分支,原来指向的提交记录就跟从来没有提交过一样。
git reset matser^ 撤回到master上面记录
git revert
git reset不能用于远程分支,所以要使用git revert 创建一个新的分支,这个分支撤销了上一个分支的改变。与上上个分支的内容相同。
git revert master 在master后创建一个节点,与master上节点内容相同
git cherry-pick
将一些提交复制到当前所在的位置(HEAD
)下面。与rebase类似,但这个指令可以选择多个节点并且不只是像rebase那样只能选择最后的节点
git cherry-pick <提交号>...
git clone
git clone
命令在真实的环境下的作用是在本地创建一个远程仓库的拷贝(比如从 github.com)
git fetch
git fetch
完成了仅有的但是很重要的两步:
- 从远程仓库下载本地仓库中缺失的提交记录
- 更新远程分支指针(如
o/master
)
git fetch
实际上将本地仓库中的远程分支更新成了远程仓库相应分支最新的状态。git fetch
并不会改变你本地仓库的状态。它不会更新你的 master
分支,也不会修改你磁盘上的文件。
git pull
先抓取更新再合并到本地分支,git pull
就是 git fetch 和 git merge 的缩写!
git push
git push
负责将你的变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录。
git pull –rebase
git pull --rebase
就是 fetch 和 rebase 的简写!用于使本地分支的变更基于远程分支