我从GitHub克隆了一个仓库,并使用以下命令创建了几个工作树:
git worktree add -path- -branch-
当我从主分支
master
拉取更改时,这些工作树是否也会更新?我从GitHub克隆了一个仓库,并使用以下命令创建了几个工作树:
git worktree add -path- -branch-
master
拉取更改时,这些工作树是否也会更新?git fetch
。这将更新数据库(通过向本地repo添加来自远程的对象,如果它们在本地repo中不存在)并可能更新参考。通常,它会更新特定于该远程的远程跟踪参考。它可以被告知直接更新本地分支,但这很少是一个好主意。无论如何,fetch
不执行合并;它要么让本地分支保持不变,要么将它们更新为与远程匹配,并覆盖任何本地更改。再次强调,默认设置是让本地分支保持不变。
已经获取了内容后,可以进入工作区,在其中检出特定的本地分支,并将相应的远程跟踪参考merge
到该分支中(或执行具有类似方法的rebase操作)。
git pull
是进行fetch操作之后立即进行合并的简写。所以,如果你在一个工作区中检出了一个特定的分支,你可以执行git pull
,这将启动该分支的合并(使用该工作区及其暂存区)。
但如果您正在寻找一个可以启动所有工作区合并的单个命令(这听起来有点像您所问的),您可能需要编写类似脚本的东西。(老实说,我不建议这么做。)
只有当前工作树(您正在从中拉取的地方)的工作树[1]可以通过git pull
进行更改。如果git pull
尝试执行合并,遇到冲突,然后将混乱留在您的工作树上供您处理,则这将是相关的。
每个工作树的引用都会轻松更新,因为所有工作树共享同一个存储库(通常是.git
目录;所有“链接”的工作树只是指向您的“主”工作树中的.git
目录)。
man gitglossary
:[2]实际检出文件的树。工作树通常包含
HEAD
提交的树的内容,以及您尚未提交的任何本地更改。
git version 2.40.0