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

haskell - 加速 Haskell 堆栈项目编译和 git 分支

我无法更改 GHC 的编译时间,但我可以控制编译内容的环境。我可以用gitstack做什么来最大限度地减少由于(重新)构建而导致的停机时间?

Haskell 堆栈将已编译的依赖项缓存在.stack-work目录中,它非常适合一次处理一件事。但是,我发现自己在分支之间来回切换。我已经完成git checkout了,也许有些.stack-work缓存是可用的。但我更喜欢git worktree在不同的目录中获得一个分支的副本。Worktree 在构建时间上特别困难,因为每个 worktree 目录都有自己的.stack-work,因此必须下载/配置/编译/安装自己的依赖项,而不是使用现有的依赖项。

我一直在阅读有关 Nix 和 Haskell 的文章,但是由于堆栈创建了自己的缓存,因此它忽略了 Nix 已编译和安装的任何内容。从我所读到的,我真的希望 Nix 处理依赖项和堆栈来处理我的个人代码。我从 stackage 中得到了很大的好处stack solver,所以我不想放弃它们。但是当我在运行时看到一屏“取消注册”消息时stack build --only-dependencies && stack ghci,我知道在收到提示之前至少还有 10-15 分钟。

非常感谢!

0 投票
1 回答
126 浏览

git - 工作目录和工作树不一致

我已经阅读了 git 文档一段时间了,并意识到在很多命令中,当涉及到“工作目录”和“工作树”之间的区别时,文档是模棱两可的。我知道这里状态的变化,并且更常用的命令(如 add)也是一致的。但是对我昨天所做的文档的 grep 显示,许多命令仍未相应更新。

这让我想到了下一点,那么每个概念的精确定义是什么,因为它们似乎在配置和存储文档中可以互换使用?工作目录只是一个等待修复的过时错误吗?

上面的状态变化是否是为了解决混淆并表示状态是唯一的每个工作树,因为它的 HEAD?

如果是这种情况,那么 gc 每个工作树也是唯一的,还是在 fsck 之类的“数据库”上完成?与 stash 相同的想法,stash 是否关心它被称为什么工作树?

0 投票
1 回答
1143 浏览

git - git:复制本地不存在的远程分支的工作树

在工作中,我有一个项目,它有两个不同的版本,具有一些共同的基本功能。我利用将这些版本放在单独的文件夹中,每个版本git worktree旁边都有两个长期运行的分支,并且用于通用功能。因此,一个存储库有 3 个文件夹。此外,还有一个远程存储库,所有东西都被推送到那里。mastermaster

在家用电脑上,我有一个文件夹,master并且这个本地存储库与我的工作存储库链接到同一个远程。当我得到分支列表时,它就像:

我想将checkoutversion version-1-a 的全部内容复制到本地文件夹,该文件夹由 git 跟踪,worktree就像在我的工作中一样。这样做git clonegit checkout这样做还是我需要做一些更棘手的事情?

0 投票
4 回答
41204 浏览

git - Git 从现有的远程分支添加工作树

在我的远程存储库中有 3 个分支(主分支和 2 个长期运行的分支):

在我的办公室 PC 上,我worktree为这些northrazavi分支添加了 2 个:

到目前为止一切正常,我也决定在家中处理这个项目,但是在我的家用 PC 中,当我尝试为这两个分支添加工作树时,它给了我一个错误:

我删除了-b不添加新分支的开关,但它也不起作用。

如何worktree从现有分支添加一个不是本地但远程的?

0 投票
0 回答
330 浏览

git - 给定绝对路径从 git-worktree 创建分支

在不指定分支的情况下使用 a 时git worktree add /tmp/foo,将创建一个新的分支 'foo'。这记录在 git -worktree的手册页上:

命令
add <path> [<branch>] 创建<path>并签<branch>入它。[...]。
如果<branch>省略并且既没有使用 -b 也没有使用 -B 也没有使用 --detached ,那么,为方便起见,会自动创建一个基于 HEAD 的新分支,就像指定了 -b $(basename ) 一样

有没有办法修改它以在典型的分支命名模式下创建分支feature/<ticket>-<description>?如果我打电话给git worktree add /tmp/feature/<ticket>-foo,分公司会<ticket>-foofeature/失踪的情况下被调用。

我知道当我使用相对路径时它可以工作。然后从我调用命令的位置创建路径和分支。但这要求我必须使用一个裸存储库。(否则嵌套的工作树是有问题的。)

我能做的最好的工作就是使用git worktree add ../feature/<ticket>-foo. 然后分支将是feature/<ticket>-foo,路径将是../feature/<ticket>-foo。但是能够指定一个绝对目录将非常有用。

0 投票
1 回答
3485 浏览

git - 有没有办法让 VS 代码与 git worktree 一起工作?(带有 WSL 的 Windows)

我喜欢在几个工作树中检查存储库,git worktree以便轻松地同时在不同的分支上工作。然而,当 git 位于 git worktree 文件夹中时,VS 代码似乎无法将 git 识别为 scm。

我在文档中找不到任何关于此或扩展的内容。关于如何让 VS 代码在外部工作树中支持 git 功能有什么想法吗?

0 投票
1 回答
889 浏览

git - 用于开发/登台/生产的 git checkout 分支

我目前正在重组我们公司处理开发程序的方式。由于总是 ssh 进入服务器以将文件/文件夹从 DEV 升级到 STAGE/PRODUCTION 服务器对我们来说非常麻烦,我认为以允许我们简单合并的方式设置 git 环境可能是一个好主意dev-branch 进入 stage-branch 以执行“促销”。

为此,我们的项目中需要 3 个不同的分支,当收到新推送时,它们会检查到服务器上的不同位置。

假设我们的服务器上有 3 个文件夹,其中包含我们 3 个不同环境(DEV - STAGE - PROD)的数据。然后架构看起来有点像这样:

分支结帐架构

我将 git 设置为裸存储库,我想知道 git 是否可以实现这种功能。

我将感谢你们为我提供的每一点帮助!:D

0 投票
1 回答
420 浏览

git - 什么是 git 工作树标识符

创建新的 git 工作树时,它会显示如下消息

在这里,标识符有什么用?我观察到,如果我在不同的路径上创建另一个工作树,但文件夹名称相同,例如../abc/hotfix,它将分配标识符为hotfix2。用户是否使用此标识符,例如使用标识符移动到特定工作树或专门删除它?

0 投票
1 回答
2086 浏览

git - git worktrees vs "clone --reference"

What are the pros-cons of using git worktrees vs maintaining multiple clones with --reference flag? The main scenario I am considering is when a developer needs to maintain multiple git repositories on the disk for old releases (release/1.0, release/2.0, release/3.0) because switching branches on a single git repo and rebuilding would be costly.

Using worktrees the developer could have a single clone of the repo, and any old releases could be created as worktrees of the repo using cd /opt/main/, git worktree add /opt/old_release_1 release/1.0. Using reference clones, the developer maintains a main clone somewhere, and uses cd /opt/old_release_1, git clone --reference /opt/main/.git ssh://git@github.com/myrepo.git to create clone repositories for the old releases.

It seems like they can both accomplish the same goal. Are there benefits to one over the other in terms of speed, disk space... other things?

0 投票
2 回答
863 浏览

git - 远程 git 工作树已分离

如果分支未存储在本地,我正在尝试将工作树添加到远程分支。

我可以成功地做到这一点并使用以下命令获取所有文件:

产生以下输出:

这使得工作树看起来好像是成功的。如果我查看文件,一切都在那里。

但是,git status 命令看起来像这样

我不能推/拉任何东西。Windows 上的 Git 版本是 2.14.1 btw(如果有区别的话)

有谁知道如何解决这一问题?如果分支是本地的,并且您删除了 origin/,则它可以正常工作。它只是在处理它似乎不同意的遥控器。