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-export
或 git checkout genset
已自动将这些本地分支链接到它们的上游分支,远程跟踪分支 origin/data-export
和 origin/genset
.
它们的 SHA1 相同,这就是为什么 git fetch
或 git pull
会 return 一个“最新”答案。
一旦在其中一个分支上完成提交,git push
将成功更新远程 origin
存储库上的同一分支。
见 full discussion here.
再次克隆并且仅设置 git remote add origin
对此有所帮助
我已经克隆了一个 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 usegit pull
terminal says already up-to-date.
正如 git branch -av
的输出所示,git checkout data-export
或 git checkout genset
已自动将这些本地分支链接到它们的上游分支,远程跟踪分支 origin/data-export
和 origin/genset
.
它们的 SHA1 相同,这就是为什么 git fetch
或 git pull
会 return 一个“最新”答案。
一旦在其中一个分支上完成提交,git push
将成功更新远程 origin
存储库上的同一分支。
见 full discussion here.
再次克隆并且仅设置 git remote add origin
对此有所帮助