我喜欢git worktree,但总是遇到本地工作目录和远程分支不一样的情况,尽管git pull说"已经更新了"。
这是我做的一个小MRE:
- 在GitLab Web界面中创建了远程存储库。
- 使用
git clone --bare <url>
克隆了它 - 使用
git worktree add main
在本地添加了main
分支 - 使用
git worktree add new-branch
、cd
添加了一个新分支,并执行了git push
。 - 使用GitLab的Web界面,我直接在
main
分支中添加了一个文件main-branch-change-1
,然后在新的main
上重定了new-branch
的基,然后在new-branch
中添加了第二个文件feature-branch-change-1
。 - 本地
new-branch
上的git pull
显示"Already up to date",而提交哈希和git log
清楚地显示本地不是最新的。文件main-branch-change-1
存在,但feature-branch-change-1
不存在。 - 空存储库中的
git fetch --all
后跟new-branch
中的git pull
不会改变任何内容。 main
分支中的git pull
后跟new-branch
分支中的git pull
不会改变任何内容。
要同步这些更改,我必须执行什么操作?
部分截图:
GitLab图形
远程内容new-branch
局部
1条答案
按热度按时间hc8w905p1#
使用
git worktree add main
在本地添加主分支这是你的主要问题,当你运行
git worktree add whatever
时,git默认会创建一个新的分支whatever
,并把它附加到新工作树的头上。* 这个新分支不会连接到任何远程节点上的任何分支,包括origin
,即使碰巧有同名的分支。如果您希望本地
main
分支跟踪origin/main
,可以(并且在您的特定情况下必须)使用以下命令:但是你对工作树(和裸仓库)的使用似乎有点奇怪,我强烈建议你在获得更多经验之前不要使用工作树。工作树非常适合使用git test,也可以作为git stash(我从来没有用过)的替代品1,但不能作为切换分支的替代品。
1我最近创建了一个临时的工作树,当我需要做其他事情时,我有一个交互式的重新定基,冲突正在进行,我不想放弃。