我正在努力熟悉Git只有SVN之前的经验。我创建了一个空的本地存储库并在那里拉了一个远程存储库。然后我在我的本地存储库中进行更改并提交它。与此同时,另一个用户将不相关的更改推送到同一个远程存储库。
我尝试使用git push
推送我的更改,并在推送之前看到我必须合并的消息。我做git pull
然后git push
。
hithub.com上的日志现在显示两个条目。第一个描述与我在本地提交时输入的内容和我在本地提交的相同更改的描述完全相同。第二个有描述
合并[远程回购的URL]的分支'master'
以及其他用户所做的更改。
理想情况下,我希望它与SVN工作流一样 - 我将“更新”到最新版本,合并其他用户所做的所有更改,然后提交并推送我的更改。
为什么Git会表现出这种行为?如何实现正确的行为?
答案 0 :(得分:3)
您描述的合并提交表示合并更改后的项目状态以及其他用户的更改:
[last common commit]----[other developer's commit]----[merge commit]
\ /
\ /
-------[your commit]--------
如果您不喜欢这种非线性结构,那么您可以使用git pull --rebase
,它会尝试在您的同事之上重新应用您的提交所引入的更改,留下这样的历史:
[last common commit]---[other developer's commit]----[your commit]
就个人而言,我不介意在历史上合并提交,但意见各不相同......