使用 git worktree 时 git pull 不会提取最新更改

Dan*_*olm 0 git git-worktree

我喜欢 git worktree,但不断遇到本地工作目录与远程分支不同的情况,即使 git pull 说“已经是最新的”。

这是我做的一点 MRE:

  • 在 GitLab Web 界面中创建了一个远程存储库。
  • 使用克隆它git clone --bare <url>
  • main使用本地添加分支git worktree add main
  • 添加了一个新分支,使用git worktree add new-branch,cd编辑到其中并执行了git push.
  • 使用 GitLab Web 界面,我main-branch-change-1直接在main分支中添加了一个文件,然后new-branch在新的 基础上重新构建main,然后feature-branch-change-1new-branch.
  • git pull在本地new-branch显示“已经是最新的”,而提交哈希并git log清楚地显示本地不是最新的。该文件main-branch-change-1存在,但不存在feature-branch-change-1
  • git fetch --all在裸仓库中紧随其后的git pullinnew-branch没有任何变化。
  • git pullinmain分支后跟git pullinnew-branch没有任何改变。

我需要做什么才能同步这些更改?

一些截图:

亚搏体育appGitLab图 远程图

远程内容new-branch 远程新分支内容

本地 当地国家

Dan*_*olm 5

正如 torek 在评论中指出的那样,该问题是由克隆引起的--bare这是我从这里的“ThePrimeagen”中学到的东西(2 分钟)。但是,这个命令似乎可以解决所有问题,而不是在根目录下有一个完整的(非裸露的)存储库(我认为我不想要这样):

git config --add remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
Run Code Online (Sandbox Code Playgroud)

谢谢塔玛·麦克格林

我仍然需要git branch --set-upstream-to=origin/new-branch new-branchnew-branch文件夹中执行操作,该文件夹之前因“错误:请求的上游分支‘origin/main’不存在”而失败,但在执行上述命令后成功。