正如 Vonc 所说,当你运行时git pull origin trunk
,git 首先运行一个 fetch( git fetch origin trunk
),它从远程“origin”获取分支“trunk”,并将其存储在 FETCH_HEAD 中。
请注意,这可能是意外行为,并且是不git-pull
使用and的“4 参数”形式的一个很好的理由git-fetch
。
无论如何,在运行 fetch 之后,git 运行git merge FETCH_HEAD
. 这将获取新获取的远程分支,并将其合并到本地分支中。您刚刚将您的本地分支和来自 'origin' 的 'trunk' 分支合并在一起。
如果您无法对此进行可视化,请尝试运行gitk
或git log --graph --oneline --decorate
以图形方式查看历史记录。您应该能够看到两条历史记录(您的和远程的)合并在一起。git log
,没有--graph
or--first-parent
等,将显示从当前分支可到达的所有提交,但不会区分它们实际位于哪个分支。
不出所料,当你运行git 时git push
,git 会获取这个合并的历史,并推送它。
您可能打算运行git fetch
或git fetch origin
而不是git pull origin trunk
. 这将从“origin”获取更新的分支,并将它们存储在您的远程跟踪分支中(例如“origin/trunk”)。然后,您可以使用例如检查它git log origin/trunk
。如果您想将 'origin/trunk' 合并到您的本地分支中,请使用git merge origin/trunk
.