我刚刚通过合并FETCH_HEAD并获取我最近的更改而不是他的更改来覆盖我的同事代码。我想在合并之前恢复,然后进行合并,强制他的更改在他触摸文件的地方被接受,但是在没有任何其他更改的情况下进行合并。
我的git log(使用l2 *创建)现在看起来像这样:
* 3f6308d - (HEAD, master) Merging changes (confliect in PriceListForm.java.. was a formatting change only (Sun Dec 29 09:07:27 2013) <Gre
|\
| * 283c00c - Changing wv reports to be separated by changes in prices according to received_date rather than lab_number. (Thu Dec 26 19:39:
| |
| * 4846bf2 - Merge branch 'master' of ssh://git-pacce@free1.projectlocker.com/pcs.git (Wed Dec 25 17:49:19 2013) <jpjones>
当我执行合并时,这些文件中没有任何冲突,它只是接受了我的更改而不是jpjones的最近更改。
基本上我想重做3f6308d
,但允许jpjones更改优先。 This StackOverflow Answer似乎与我想要实现的目标相关,但我不确定并且希望得到一些澄清。
* git l2 is alias l2 = log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit --date=local
答案 0 :(得分:0)
考虑到您尚未推送错误的提交,您可以安全地将HEAD重置为提交之前:
git reset --hard HEAD^
(确保您没有正在进行的工作,例如私有文件或添加到索引的文件,因为工作树和索引都将重置为HEAD^
状态)
这是answer you mention建议的内容。
但在此之后,您需要确保在合并过程中您的同事会再次进行更改。
看看theirs
"merge strategy option"是否效果更好。
git checkout yourBranch
git merge -X theirs theirBranch
但是,我怀疑它只能用于解决冲突(文件中的并发修改) 如果您进行了更新的更改,那么这些更改仍将在合并的HEAD中。
如果是这样,请尝试按照this answer中的配方强制合并到您的分支,然后将yourBranch
重置为theirBranch
,然后再将HEAD移至合并的提交之前。
那么最终结果应该与你所追求的一样。