如何与远程存储库合并,并撤消它添加的内容?

时间:2015-08-11 20:22:37

标签: git github

我在一个私人项目上与朋友合作,他从我那里维护了一个单独的GitHub存储库。我被标记为他的存储库的贡献者。我在他之前做了一些改变,他们不需要他的一个提交 - 我们不需要代码。我已将更改提交到我的存储库,但我还没有将它们推送到他的存储库中。

我计划提取他的更改以便与我合并,但是这个问题的唯一解决方案是我立即删除了所涉及的每一行代码?我希望Git以另一种方式解决这个问题,因为这种做法可能会让他感到不安。

3 个答案:

答案 0 :(得分:1)

如果你git pull = git fetch + git Merge Fetch_head。假设你们在同一个分支上工作,他所做的任何更改都会与你的更改合并。如果您在同一个地方进行了更改,则会发生冲突,您可以通过删除其代码来解决冲突。如果不是,你们可以创建一个新的分支,在他添加不必要的提交之前使用git branch <branch-name> <commit id>,然后将你的代码合并到这个分支上并继续在那里工作。

答案 1 :(得分:1)

  

但这是解决这个问题的唯一方法,我会立即删除有问题的每一行代码吗?

假设你们都从提交A开始工作。你在他之前做了提交B.

  1. 如果不必要的代码已经存在于A树中,可能B会删除此代码,因此合并就足够了。
  2. 如果他在单独的提交C中提交了不必要的代码并且您没有C,则只需丢弃C或合并并还原C.
  3.   

    我希望Git以另一种方式解决这个问题,因为这种做法可能会让他感到不安。

    这不是Git可以解决的问题。如果你的朋友无法处理他的代码被删除,那么人类已知的技术无法提供令人满意的解决方案。

答案 2 :(得分:1)

有两件事可以帮助你。如果您朋友的更改位于分支上,并且您想合并分支以使其更改在图表中保持活动状态,则可以

git merge -s ours his-branch

如果他的提交是主人,已经被推,只需要离开,你可以

git revert his-commit

...进行一次新的提交,取消他的更改。在任何一种情况下,您合并您的更改(显式地使用第一种情况的命令,或者在第二种情况下使用额外的git merge),然后推送结果。