对于我们公司的一个代码库,命令
当使用
在 pull 输出之前:
git pull
的行为变得像 git fetch
。它会拉取所有更新,但不会将更改合并到分支中。我必须运行 git merge origin/master
来将它们合并。
是什么原因导致这种情况?我以前从未见过这种行为。它似乎没有影响代码库的其他用户,只有我受到影响。对我使用的其他代码库也没有影响。我的 git 版本是 git version 2.24.3 (Apple Git-128)
,该代码库托管在 GitHub 上,但我怀疑这并不重要。
与此相关的请求详细信息的输出:git status
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
git pull
命令执行如下:
remote: Enumerating objects: 3333, done.
remote: Counting objects: 100% (1623/1623), done.
remote: Compressing objects: 100% (128/128), done.
remote: Total 3333 (delta 1517), reused 1554 (delta 1488), pack-reused 1710
Receiving objects: 100% (3333/3333), 2.07 MiB | 15.83 MiB/s, done.
Resolving deltas: 100% (2113/2113), completed with 355 local objects.
From github.com:repo/url
6c1fab37s6b7..7acd6e422762 master -> origin/master
git pull
后的 git status
:
$ git status
On branch master
Your branch is behind 'origin/master' by 94 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working tree clean
附带一份git branch -vv
的输出结果:
$ git branch -vv
* master 6c32ab37afb7 [origin/master: behind 94] commit message
当使用
GIT_TRACE=1
时,可以获得以下额外信息:在 pull 输出之前:
09:46:36.847574 exec-cmd.c:238 trace: resolved executable dir: /Library/Developer/CommandLineTools/usr/bin
09:46:36.848324 git.c:439 trace: built-in: git pull
09:46:36.865183 run-command.c:663 trace: run_command: git fetch --update-head-ok
09:46:36.870423 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Library/Developer/CommandLineTools/usr/libexec/git-core/git
09:46:36.871061 exec-cmd.c:238 trace: resolved executable dir: /Library/Developer/CommandLineTools/usr/libexec/git-core
09:46:36.871707 git.c:439 trace: built-in: git fetch --update-head-ok
09:46:36.890545 run-command.c:663 trace: run_command: unset GIT_PREFIX; ssh git@github.com 'git-upload-pack '\''org/repo-name.git'\'''
remote: Enumerating objects: 3232, done.
remote: Counting objects: 100% (1480/1480), done.
remote: Compressing objects: 100% (229/229), done.
09:46:41.239506 run-command.c:663 trace: run_command: git index-pack --stdin -v --fix-thin '--keep=fetch-pack 94201 on USERNAME' --pack_header=2,3232
09:46:41.252417 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Library/Developer/CommandLineTools/usr/libexec/git-core/git
09:46:41.254014 exec-cmd.c:238 trace: resolved executable dir: /Library/Developer/CommandLineTools/usr/libexec/git-core
09:46:41.256304 git.c:439 trace: built-in: git index-pack --stdin -v --fix-thin '--keep=fetch-pack 94201 on USERNAME' --pack_header=2,3232
remote: Total 3232 (delta 1333), reused 1323 (delta 1243), pack-reused 1752
Receiving objects: 100% (3232/3232), 4.03 MiB | 19.39 MiB/s, done.
Resolving deltas: 100% (1972/1972), completed with 268 local objects.
09:46:42.117286 run-command.c:663 trace: run_command: git rev-list --objects --stdin --not --all --quiet --alternate-refs
09:46:42.126065 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Library/Developer/CommandLineTools/usr/libexec/git-core/git
09:46:42.126771 exec-cmd.c:238 trace: resolved executable dir: /Library/Developer/CommandLineTools/usr/libexec/git-core
09:46:42.127570 git.c:439 trace: built-in: git rev-list --objects --stdin --not --all --quiet --alternate-refs
拉取输出后:
09:46:43.640301 run-command.c:663 trace: run_command: git gc --auto
09:46:43.647411 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Library/Developer/CommandLineTools/usr/libexec/git-core/git
09:46:43.648461 exec-cmd.c:238 trace: resolved executable dir: /Library/Developer/CommandLineTools/usr/libexec/git-core
09:46:43.649426 git.c:439 trace: built-in: git gc --auto
git pull --rebase
和git fetch
后跟着git merge origin/master
不是一样的。 - axiacgit pull
和git fetch
的文档页面。 - axiac--rebase
,问题都是一样的,与此无关。运行git pull
也不会合并更改,仍然需要git merge origin/master
。我已经编辑了问题。链接到手册显然对回答没有帮助,并且充其量是居高临下的。如果您认为答案在其中,请引用或链接到文档的特定部分。不,除了普通列出的新分支和提交之外,没有错误或消息。 - temporary_user_namegit pull
并没有将更改合并到分支中...你认为为什么会这样?有哪些证据支持这一点?从我所看到的输出(6c1fab37s6b7..7acd6e422762 master
)来看,合并是成功的。 - Code-Apprenticegit pull
之后git status
的输出部分了吗?"Your branch is behind 'origin/master' by 94 commits" 的哪个部分告诉你合并成功了?很抱歉,我可能误解了你的意思。 - temporary_user_name