我经常注意到在第一次提交(和推送)之后发生了几行更改的冲突问题。谁能告诉我为什么以及如何避免这种情况?
我提交并推送新功能
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缓存推送?
答案 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客户在这里发出警告,但几乎在所有情况下都会遇到麻烦。