我使用git-svn在两台机器(Mac和Windows)上工作。我的远程仓库是一个svn。我使用Mac作为主仓库,Windows作为奴隶。因此,所有git-svn操作都在Mac上完成,而Windows机器只对Mac进行“git pull”或“git push”。
我的工作流程如下所示,经常让我陷入需要解决数百个冲突的境地:
在第5步,冲突就来了!! 我曾经花了3个小时来完成每一次冲突,使用“git mergetool”,“git rebase --continue”,“git rebase - -skip“和”git rebase --abort“工作流程。如果我很幸运,我可以弄清楚所有这些;但有时候,其中有太多的方式,更糟,重定位在遍历历史时反复经历同一组冲突(git只知道变化,而不知道文件);最终我感到困惑,误解了其中一些,并导致更大的噩梦。我学到的一些脚本可以帮助我做一些像“git accept-ours”或“git accept-theirs”这样的东西,但这对于涉及已删除文件的历史记录来说效果不好,我仍然需要反复接受。
这真是一场噩梦,我真的开始犹豫使用分支和合并工作流程。问题仍然是我不确切地知道为什么会有这么多冲突。但是,如果有推荐的工作流程或实践可以帮助我防止此类冲突或轻松批量解决,那就太棒了。
谢谢你的帮助!
答案 0 :(得分:1)
我终于找到了问题并试图回答我自己的问题:
在我的全局.gitconfig中,我禁用了自动合并
mergeoptions = --no-commit
但是在每次“git pull”之后,我实际上并没有在我的Windows奴隶上提交合并,后来又向上游推送了我的Mac主机。这就是所有冲突的来源。
我认为我从Web获得的关于rebase / merge工作流程的一般建议是: