1、git reset --hard HEAD~i
本地代码回滚到指定之前第i个版本,如果已经提交远程分支,则会提交失败
2、git revert
用于撤销某次提交,可以提交远程分支
它会撤销某次提交,然后作为一个新的提交,因此提交历史不会丢失,貌似它每次只能撤销一次提交
撤销一次提交:比较简单
git revert HEAD #撤销上一次提交
git revert HEAD^ #撤下上上一次的提交
git revert commit #撤销指定commit id的提交
撤销多次提交:也很简单 (其实撤销多次,看起来像是撤销一次^_^)
例如:我当前master分支如下,A是当前head,但是我想撤销A、B、C并作为一次提交显示
A <-- B <-- C <-- D
git revert --no-commit A
git revert --no-commit B
git revert --no-commit C
git commit -m 'revert three commits'
3、git push -f origin local_branch:remote_branch
加入-f参数,强制提交,远程端将强制更新到reset版本
当需要对远程分支的多次提交撤销时,可以使用这两个命令,可以把本地撤销的提交同步到远程分支
但是如果撤销错误,会导致找回比较麻烦,一般提交git pull不要带 -f参数
公司内部会对master分支做限制不允许强制提交, 该方法一般不要用!!!
4、git cherry-pick
A - B - C - D - E [master]
\
F-G-H [feature]
合并单个commit,如果想将提交G合并到master,可以
git checkout master
git cherry-pick G
git cherry-pick 一次只能合并一个commit
5、git rebase
合并连续多个commit,
git checkout -b newbranch G #创建新分支,保存到G的提交
git rebase —onto master F^ #F^ 表示从 F 的 commit 开始合并
这样就完成了commit F到G合并到master
6、git merge
git checkout master
git merge dev-branch
可以实现将dev-branch分支合并到master,合并全部提交
如果想精确地合并某次一次提交或多次提交,可以使用git cherry-pic和git rebase
git 管理代码确实很方便,更多的实用功能,慢慢添加吧,方便查找回顾