问题标签 [git-worktree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
115 浏览

git - 我可以为空的 Git 存储库创建工作树吗?

我有一个空的 Git 存储库(即它还没有提交)。有没有办法为此仓库使用git worktree add命令(带--no-checkout选项)创建工作树?我的意思是指示 Git 不要将新创建的工作树与任何相关联HEAD

0 投票
2 回答
149 浏览

git - 一个 git worktree 是否支持多个分支?

根据文档,每个都git worktree提供一个branchdev/ feature/prod等等),但对我来说听起来也不合理,每个分支都有自己的worktree,因为它会创建许多文件夹,并且在某些时候可能会令人困惑。

一个git worktree可以支持多个branches吗?例如所有属于的分支,feature然后在当前相关的内容之间切换?这是正确的方法吗?

0 投票
1 回答
59 浏览

git - 如何合并来自另一个工作树的分支

我有 2 个银行的仓库:master 和 b1。

目前,结帐分支是 master(在主工作树中)。

我创建了一个工作树(称为 b1_worktree)并默认签出 b1 分支。

所以现在我可以在不使用“checkout”命令的情况下在两个分支上工作。

这是我的问题:

  • 更改 b1_worktree 中分支 b1 中的代码后,如何将 b1 从 b1_worktree 合并到主工作树中的 master 分支?
  • 是否可以将 b1 内容从 b1_worktree 更新到主工作树?
0 投票
1 回答
103 浏览

git - git diff --cached:未知选项“缓存”

在 Docker 容器内的 Git 工作树目录中,error: unknown option `cached'运行git diff --cached.

Git 的版本是 2.32.0,它明确指出它应该存在。

当切换回主存储库并将其挂载到容器中时,该命令可以正常工作。

这里发生了什么?

0 投票
0 回答
22 浏览

git - How to split changes in multiple linked working trees?

On my local repo I have the main working tree full of many unrelated changes.

I want to split my messy index into many distinct tidy linked worktrees, so I can isolate changes by concern and handle them without getting insane or rely on memory.

What's the minimal amount of steps to redistribute chunks among different worktrees?


Example

I would

  • use git stash save Concern001 -p, to interactively select the changes I want to put into Concern001
  • to then git stash apply Concern001 into my worktree
    • (created via git worktree add worktree/Concern001).\

But this approach fails in the case I want to move untracked changes to another worktree. Trying git stash save Concern001 -p -u

Can't use --patch and --include-untracked or --all at the same time

Moreover, the presence of the worktree/ directory among the untracked files makes the stashing error prone; although I can fix this adding /worktree to .gitignore.

For now I tried:

  • git add -p to select the changes to isolate
  • git commit -m 'Concern001' => commit-SHA
  • cd worktree/Concern001
  • git cherry-pick <commit-SHA>
  • git reset HEAD^ to get again the changes in the worktree index
  • cd ../.. (back to main worktree)
  • git reset HEAD^..... but this will restore the changes I just moved away; and if I instead use git reset HEAD^ --hard then I would loose all the other temporary changes from the index.

This approach look verbose, cumbersome and error prone.


Is there a sequence of git commands to select specific changes and move them between worktrees, without having to do too many intermediate operations❓</h3>

Ideally I'd use git stash but doesn't cover all the use cases.

0 投票
1 回答
48 浏览

git - git main 和链接工作树之间的区别?

git中的“主工作树”和“链接工作树”有什么区别吗?如果有,有什么区别?


Git 有一个名为git-worktree的子命令,用于在一个存储库中管理多个工作树。使用此命令克隆时:

该目录main将包含“主工作树”。之后,可以使用创建一个新的工作树git worktree add temptemp现在是“链接工作树”。

有什么方法可以区分这两种类型吗?一件事应该是main不能以与temp( git worktree remove temp) 相同的方式删除。但是还有其他可能/不可能与一种工作树而不是另一种有关的事情吗?

0 投票
1 回答
38 浏览

git - 在 git 工作树中查找顶级目录时,为什么我会得到“致命:不是 git 存储库...”?

我目前正在修补 git worktrees,突然遇到了一个问题。我尝试了这里描述的有和没有裸克隆的两种方法:

https://infrequently.org/2021/07/worktrees-step-by-step/https://svij.org/blog/2017/04/14/mit-git-worktree-mehrere-arbeitsverzeichnisse-managen/ (格)

我当前的目录设置如下所示:

当我输入 egworktree-mastergit rev-parse --show-toplevel使用 git version运行时2.17.1,它正确地将我指向工作树根目录。

当我现在在基于ubuntu:20.04运行版本2.25.1的 git 的 Docker 容器中执行相同操作时,我得到了

这是这个特定版本的问题吗?或者 git 是否使用了一些在 Docker 容器中不起作用的奇怪魔法?

是否有解决方法来获取工作树顶层目录?

0 投票
0 回答
57 浏览

docker - 如何将 Docker 与 git worktree 一起使用

我最近开始使用git worktree它,它很棒。但是,我不确定如何使它与 Docker 一起使用。这是我的流程:

  1. repo-a有一个 dockerFile 来构建一个本地容器。

  2. 我创建一个像git worktree add branch-a这样的新工作树将创建一个名为branch-abranch的文件夹branch-a

  3. 我收到了要审查的 PR,我需要切换到branch-b. 所以我回到我的--bare clone回购,我这样做了git worktree add branch-b。并 cd 进入该文件夹。

  4. 我的 docker 容器没有捕获新文件,因为它仍然链接到文件branch-a,如果我这样做docker-compose up -dbranch-b它会抛出一个错误,说The container name "/<name here>" is already in use by container "31344e3448df72e032c42a96d078ea57c11a75023d197e9ab0683e7c773f54e4"

如何让我的 docker 容器监听不同文件夹的更改?

谢谢

0 投票
1 回答
76 浏览

python-3.x - 如何将git命令输出打印到python数据框

我正在使用以下 git 命令输出: git worktree list转换为流光表对象。例如:

我想只取有效的(a 到 c)并将它们打印到 python 数据框。例如 例子

工作树名称在哪里F:/demo/a,它的签出分支在哪里[dev/arielma/a]

0 投票
1 回答
397 浏览

git - 如何在 VS-code 中使用 Git 工作树?

我很难理解的东西:

如何在 VS-code 中使用 git 工作树?

我显然不能让它工作。

我试过使用命令行......但是当我尝试结帐到所需的分支时,它告诉我:

错误:命令失败:C:\Program Files\Git\cmd\git.exe -c core.longpaths=true -c core.quotepath=false -c color.ui=false checkout sequences --

致命的:“序列”已经在

当我在命令行中更改文件夹时,就像在这么多视频上(在 vs-code 之外)......它保持相同的分支签出。

有人可以帮助我或将我指向一个资源/博客,说明如何继续或如何配置以使 git worktree 与 vs-code 一起工作?