我经常注意到在第一次提交(和推送)之后更改了几行时出现冲突的问题。谁能告诉我为什么和如何避免这种情况?
我提交并推送了一个新特性
git commit -am 'my new feature'
git push origin development
然后,我注意到一个小错误(一行)
git commit -am 'Bugfix'
但是他说我应该先拉后推。
git pull origin development
结果:在第一次提交后更改的行中存在冲突。这种情况经常发生。它应该没有冲突,因为我的新更改应该优先于旧更改。
不,不是因为其他人提交了相同的文件。功能分支由我维护。我们使用github。
另一件事是:在解决冲突之后,NetBeans强迫我做一个空提交。它没有发现任何文件更改,但它说我必须提交完成。
第一个版本:
$duedate = $dateObject->format('%d.%m.%Y');
和固定版本
$duedate = $dateObject->format('d.m.Y');
也许这与没有正确完成的重置有关?
Edit:如果两次推送之间有很短的时间(最多一分钟),我们会观察到这种行为。也许是由于异步时钟或github缓存推送?
这意味着在你推了同一个分支之后,其他人又推了它。GIT是一个协作工具,所以你应该经常看到这样的用例。
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
并告诉我们两个日志命令
我们找到了答案。当修改一个提交到另一个已经推送到存储库的提交时,就会发生这种情况。只有当提交只在本地存储库上时,才应该使用amend。我不知道为什么git客户端在这里发出警告,但在几乎所有情况下,它都会制造麻烦。