我已经开始使用git(在github上)并有一个新手工作流问题。如果描述很冗长,请事先道歉但我想描述我正在思考的事情,因为我正在经历这个过程,所以你可以纠正我。我也在使用Eclipse EGIT插件,我意识到它永远不会像使用命令行一样好,但只是忍受我。
我们的项目设立使我的合作伙伴拥有一个主回购,而我是私人合作者。每当我推,我直接推他的回购。一般来说,只要没有冲突,我们就可以提交,拉动和推动。只要有冲突就会出现问题。这是一个例子:
我们冒险进入git bash land并在执行git pull时获得更有用的信息:
错误:您的本地更改...由merge编写:FileA。请在合并之前提交更改或存储更改。
好的,公平的。他提交了他的更改(FileA),并尝试再次(通过Eclipse)。
他收到一条消息,指出FileA冲突。好,这是预料之中的。他现在继续解决FileA上的冲突,并在FileA上添加一个git来表明它已经解决了。
他现在准备投入并推动。他希望推动他对FileA的合并更改。但是现在,以下是我没有得到的部分。即使他根本没有修改FileB,Eclipse默认将其确定为其提交的一部分,因此他需要手动取消选中它以避免重新发送FileB,从而避免推送FileB(因为没有对其进行任何更改)。但即使这样做也会导致FileB被推向上游。结果,他不仅最终推动了FileA,而且推动了FileB。
我想知道我们是否以正确的方式做事,既然我们可能没有,建议表示赞赏。
答案 0 :(得分:0)
也许在第6点。你的colegue做了一个提交,其中包含所有他所做的更改,直到尝试拉?如果他经常使用commit -a
之类的东西,那可能会发生。它也可能是Eclipse的默认行为,只是将所有文件的所有更改添加到提交中。然后,这些更改可能包括文件A和B.
为确保只提交对FileA的更改,应使用以下内容:
git add FileA
git commit # Notice, no '-a' option
不确定Eclipse是否允许对哪些更改以及哪些更改未提交进行细粒度控制。