本文首发于微信公众号:程序员乔戈里 转载请注明:https://blog.csdn.net/WantFlyDaCheng/article/details/102538508
一、两次的 git commit 到不是同一个远程分支
- 这里由于提交自己的代码第一次提交到A分支,第二次提交B分支,然后报错了,这里报错以后,会提示一个百度自己内部的链接,你点击链接就可以照着提示去修改,可以说还是省了不少事,不用自己去google百度去解决,开发效率也提高不少
- 上面图片中有6e8713f is CR parent commit 这行提示,划重点,待会要用到。
解决过程
你当前的操作场景如下图,由于一次CR(评审)的多个commits不能push到不同的refs/for/[分支名](可能导致后续评审合入merge failed):
- 本次合并我最终的目的是要合到B分支(第一次提交是A分支,第二次是B分支)
- 如果你期望commit 1和commit 2均合入分支B:
- 请回滚本地commit,重新合并为同一笔commit push至分支 B (会生成一笔新的评审)
操作命令
$git reset --soft [CR parent commit] (对应CR parent commit见push报错信息.也就是有6e8713f is CR parent commit)
$git commit -m"commit message"
$git push origin HEAD:refs/for/[branch B]
二、git 撤销文件修改
什么时候用到
- 如果有文件A没有发生修改,但是再提交评审的时候还是发现A出现了修改,你使用git diff 并没有发现你的本地文件A和远程分支A有什么不同,需要撤销修改
- 不小心勿加了空行
- 就是想撤销已经提交的某个文件的修改
如何操作
1.撤销缓存区的修改
git reset HEAD filename
- 撤销工作区的修改
git checkout --filename
三、git 冲突解决
上图是提交代码时候,发生了冲突,依旧很贴心,百度这套代码审查系统依旧给了提示,照着提示操作一波。
Step1. 在本地仓库中, 更新并合并代码
git fetch origin
git rebase origin/master
Step2. 依据提示分别打开冲突的文件,逐一修改冲突代码
- 可以看到有head和你的本次提交信息,head是远程分支,git commit -m "commit提交信息" 这条命令中我填的是689任务,可以看到每有一处信息不一致,在你产生冲突的文件都会提示出来。
- 我们需要做的就是解决冲突,对比远程和你本地产生冲突的地方,保留下你需要的代码,同时记得把head和689任务(commit提交信息)这些不是代码中的内容删除掉。
- 或者不需要这样一点点修改,你已经知道了你需要提交什么样的代码,那么直接将你确定好没问题的代码复制到这份冲突文件中,然后进行git三连即可
Step3. 所有冲突都修改完毕后, 提交修改的代码
git add -u
git rebase --continue
Step4. 更新patch
git push origin HEAD:refs/for/master
四、撤销你的commit提交
如何撤销commit提交,熟练的执行完以下两条命令以后:
git add *
git commit -m "提示信息A"
你发现自己的提示信息写的不对,想git commit -m "提示信息B",但是由于已经git commit 过了,会提示你没有什么需要git commit的,这个时候如何撤销git commit呢?
git reset --soft HEAD^
这样上一次提交就被撤回了,然后继续执行git commit -m "提示信息B" 即可。