我在一个私人项目上与朋友合作,他从我那里维护了一个单独的GitHub存储库。我被标记为他的存储库的贡献者。我在他之前做了一些改变,他们不需要他的一个提交 - 我们不需要代码。我已将更改提交到我的存储库,但我还没有将它们推送到他的存储库中。
我计划提取他的更改以便与我合并,但是这个问题的唯一解决方案是我立即删除了所涉及的每一行代码?我希望Git以另一种方式解决这个问题,因为这种做法可能会让他感到不安。
答案 0 :(得分:1)
如果你git pull = git fetch + git Merge Fetch_head。假设你们在同一个分支上工作,他所做的任何更改都会与你的更改合并。如果您在同一个地方进行了更改,则会发生冲突,您可以通过删除其代码来解决冲突。如果不是,你们可以创建一个新的分支,在他添加不必要的提交之前使用git branch <branch-name> <commit id>
,然后将你的代码合并到这个分支上并继续在那里工作。
答案 1 :(得分:1)
但这是解决这个问题的唯一方法,我会立即删除有问题的每一行代码吗?
假设你们都从提交A开始工作。你在他之前做了提交B.
我希望Git以另一种方式解决这个问题,因为这种做法可能会让他感到不安。
这不是Git可以解决的问题。如果你的朋友无法处理他的代码被删除,那么人类已知的技术无法提供令人满意的解决方案。
答案 2 :(得分:1)
有两件事可以帮助你。如果您朋友的更改位于分支上,并且您想合并分支以使其更改在图表中保持活动状态,则可以
git merge -s ours his-branch
如果他的提交是主人,已经被推,只需要离开,你可以
git revert his-commit
...进行一次新的提交,取消他的更改。在任何一种情况下,您合并您的更改(显式地使用第一种情况的命令,或者在第二种情况下使用额外的git merge
),然后推送结果。