git eclipse解决冲突导致重新发布未修改的更改

时间:2011-09-19 20:17:44

标签: git github egit

我已经开始使用git(在github上)并有一个新手工作流问题。如果描述很冗长,请事先道歉但我想描述我正在思考的事情,因为我正在经历这个过程,所以你可以纠正我。我也在使用Eclipse EGIT插件,我意识到它永远不会像使用命令行一样好,但只是忍受我。

我们的项目设立使我的合作伙伴拥有一个主回购,而我是私人合作者。每当我推,我直接推他的回购。一般来说,只要没有冲突,我们就可以提交,拉动和推动。只要有冲突就会出现问题。这是一个例子:

  1. 我和我的伙伴开始把我的最新代码拉进去 各自的工作回购。没有问题。
  2. 我修改了FileA和FileB,添加,提交和推送它们。没有probs。
  3. 与此同时,我的合作伙伴修改了FileA,然后尝试拉取以获取我的更新。
  4. Eclipse 给他一个错误:CheckOut与FileA冲突
  5. 我们冒险进入git bash land并在执行git pull时获得更有用的信息:

    错误:您的本地更改...由merge编写:FileA。请在合并之前提交更改或存储更改。

  6. 好的,公平的。他提交了他的更改(FileA),并尝试再次(通过Eclipse)。

  7. 他收到一条消息,指出FileA冲突。好,这是预料之中的。他现在继续解决FileA上的冲突,并在FileA上添加一个git来表明它已经解决了。

  8. 他现在准备投入并推动。他希望推动他对FileA的合并更改。但是现在,以下是我没有得到的部分。即使他根本没有修改FileB,Eclipse默认将其确定为其提交的一部分,因此他需要手动取消选中它以避免重新发送FileB,从而避免推送FileB(因为没有对其进行任何更改)。但即使这样做也会导致FileB被推向上游。结果,他不仅最终推动了FileA,而且推动了FileB。

  9. 我想知道我们是否以正确的方式做事,既然我们可能没有,建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

也许在第6点。你的colegue做了一个提交,其中包含所有他所做的更改,直到尝试拉?如果他经常使用commit -a之类的东西,那可能会发生。它也可能是Eclipse的默认行为,只是将所有文件的所有更改添加到提交中。然后,这些更改可能包括文件A和B.

为确保只提交对FileA的更改,应使用以下内容:

git add FileA
git commit         # Notice, no '-a' option

不确定Eclipse是否允许对哪些更改以及哪些更改未提交进行细粒度控制。