Git在修复单行时发生冲突



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

我提交并推送了一个新特性

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客户端在这里发出警告,但在几乎所有情况下,它都会制造麻烦。

最新更新