Git:跟踪两个分支,当文件的位置不同时

时间:2011-08-02 07:25:11

标签: git location git-track

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

my_repository/
            ./foo
            ./bar

我怎么能跟踪另一个分支(远程),这个'foo'和'bar'文件位于另一个位置?也就是说,当我签出第二个分支时,my_repository文件夹变成了这样的东西:

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

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

在某些时候,我在某处克隆了第二个存储库 - 否则,将foobar文件添加到tests文件夹,并提交它。

然后,我开始提交并更改我的第一个分支,我的官方克隆(origin / master)中的foobar文件。现在,我还要将此更改发送到第二个存储库,但不仅仅是覆盖文件的内容。我也希望在第二个分支上有提交历史记录。

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

任何提示?

2 个答案:

答案 0 :(得分:1)

看起来您正在寻找subtree merge strategy(另见here)。

答案 1 :(得分:0)

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

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