问题标签 [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 投票
2 回答
464 浏览

git - 签出新工作树中的孤儿分支

我知道可以像这样创建一个新的孤立分支:

但是,这使用了我当前的工作树,我想完全保持原样。我试过了:

但这似乎也使用了我当前的工作树,而不是我指定的使用--work-tree.

我可以使用第二个克隆,但这似乎不是最佳选择。有什么方法可以使用工作树解决这个问题?

0 投票
2 回答
860 浏览

git - Is there a way to detach and attach git worktrees?

Is there a way to detach and attach git worktrees? Basically, I'd like to have the following workflow:

  1. Create a worktree
  2. Detach work tree after doing some work (adding commits), the directory should not get deleted
  3. checkout worktree branch in my main checkout
  4. do some push/linting/pushing to company server
  5. reattach worktree, and continue working on existing directory if necessary

To explain my reasoning behind my workflow... I have a bunch of settings which are tied into the path of the of the main checkout repository... this includes linting/pre-commit checks and some other workflows (the setup is complicated, and I am unaware of the details)... what I'd ideally like to do is the following switch back and forth from the git worktree to the main checkout location of the repo.... similar to how you would switch between branches.

e.g. I do the following

  1. create worktree branch A in dir A
  2. do some edits
  3. "unlock" worktree A
  4. checkout branch A branch in main checkout directory
  5. do linting/pre-check operation (these do not edit any file in the branch)
  6. checkout master branch in main checkout directory
  7. go back to editing worktree A in dir A
0 投票
1 回答
182 浏览

git - git worktree 复制了什么?

我有一个相当大的 git 存储库 - 21G,当我为本地分支创建一个新的工作树时,我发现创建一个大约 5GB 的新目录需要特别长时间......这正常吗?

  • git worktree 复制了什么?
  • 是否有更优化的工作流程来减少磁盘/结帐开销?
0 投票
0 回答
119 浏览

git - 恢复修剪的工作树

我有多个工作树位于网络驱动器上。这是一般文件系统结构:

  • 回购
    • 主要回购
    • 工作树 1(网络驱动器)
    • 工作树 2(网络驱动器)
    • 工作树 X(网络驱动器)<--想修剪这个
    • 工作树 3(网络驱动器)

在 3 个工作树不可用的短暂网络中断期间,我修剪了我的工作树,只是为了摆脱工作树 X。不幸的是,我所有的工作树都被修剪了,因为 git 找不到这些目录中的任何一个。

现在我可以再次访问我的文件,但是“main repo/.git/worktrees”中的所有 git 元数据都消失了。尝试重新创建修剪过的工作树并git worktree add <PATH> <BRANCH>导致错误消息<PATH> already exists。查看 git 通常存储的信息,我认为手动重新创建这些文件不是一个好主意。谷歌搜索这只给我的问题是人们仍然拥有他们的元数据但删除了源文件,这与我的问题相反。

有没有办法“恢复”修剪过的工作树?IE,重新创建丢失的元数据或允许 git 重新发现其他目录?如果可能的话,我对那些我想尝试恢复的其他目录进行了未暂存/未提交的更改。

编辑: 分阶段的更改保留在分支的源存储库中,因为工作区共享它们的分支。

0 投票
2 回答
2768 浏览

git - 如何在同一个远程分支上有 2 个独立的本地 Git 分支

我有一个主分支,并且正在研究涉及相同文件的 2 个功能。我想让 2 个本地分支指向同一个上游主节点,但有不同的变化。我不想在本地提交更改,以便 IDE 保留格式,如
https://d3nmt5vlzunoa1.cloudfront.net/idea/files/2018/10/k8sCompletion.png中的边框阴影

我一直无法成功使用 git checkout ,因为当我在一个分支中进行更改并切换到另一个分支时,未暂存的更改也可见。我想出的解决方案是在 2 个 repos 中检查我的代码,因为 git worktree 似乎需要 2 个不同的远程分支。但是,这意味着硬盘效率低下。有没有办法实现我想要的?

我希望当我在本地分支之间切换时,即使一个分支的未分级更改也不应该在另一个分支中可见。

0 投票
0 回答
559 浏览

git - Go 和 `git worktree` 命令

我想这个问题也与你如何使用 forks in 有一点关系Go,我认为没有一个好的解决方案。

我正在维护产品的旧版本,所以我经常修复例如分支中的错误v0,然后我当然想挑选修复错误的提交到我的主分支中。

git worktree当您可以访问允许我同时拥有两者masterv0签出时,这种工作流程会好得多。我现在的问题是我的master branch工作树将在例如签出,~/go/src/github.com/<company>/wt1_server而我的v0 branch将在 签出~/go/src/github.com/company/server

现在我的问题是,导入master branch实际上是从导入代码,v0 branch因为所有导入都指向该存储库,而不是相对的。

有没有人找到一个很好的解决方法?

编辑:像https://github.com/rogpeppe/govers这样的工具可以自动更新路径。但这将使得在再次恢复之前无法进行任何提交。一个非常糟糕的修复:)

编辑2:看起来Go模块可能是一个解决方案,因为它是模块的相对路径 - 我不认为我可以同时安装两个具有相同名称的模块。go install .但是当我必须在某些特定的工作树中工作时运行它可能是一个不错的解决方案

0 投票
3 回答
4412 浏览

git - git 裸存储库、工作树和跟踪分支

我正在使用一个代码库,我需要同时在多个分支上工作以用于不同的目的。所以我克隆到一个裸存储库,然后设置一些工作树:

现在branch-3工作树没有设置为跟踪远程树并试图让它这样做,我陷入了可怕的混乱。

让这个工作的正确魔法是什么?

0 投票
1 回答
2948 浏览

git - Git拉,合并更改是工作树?

我从 GitHub 克隆了一个存储库,并创建了一些工作树:

当我从中提取更改时master,这些工作树是否也会更新?

0 投票
2 回答
752 浏览

git - git-worktree 和 git-subtree 有什么区别?

就在我认为 Git 不能再复杂的时候,我才发现了 git worktree。这要么是子树的同义词,要么是我从来不知道的特性。工作树与子树相同还是不同。如果它们不同,它们有何不同,worktree 解决了什么问题?

0 投票
0 回答
90 浏览

git - Git:为什么我的工作树创建后消失了?

我正在尝试为我的 git 存储库设置一个工作树,以便我可以使用 LFS(我正在使用 git 作为 Unreal 项目的版本控制,并且需要一种提交大量文件的方法。)

我一直在尝试按如下方式设置工作树:

命令行说:

然后在几秒钟后完成。我可以看到目录中正在创建的文件夹,甚至被主 git 的内容填充。但是,一旦该过程完成,该文件夹就会消失。

我试图为此找到答案,但我没有遇到任何问题,所以我想我会专门问这个问题。为什么我的工作树总是消失?