问题标签 [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.
git - 使用一个命令向所有 git 分支添加和提交更改
我的计算机中有一个 git 存储库,该存储库中的一个目录是一个 git 工作树,其中包含文档的 html 构建。所以树是这样的
当我在文档中工作时,两个分支 (dev
和gh-pages
) 都会更新,因为我更改了目录中的文件docs
,然后 sphinx 将 html 编译到html
目录中。
但是,当我完成该过程后,我必须git add . && git commit
在主分支和gh-pages
分支中手动执行,然后将所有更改推送到 git。
这不是很麻烦,但如果我可以为所有分支发出一个命令,那将很方便。我知道git push
可以“默认”推送所有分支(这就是我所做的),但我发现没有办法这样做来添加和提交(例如;只是为了或澄清)
或类似的东西。有没有办法做到这一点?
干杯!
git - 如何使用 git-worktree 提交不在 master 分支中
例如,我有一个名为“Name”的存储库。并且在存储库中有两个分支:
- 掌握
- gh页面
如果我对文件夹“名称”进行了更改,我得到提交的命令:
使用此命令,我得到两个目录:
- 带有来自“master”分支的文件的“名称”
- 带有来自“gh-pages”分支的文件的“Name-gh-pages”
如果我对文件夹“名称”进行了更改,我得到提交的命令:
如果我对文件夹“Name-gh-pages”进行更改,我该如何提交?命令“混帐添加。” 仅在文件夹“名称”中看到更改。在这种情况下,命令“git checkout gh-pages”不起作用。
更新。jibe 建议的解决方案。
我们现在有两个工作目录。
我们已经致力于“master”分支。
我们致力于“gh-pages”分支。
git - Git 克隆 - 创建一个裸克隆但具有远程跟踪分支(用于工作树“主”存储库)
为了与工作树一起使用,我正在尝试制作一个裸克隆,但远程分支映射到远程跟踪分支。
我正在尝试建立一个通用的工作树工作流程。我的仓库真的很大,所以克隆它很昂贵。即使使用硬链接,当 repos 被gc
编辑时,它们往往会随着时间的推移而分叉并占用额外的空间,并且一个 repo 中的 fetch 对另一个 repo 没有帮助,因此在工作树中工作似乎是显而易见的事情。(你必须相信我。)
工作树需要一个实际保存对象的“主”存储库。显然,这个克隆不能被删除,所以我想把它放在像/var/cache/git/reponame.wt.git
. (我正在为我和我的同事制定一个通用的解决方案,所以我必须让它相当万无一失。)
我可以使它成为一个常规克隆,但是它必须有一个分支被检出,然后该分支不能被任何其他工作树检出,所以我必须制作一个wt_dummy
可能会混淆人们的虚拟分支(例如)。我真正想做的是将主要回购作为bare
回购。
问题是git clone --bare
不会创建远程跟踪分支。因此,要制作“裸仓库但带有远程跟踪分支”,我已经开始走这条路
但是a)它似乎太长太复杂了,并且b)git存储库仍然认为它已经master
签出。
有没有更好的方法来制作这个“带遥控器的裸克隆”?
(一般来说,也许有更好的方法来设置工作树,但我知道这处于堆栈溢出的“特定编程解决方案”范围的毛茸茸的边缘。)
git - 为什么两个 git worktree 不能检出同一个分支?
使用单独的git-worktree,为什么我不能签出与主工作副本相同的分支?如果我尝试,我会收到错误:
我可以看到,如果我从一个工作树签入,另一个工作树最终会处于分离的 HEAD 状态,但这有那么糟糕吗,为什么我什至不能签出同一个分支?
git - 为什么 git worktree add 会创建一个分支,我可以删除它吗?
我曾经git worktree add
创建一个新的工作树。我注意到它在 repo 中创建了一个与工作树同名的新分支。这个分支是干什么用的?
我在第二个工作树中检查了另一个预先存在的分支。我可以自由删除git worktree add
创建的分支吗?
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 中得到修复。
git - '' 已在 git worktrees 中的 '' 签出
我开始使用 git worktrees。它似乎可以工作,但是在尝试签出克隆工作树中的分支时出现此错误:
如何在不删除.git/worktrees
目录的情况下解决这个问题?
git - 如何从已删除的 git 工作树中恢复分阶段的更改?
我不小心删除了一个工作树,其中包含分阶段但未提交的更改!但git worktree list
仍显示工作树(即尚未修剪)
说,
但是因为我刚跑rm -rf worktreeexample/
,所以那里什么都没有 $ ls worktreeexample/
git - Git:存储的替代品
我正在为我的项目使用Git 扩展。我很喜欢。有一个问题一直困扰着我,我很确定 Git 扩展中有一个技巧。这是场景:
- 从 master 分支,我创建了 3 个分支
A
,B
并且C
. - 开始在分支工作
A
,做了一些改变 - 切换到分支
B
,我仍然看到更改,A
因为它们没有提交- 我不想提交更改,
A
因为我还没有完成,我不希望这个提交出现在提交历史中 - 我不想存储更改,
A
因为如果我进行更改B
并切换到C
,我也必须存储更改B
==> 更改A
已消失:被新存储覆盖。
- 我不想提交更改,
我可以在不同的分支中做很多藏匿处吗?
如果没有,有什么替代方案stash
?
是我唯一commit
的revert
commit
选择吗?
git - 各种 git 状态,对 git 状态(头部、索引、工作状态)的底层理解
想象一下,你有一棵树和一个文件。假设这个文件只有两种可能的状态a
, 和b
。如果它丢失或不存在,ø
. 我正在尝试建立一个表格来了解所有可能的git-status
es。我相信我所说的是有道理的,但是,我已经标记了**
有问题的领域:
对于任何一个,*, ø, *
我几乎觉得它取决于父树,以及它是否在索引中......例如,a, ø, ø
就好像你已经从工作树中删除了 blob 以及索引。但是,从索引中删除是什么样的?是否只是将父树添加到暂存区域而删除了树条目?如果是这种情况,那么在索引中没有针对 blob 本身的条目是有道理的。
对于 index = head, ( a,a,a
, a,a,b
, a,a,ø
) 的任何记录,我假设这种状态实际上不会发生,除非您正在使用管道命令。
如果您在我的表格中看到错误,和/或对此有所了解,那就太好了!提前致谢。