我的第一个建议是不要git pull。执行 agit fetch后跟 a git merge。
回答你的第零个问题:事实上,你是最新的。您拥有远程存储库的所有提交。因此,没有任何东西可以获取或合并1。
要回答您的第一个问题:
git commit:在您自己的分支上提交您的更改,与远程存储库中发生的事情完全无关。
git fetch origin: 获取远程存储库 ( origin) 的内容,但将它们保存在origin/branch分支下。此时您自己的代码不受影响。
git merge origin/master: 将远程存储库(您刚才获取的)的分支与当前分支合并origin/master。masterorigin
git push origin:将提交和合并推回远程存储库
回答你的第二个问题:
git fetch origin: 更新origin/branch分支。
git diff origin/master:获取当前分支和分支之间的差异origin/master。
1假设这是您的存储库中的提交最初在分支上的样子master:
A -> B -> C -> D -> E
|
|\- master
|
\- origin/master
这是在您克隆存储库之后。现在你说你在本地分支上做了一个新的提交master:
A -> B -> C -> D -> E -> F
| |
| \- master
|
\- origin/master
所以这里有两点需要注意。
假设 remote 中的其他人没有任何活动origin,则没有什么新东西要获取。所以git fetch origin master告诉你没有什么新鲜事。
如果你这样做git merge origin/master,再一次,没有什么可以合并的。origin/master是的前缀。master换句话说,master已经包含了所有的提交origin/master,所以没有什么新的可以合并。
如果您使用fetchandmerge而不是pull,您可以很容易地理解双命令 ( pull) 的哪一部分是导致意外(在您看来)行为的部分。
当然,在 a 之后git push origin master,你会得到:
A -> B -> C -> D -> E -> F
|
|\- master
|
\- origin/master