Git 冲突提交

3
我在一个多用户的git环境中工作。我的工作流程是在分支上工作,然后从远程拉取到本地主干,接着将我的工作分支进行变基,将该分支与本地主干合并,最后将更改推送到远程仓库。
在最近的拉取中,有6个新的提交,其中一个需要优先于我的代码。
如果我进行变基,我需要解决几个冲突,然后用自己的代码替换现有的对象。虽然我可以做到这一点,但这似乎很繁琐,并且容易出问题。
有没有更好的方法来处理这个问题?
2个回答

3
您可以在主分支中使用git revert撤销错误的提交,然后将其重新基于您的主题分支进行变基:
git checkout master
git revert <sha1>
git rebase master topic

小问题:你可以将最后两个git命令简化为git rebase master topic - Frerich Raabe
谢谢Gabe和French,我认为这正是我一直在寻找但无法理解的东西。看起来非常清晰,也正是我想要做的事情。 - Joe Cairns

0

我不确定是否有更好的方法。如果两个提交冲突,那么你必须告诉git如何解决它。

你的问题似乎比这还要大一点。听起来像是你做了“支持对象B的框架A”,而主线已经做了“支持对象D的框架C”,你想放弃C&D,选择A&B。是这样吗?

如果是这样,那么你仍然面临同样的问题:你需要决定告诉git什么。如果新代码取代了旧代码,那么git就无法知道,除非你告诉它。

最终,你将不得不重新基于或合并,两者都会有相同的一组冲突。


是的,那基本上就是这样了。我希望能够找到有问题的提交,合并我的更改,然后再拉取剩下的内容,而不是像现在这样一步步地解决问题。 - Joe Cairns
你可以(有点儿)这样做……你可以逐个拉取提交并在进行修复,而不是进行大规模的拉取和合并。Rebase 会有效地实现这一点,但它会逐个合并你的提交,而不是主线提交。 - Cameron Skinner
阅读了其他答案后,我稍微误解了一点:并不清楚您想要完全放弃一个主线提交。在这种情况下,revert是正确的方法。 - Cameron Skinner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接