我似乎搞砸了我的 git 存储库,可能是犯了“不要对已推送到公共存储库的提交进行变基”的罪过。
场景是这样的:
- 我在我的 master 分支中跟踪来自上游存储库的更改,我将自己的更改保存在一个名为 devel 的分支中。
- 当上游存储库发生更改时,我将其拉入主分支。
- 然后我结帐开发并
rebase master
对其进行操作,以在主分支之上进行我自己的更改。这会导致冲突,在几次提交时会出现以下错误消息(我在下面仅包括其中一个作为示例):
回退到修补基础和 3 路合并... 自动合并 public/scala/qscript/org/broadinstitute/sting/queue/qscripts/AlignWithBWA.scala CONFLICT(内容):在 public/scala/qscript/org 中合并冲突/broadinstitute/sting/queue/qscripts/AlignWithBWA.scala 未能合并更改。补丁在 0038 失败 添加了对索引文件的检查。
解决此问题后,运行“git rebase --continue”。如果您希望跳过此补丁,请运行“git rebase --skip”。要检查原始分支并停止变基,请运行“git rebase --abort”。
- 然后我使用
git rebase --skip
跳过导致问题的提交,最后得到我想要的代码。
现在,问题是,每次我想变基时,我都必须经历这个过程。我有什么办法可以避免将来发生同样的冲突吗?我的想法是使用push --force origin devel
, 覆盖远程存储库中的历史记录,而不会导致冲突的提交。这是要走的路吗?或者有没有其他方法可以解决这个问题?