git:如何推出而不退房?

时间:2011-12-30 06:40:35

标签: git sync

我有两台计算机A和B,并使用git sync一些文件,例如init.el。 A的回购托管在embuddle托管。 B的回购是本地的。

    A中的
  • init.el被修改并推送。
  • B中的
  • init.el也被修改。

问题是:如何将A的更改合并到B中,并将最终的init.el推送到unfuddle(A),而不扩展B中的所有文件

还是有更好的解决方案?

感谢。

3 个答案:

答案 0 :(得分:2)

因此,如果您不想提取A处修改过的文件,您可以这样做:

B,创建一个新的分支并将其推送到远程服务(如你所说,解开):

cd path/to/init.el
git branch featureModifiedInB
git checkout featureModifiedInB
git push origin featureModifiedInB

A,提取在B创建的分支的更新,管理合并&冲突:

cd path/to/init.el
git pull origin featureModifiedInB  // Or you can do fetch and manually do merging.
git checkout master
git merge featureModifiedInB

// After solve the conflict if it exists.
git push origin master

确保使用B的人无法看到使用A的人编辑的文件。但这会导致问题:pB无法获得有关他/她创建的代码的反馈。但是pA也可以修改featureModifiedInB分支并让它被pB拉(妈妈......有点麻烦......)。

答案 1 :(得分:0)

有几个选择:

  • 如果您不想保留A的更改,git push -f origin master。请注意,强制推送会给从您分支并希望合并的任何人带来一些问题。
  • 软复位到A和B之间的最后一次公共提交,git stash,拉,合并,弹出存储(将存储与当前代码合并),提交和推送。如果有人在共同提交之后从你那里分支出来,他们将无法很容易地合并回来(如果有的话)。

答案 2 :(得分:0)

如果A和B完全不相关(正如你所说“A的文件不知道B的文件,反之亦然”),那么你不需要合并它们。只需按A和B,不要合并它们。

如果您想要更多分离,请创建另一个存储库以容纳B中的工作。使用unfuddle允许/禁止访问。