将分支从本地存储库推送到同一 Windows 计算机上同一远程存储库的单独克隆

问题描述 投票:0回答:1

我有一个 Git 存储库,我们称之为

Foo
,我已在同一台 Windows 计算机上克隆了两次。我们将这两个本地存储库称为
Foo1
(在
C:\repos\Foo1
中)和
Foo2
(在
C:\repos\Foo2
中)。

现在我有两个克隆的原因是我有时需要同时在不同的分支上工作:例如,我可能正在“工作”本地存储库上的一个功能分支上工作

Foo1
,但随后我需要发布
main
上的紧急修补程序,我不想(或不能)从功能分支切换出去,所以我只是移至
Foo2
并将其用于紧急修补程序。然而,实际原因无关紧要:我只是解释它以澄清设置。

我正在

Foo1
开发一个分支,在
Foo2
开发另一个分支。这些分支都没有准备好发布,并且由于我将来可能想将它们重新建立在
main
上,我宁愿not将它们推送到它们共享的远程
origin
(即
Foo
) .

我想检查

branch2
Foo2
分支中的更改是否可以解决由于
branch1
Foo1
分支中的更改而产生的问题。我想将
branch2
“推”到
Foo1
并将
branch1
重新设置到它上面。然而,这两个存储库都不是裸露的,而且它们也在 Windows 机器上,所以我不知道是否有可能(更不用说推荐)做这样的事情。

我可以以某种方式“共享”两个本地存储库之间的分支,而不需要将其推入/拉出远程吗?

windows git
1个回答
0
投票

您的场景听起来像是使用命令

git worktree
的一个很好的例子。

管理附加到同一存储库的多个工作树。一个 git 存储库可以支持多个工作树,允许您一次签出多个分支。

基本上,您可以只拥有一个用于开发的存储库 (

foo1
),而不是拥有两个开发存储库,其中两个 (
foo2
) 之一被添加为另一个 (
foo1
) 的第二个遥控器,并且用于修复的第二个工作树 (
foo2
) 在不同的外部目录中,它们都在同一个存储库下

通过此设置,您将能够同时签出两个(在不同的文件夹中),并成为同一存储库的一部分。

要创建第二个wotktree,只需进入第一个存储库(

C:\repos\Foo1
)并输入

# create a new worktree and a new branch pointing to the given commit
git worktree add -b <name> <path> <commit-ish>

# Example: create a new worktree and a new branch called hotfix pointing to dev's tip
git worktree add -b hotfix ../hotfix dev
© www.soinside.com 2019 - 2024. All rights reserved.