修复单行时Git冲突

时间:2016-11-15 13:56:25

标签: git github

我经常注意到在第一次提交(和推送)之后发生了几行更改的冲突问题。谁能告诉我为什么以及如何避免这种情况?

我提交并推送新功能

git commit -am 'my new feature'
git push origin development

然后,我注意到一个小虫子(单行)

git commit -am 'Bugfix'

但是git说我会在推动前拉。

git pull origin development

结果:第一次提交后我更改了一行中的冲突。这经常发生。它应该没有冲突,因为我的新变化应该在旧的变化之前首选。

,这不是因为其他人提交了同一个文件。功能分支由我维护。我们使用github。

另一件事是:在解决冲突之后,NetBeans强迫我做一个空提交。它没有找到任何文件改变,但它说我必须承诺完成。

该行的第一个版本:

$duedate = $dateObject->format('%d.%m.%Y');

固定版

$duedate = $dateObject->format('d.m.Y');

也许它与没有正确完成的rebase有关?

编辑:如果两次推送之间的时间很短(最多一分钟),我们就会发现此行为。也许这是由于异步时钟或github缓存推送?

3 个答案:

答案 0 :(得分:0)

这意味着在你推动它之后,其他人推动了同一个分支。 GIT是一种协作工具,因此您应该经常使用这些用例。

答案 1 :(得分:0)

如果没有其他人推动任何东西,

git push && git pull是幂等的。

因此,git push && git -am 'my commit && git pull永远不会导致合并冲突。您拥有远程服务器所具有的所有相同对象,因此git pull不应引入任何新内容。

因此:有人正在添加新提交或修改提交。

你声称你的同事并没有推动这个分支。所以我怀疑某种自动化。 您是否使用服务器端挂钩?

要获取更多信息,请执行以下操作:

git commit -am "whatever"
git log -1
git push origin development
<change something?
git commit -am "more whatever"
git pull
git log -3

并告诉我们两个日志命令的输出

答案 2 :(得分:0)

我们找到了答案。修改提交到已经推送到存储库的另一个提交时会发生这种情况。仅当提交仅在本地存储库中时,才应使用修改。我不知道为什么git客户在这里发出警告,但几乎在所有情况下都会遇到麻烦。