在工作树中使用Git pull合并更改?

6

我从GitHub克隆了一个仓库,并使用以下命令创建了几个工作树:

git worktree add -path- -branch-

当我从主分支master拉取更改时,这些工作树是否也会更新?
2个回答

6
根据您使用的“pull changes”命令,答案可能是“否”或“不完全相同”。从远程获取更新的最简单方法是git fetch。这将更新数据库(通过向本地repo添加来自远程的对象,如果它们在本地repo中不存在)并可能更新参考。通常,它会更新特定于该远程的远程跟踪参考。它可以被告知直接更新本地分支,但这很少是一个好主意。无论如何,fetch不执行合并;它要么让本地分支保持不变,要么将它们更新为与远程匹配,并覆盖任何本地更改。再次强调,默认设置是让本地分支保持不变。

已经获取了内容后,可以进入工作区,在其中检出特定的本地分支,并将相应的远程跟踪参考merge到该分支中(或执行具有类似方法的rebase操作)。

git pull是进行fetch操作之后立即进行合并的简写。所以,如果你在一个工作区中检出了一个特定的分支,你可以执行git pull,这将启动该分支的合并(使用该工作区及其暂存区)。

但如果您正在寻找一个可以启动所有工作区合并的单个命令(这听起来有点像您所问的),您可能需要编写类似脚本的东西。(老实说,我不建议这么做。)


0

只有当前工作树(您正在从中拉取的地方)的工作树[1]可以通过git pull进行更改。如果git pull尝试执行合并,遇到冲突,然后将混乱留在您的工作树上供您处理,则这将是相关的。

每个工作树的引用都会轻松更新,因为所有工作树共享同一个存储库(通常是.git目录;所有“链接”的工作树只是指向您的“主”工作树中的.git目录)。

注释

  1. 请参阅man gitglossary:[2]

实际检出文件的树。工作树通常包含HEAD提交的树的内容,以及您尚未提交的任何本地更改。

  1. git version 2.40.0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接