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

git - 如何在没有工作目录的情况下创建 git repo?

我使用 git worktree 概念来创建多个工作目录。每个功能和/或错误修复一个。因此,我将创建一个存储库的 git 克隆一次,然后根据需要开始创建工作树。

当我克隆一个 git 存储库时,默认情况下会签出一个工作目录 - 主工作树。我们不使用并且不必要地占用空间。所以我正在寻找一种方法来创建一个 git repo,并在开始时检查一个工作目录。

我试过了git clone --bare <url> ./test-git

它实际上创建了一个没有工作目录的 git repo,但我无法从中创建一个 git 工作树。我曾经抛出以下错误 -

  1. 我究竟做错了什么?

我进入.gitgit clone bare命令创建的目录,发现缺少index文件和目录。lfs这两个项目将出现在.git从完整的 git 克隆创建的目录中。

  1. 这两项表示什么?
  2. 在运行什么 git 命令时,我会得到这些项目吗?
0 投票
0 回答
94 浏览

git - 是否有充分的理由为什么应该在与 git repo 相同的目录层次结构级别创建工作树?

当我浏览了许多与 相关的教程时git worktree,用于演示创建工作树的命令中的任何地方都用于创建..工作树的路径 - 这表明要同时创建新的工作树目录与 git repo 一样的目录层次结构级别。

取自git 网站的示例

另一个来自Atomic Object -

所以我想知道是否有充分的理由在与 git repo 相同的目录层次结构中创建工作树?

从技术上讲,您也可以在 git repo 中创建工作树。Git允许它。

而且我觉得在 git repo 目录下创建属于特定的所有工作树git repo会给出一个逻辑分组。

0 投票
1 回答
56 浏览

git - git post-receive 用于同一服务器上的多个工作树

我正在关注本教程,它运行得非常好。我们现在想在服务器上使用相同的包运行多个帐户,我正在尝试修改 post-receive 但我没有做正确的事情并且找不到答案。目标是让单独的 cpanel 类型帐户运行来自我们的 github 存储库的相同代码,每当我们推送更改时,所有帐户都会发生更新。

post-receive 中的原始代码是这样的:

并且它按预期工作,每当我们从本地 repo 推送并更新 github 时,我们的远程服务器也会更新到 /var/control/project.git 然后被推送到第一个帐户。

当我为不同的工作树添加另一行时,有 3 行内容如下:

我可以向两个实例添加新文件,但删除只发生在第二个实例上。显然我做得不对,但我在这里或网上其他地方找不到我要找的东西。任何帮助将不胜感激。

0 投票
3 回答
183 浏览

git - 单个 git 存储库的多个用户

我们有一个供多个用户使用的服务器。磁盘空间非常有限,因为我们的 git repo 非常庞大,每次有人克隆它时,它都会消耗 130G 的空间。

我知道 git 并非旨在成为集中式工作流程,但这是一种非常特殊的情况。我们考虑过升级硬件,但这是一条很长的路,因为它不是云实例。

我试着摆弄,git worktree但很快就遇到了权限问题。我理想的设置将是一个单一的仓库,多个用户可以通过它进行推送和拉取。

我查看了以前的线程,但不幸的是那里没有可靠的建议,它们是相当老的线程。因此,任何新的建议都将受到高度赞赏。

0 投票
2 回答
105 浏览

git - git中的工作树分支即使在合并后也显示未合并

我经常git add worktree wtname用来创建单独的分支。当我将分支上的更改合并wtname到 master 时,我希望不git branch --no-merged应该列出wtname分支。但是,确实如此。更糟糕的是,即使在删除工作树之后:

我不能删除这个分支,除非我强制删除它。在上面写的命令之后,如果我运行git branch -d wtname,它会抛出以下错误:

为什么会这样?

0 投票
0 回答
36 浏览

git - Git:同一存储库的两个本地克隆在它们之间同步,都在同一个分支中

我正在使用具有两条不同开发线的存储库。因此,我的 PC中有同一个 repo的两个本地克隆。每个克隆上都有一些添加的文件夹。这些额外的文件夹是 gitignored,并且在每个克隆中都不同。它们用于配置每种情况下所需的不同 SDK。

有时我必须在一个克隆中进行开发,这也会影响另一个克隆(必须在两个克隆中测试,甚至并行开发的修改)。

我遇到的问题是,如果我想从一个克隆中提交某些内容并在另一个克隆中准备好,我必须从一个克隆将其上传到存储库,然后在另一个克隆中再次下载。

我想要一个解决方案来避免不必要的上传,也许在两个克隆之间有某种本地同步。

一种解决方法是使用 git worktrees,但由于worktrees 不会让我在两个克隆中签出同一个分支,我必须在一个克隆中签出到另一个分支,然后再次将另一个克隆签出到我正在处理的分支,这不是那么简单。

这是我在问可能以任何其他更简单的方式吗?

0 投票
1 回答
298 浏览

git - 从工作树中拉出?

我有 git 存储库,它有一个来自同一存储库的子模块,但我使用不同的分支添加了它

当我输入:git worktree list我得到这个:

结果

但是当我尝试在 src 文件夹中提取任何内容时。

我在 .git/config 中添加了:

仍然没有任何改变。

是否有一个命令在克隆存储库时会自动拉取子模块?

0 投票
0 回答
27 浏览

git - 创建 GIT 工作树的问题

我有一个 GIT 存储库,我想从中创建一个工作树。存储库如下所示:

我执行命令 git worktree add ../beta beta (beta 是 alpha 中的一个分支)。我得到:

我希望复制工作树看起来像原始的,只有分支 beta 被签出:

我究竟做错了什么?

0 投票
1 回答
97 浏览

git - 使用子模块为项目创建工作树

我有一个顶级项目,大约有 10 个子模块和一些嵌套的子模块。

一些子模块有一个经典的 url,比如url = git:software/module-a,其他的有一个相对于远程顶级项目的 url,比如url = ../module-b. 顶级项目网址是url = git:software/top-project.

我想创建顶级项目及其所有子模块的工作树副本。

但是我找不到使子模块指向其原始路径的方法。我希望那个top-project-v2/module-agit 指向top-project/module-a,而不是克隆一个全新的模块-a。

如果我这样做cd top-project-v2; git submodule upate --init --recursive,则命令成功,但子模块未链接到顶级项目子模块。

如果我这样做git checkout --recurse-submodules origin/v2,我会收到一个错误:

有什么办法吗?

0 投票
0 回答
80 浏览

git - 如何让 Eclipse 识别 Git 工作树?

我有一个 git 存储库,从中创建了几个工作树。如果我从主工作树导入项目,Eclipse 只会识别 git 存储库。但是,当我从我创建的其他工作树中导入项目时,Eclipse 不会将它们识别为 git 存储库,并且不会显示任何历史记录。

工作树是在与主工作树不同的目录中创建的,Eclipse 在不同的工作区中为它们启动。

我打算在不影响主分支或我正在处理的任何开发分支的情况下使用这些工作树进行代码审查。

Visual Studio Code 似乎对额外的工作树没有问题。在附加工作树中打开项目时,我可以在时间线选项卡中查看不同文件的历史记录。