0

鉴于我在第一个分支上,跟踪“foo”和“bar”文件,如下所示:

my_repository/
            ./foo
            ./bar

我怎样才能跟踪另一个分支(远程),这个“foo”和“bar”文件位于另一个位置?即,当我签出第二个分支时,my_repository文件夹变成这样:

my_repository/
            ./some_file
            ./another_file
            ./tests/
                 ../foo
                 ../bar

再解释一下:我有第一个分支跟踪远程存储库,第二个分支跟踪另一个远程存储库。

在某些时候,我在其他地方克隆了第二个存储库,将文件添加到foo文件夹,然后提交。bartests

然后,我开始从我的第一个分支,我的官方克隆(起源/主)提交并更改我的foo和文件。bar现在,我还想将此更改发送到第二个存储库,但不仅仅是覆盖文件的内容。我也想在第二个分支上有提交历史。

问题是第二个存储库将我的文件放在不同的位置。

有小费吗?

4

2 回答 2

1

看起来您正在寻找子树合并策略(另请参见此处)。

于 2011-08-02T07:59:21.190 回答
0

应该没有任何问题。有两棵树有一些内容。您合并它们并将文件放在合并中的一个或另一个位置并推送该合并。

Git 不跟踪文件身份,但是当它进行合并并注意到一侧已修改但另一侧不存在的文件时,它会查找与更改可能有机会应用的足够相似的文件。因此,如果文件相似,git 将合并它们(如果你愿意,你可以将它们移动到另一个位置),如果它们不同,它只会给你两者,你必须选择(但不是试图合并无论如何它们都会发生冲突,因此不跟踪文件身份不会丢失任何东西)。

于 2011-08-02T08:00:10.120 回答