问题标签 [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 回答
692 浏览

git - 使用一个命令向所有 git 分支添加和提交更改

我的计算机中有一个 git 存储库,该存储库中的一个目录是一个 git 工作树,其中包含文档的 html 构建。所以树是这样的

当我在文档中工作时,两个分支 (devgh-pages) 都会更新,因为我更改了目录中的文件docs,然后 sphinx 将 html 编译到html目录中。

但是,当我完成该过程后,我必须git add . && git commit在主分支和gh-pages分支中手动执行,然后将所有更改推送到 git。

这不是很麻烦,但如果我可以为所有分支发出一个命令,那将很方便。我知道git push可以“默认”推送所有分支(这就是我所做的),但我发现没有办法这样做来添加和提交(例如;只是为了或澄清)

或类似的东西。有没有办法做到这一点?

干杯!

0 投票
1 回答
219 浏览

git - 如何使用 git-worktree 提交不在 master 分支中

例如,我有一个名为“Name”的存储库。并且在存储库中有两个分支:

  • 掌握
  • gh页面

如果我对文件夹“名称”进行了更改,我得到提交的命令:

使用此命令,我得到两个目录:

  • 带有来自“master”分支的文件的“名称”
  • 带有来自“gh-pages”分支的文件的“Name-gh-pages”

如果我对文件夹“名称”进行了更改,我得到提交的命令:

如果我对文件夹“Name-gh-pages”进行更改,我该如何提交?命令“混帐添加。” 仅在文件夹“名称”中看到更改。在这种情况下,命令“git checkout gh-pages”不起作用。

更新。jibe 建议的解决方案。

我们现在有两个工作目录。

我们已经致力于“master”分支。

我们致力于“gh-pages”分支。

0 投票
1 回答
887 浏览

git - Git 克隆 - 创建一个裸克隆但具有远程跟踪分支(用于工作树“主”存储库)

为了与工作树一起使用,我正在尝试制作一个裸克隆,但远程分支映射到远程跟踪分支。

我正在尝试建立一个通用的工作树工作流程。我的仓库真的很大,所以克隆它很昂贵。即使使用硬链接,当 repos 被gc编辑时,它们往往会随着时间的推移而分叉并占用额外的空间,并且一个 repo 中的 fetch 对另一个 repo 没有帮助,因此在工作树中工作似乎是显而易见的事情。(你必须相信我。)

工作树需要一个实际保存对象的“主”存储库。显然,这个克隆不能被删除,所以我想把它放在像/var/cache/git/reponame.wt.git. (我正在为我和我的同事制定一个通用的解决方案,所以我必须让它相当万无一失。)

可以使它成为一个常规克隆,但是它必须有一个分支被检出,然后该分支不能被任何其他工作树检出,所以我必须制作一个wt_dummy可能会混淆人们的虚拟分支(例如)。我真正想做的是将主要回购作为bare回购。

问题是git clone --bare不会创建远程跟踪分支。因此,要制作“裸仓库但带有远程跟踪分支”,我已经开始走这条路

但是a)它似乎太长太复杂了,并且b)git存储库仍然认为它已经master签出。

有没有更好的方法来制作这个“带遥控器的裸克隆”?

(一般来说,也许有更好的方法来设置工作树,但我知道这处于堆栈溢出的“特定编程解决方案”范围的毛茸茸的边缘。)

0 投票
1 回答
2582 浏览

git - 为什么两个 git worktree 不能检出同一个分支?

使用单独的git-worktree,为什么我不能签出与主工作副本相同的分支?如果我尝试,我会收到错误:

我可以看到,如果我从一个工作树签入,另一个工作树最终会处于分离的 HEAD 状态,但这有那么糟糕吗,为什么我什至不能签出同一个分支?

0 投票
6 回答
19280 浏览

git - 为什么 git worktree add 会创建一个分支,我可以删除它吗?

我曾经git worktree add创建一个新的工作树。我注意到它在 repo 中创建了一个与工作树同名的新分支。这个分支是干什么用的?

我在第二个工作树中检查了另一个预先存在的分支。我可以自由删除git worktree add创建的分支吗?

0 投票
2 回答
1627 浏览

git - Git - 裸仓库不能有主分支的工作树 - 为什么?

我正在开发一些服务器端软件来进行合并。通过使用git worktree,可以检查给定分支的裸仓库并将另一个分支合并到其中。即使存储库很大,它也非常快。

唯一的例外似乎是合并到master. 当我这样做时,git worktree add /tmp/path/to/worktree master我得到一个错误:

致命的:'master' 已经在 '/path/to/bare/repo' 签出

但这显然不是真的,git worktree list给出:

/path/to/bare/repo (裸)

...当然,该路径上没有工作树,只有您期望的裸 repo 文件。

更新:我与 git 维护人员取得了联系,他们同意这可能是一个错误。我从他们那里得到了一个初步的补丁来测试。此外,我还能够在没有补丁 的情况下重现所需的行为。

在这一点上,我不完全确定边界条件或根本原因是什么,并且可能会从 git 中得到修复。

0 投票
7 回答
12881 浏览

git - '' 已在 git worktrees 中的 '' 签出

我开始使用 git worktrees。它似乎可以工作,但是在尝试签出克隆工作树中的分支时出现此错误:

如何在不删除.git/worktrees目录的情况下解决这个问题?

0 投票
1 回答
437 浏览

git - 如何从已删除的 git 工作树中恢复分阶段的更改?

我不小心删除了一个工作树,其中包含分阶段但未提交的更改!但git worktree list仍显示工作树(即尚未修剪)

说,

但是因为我刚跑rm -rf worktreeexample/,所以那里什么都没有 $ ls worktreeexample/

0 投票
2 回答
2317 浏览

git - Git:存储的替代品

我正在为我的项目使用Git 扩展。我很喜欢。有一个问题一直困扰着我,我很确定 Git 扩展中有一个技巧。这是场景:

  • 从 master 分支,我创建了 3 个分支AB并且C.
  • 开始在分支工作A,做了一些改变
  • 切换到分支B,我仍然看到更改,A因为它们没有提交
    • 我不想提交更改,A因为我还没有完成,我不希望这个提交出现在提交历史中
    • 我不想存储更改,A因为如果我进行更改B并切换到C,我也必须存储更改B==> 更改A已消失:被新存储覆盖。

我可以在不同的分支中做很多藏匿处吗?
如果没有,有什么替代方案stash
是我唯一commitrevert commit选择吗?

0 投票
1 回答
68 浏览

git - 各种 git 状态,对 git 状态(头部、索引、工作状态)的底层理解

想象一下,你有一棵树和一个文件。假设这个文件只有两种可能的状态a, 和b。如果它丢失或不存在,ø. 我正在尝试建立一个表格来了解所有可能的git-statuses。我相信我所说的是有道理的,但是,我已经标记了**有问题的领域:

对于任何一个,*, ø, *我几乎觉得它取决于父树,以及它是否在索引中......例如,a, ø, ø就好像你已经从工作树中删除了 blob 以及索引。但是,从索引中删除是什么样的?是否只是将父树添加到暂存区域而删除了树条目?如果是这种情况,那么在索引中没有针对 blob 本身的条目是有道理的。

对于 index = head, ( a,a,a, a,a,b, a,a,ø) 的任何记录,我假设这种状态实际上不会发生,除非您正在使用管道命令。

如果您在我的表格中看到错误,和/或对此有所了解,那就太好了!提前致谢。