一、撤销push
1. 执行 git log 查看提交日志,获取需要回退的版本号 ID
2. 执行 git reset --soft <版本号> ,如 git reset --soft 9d8c980edacd71410ed655,重置至指定版本的提交,达到撤销提交的目的
3. 然后执行 git log 查看提交日志
此时,已重置至指定版本的提交,log中已经没有了需要撤销的提交
git reset 命令分为两种: git reset --soft 与 git reset --hard ,区别是:
git reset --soft 表示只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。
git reset --hard直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码。
4. 执行 git push origin 分支名 --force ,强制提交当前版本号。
查看github commit 记录,对应的commit记录也撤销了
至此,撤销push提交完成
二、如果commit注释写错了,只是想改一下注释,只需要:
1)修改最后一次提交 commit 的信息
修改文件后add目标文件
然后执行
git commit --amend
此时会进入默认vim编辑器,修改后保存
2)修改非最后一次提交commit
# 当目标commit在最近n次提交内
git rebase -i HEAD~n # 在vim模式下修改目标commit的状态,从pick改为edit,保存后退出
git add xxx
git commit --amend # 修改message信息,保存后退出
# 修改结束后,结束rebase
git rebase --continue
三、cherry-pick
1)单个commit
git cherry-pick commit_a
2)多个commit
git cherry-pick commit_a commit_b commit_c
git cherry-pick commit_a^..commit_c (包含commit_a)
git cherry-pick commit_a..commit_c (不包含commit_a)
四、commit 合并
第1步:在首次提交记录上rebase
右键“第1次修改”=> Interactively Rebase from Here
第2步:合并提交(选squash或fixup)
选中“第2次修改”=> 点击“Squash”
选中“第3次修改”=> 点击“Squash”
这里也可以ctrl+A,然后点击“Squash”,效果一模一样。
第3步:重命名提交
第4步:执行rebase