Git 说分支是最新的,而它们不是

Git saying branches are up-to-date while they are not

我已经克隆了一个 bitbucket 存储库,文件已下载到该目录中。而且我发现只下载了 master(main) 分支的文件,存储库中还有两个分支,并且在克隆期间从这两个分支下载了 none 的提交。当我通过 git checkout 切换到这些分支并使用 git pull 终端时,终端显示 already up-to-date 但这些分支中没有任何内容是最新的。由于缺少这些更新,甚至该项目也不是 运行。 git 下载了项目但没有完全下载,我使用了更多命令,例如来自其他 Stack Overflow 问题的 $ git fetch origin other-branch && git merge other-branch 但没有任何变化。我才开始使用 git,而且我只知道很少的命令。谁能简单解释一下如何解决这个问题?我不知道我是否提供了足够的信息来解释。 git branch -avv 给了我这个:

git branch -avv data-export dbc2e32 [origin/data-export] resolve conflicts and merge data-export to master * genset d93228b [origin/genset] Scoreboard with kilowatt hours master 4089eb8 [origin/master] allow 31h meter config remotes/origin/HEAD -> origin/master remotes/origin/data-export dbc2e32 resolve conflicts and merge data-export to master remotes/origin/genset d93228b Scoreboard with kilowatt hours remotes/origin/master 4089eb8 allow 31h meter config

这些分支是在 git clone 期间下载的。
做一个 git branch -avv 你会看到它们:比如 remotes/origin/abranch.
abranch这里只是一个例子)

一个git checkout abranch会自动链接到远程跟踪分支origin/abranch

来自 git checkout:

If <branch> is not found but there does exist a tracking branch in exactly one remote (call it <remote>) with a matching name, treat as equivalent to

$ git checkout -b <branch> --track <remote>/<branch>

这说明:

When I switch to those branches via git checkout and use git pull terminal says already up-to-date.


正如 git branch -av 的输出所示,git checkout data-exportgit checkout genset 已自动将这些本地分支链接到它们的上游分支,远程跟踪分支 origin/data-exportorigin/genset.

它们的 SHA1 相同,这就是为什么 git fetchgit pull 会 return 一个“最新”答案。

一旦在其中一个分支上完成提交,git push 将成功更新远程 origin 存储库上的同一分支。
full discussion here.

再次克隆并且仅设置 git remote add origin 对此有所帮助