鉴于我在第一个分支上,跟踪'foo'和'bar'文件,如下所示:
my_repository/
./foo
./bar
我怎么能跟踪另一个分支(远程),这个'foo'和'bar'文件位于另一个位置?也就是说,当我签出第二个分支时,my_repository
文件夹变成了这样的东西:
my_repository/
./some_file
./another_file
./tests/
../foo
../bar
解释一下:我有第一个分支跟踪远程存储库,第二个分支跟踪另一个远程存储库。
在某些时候,我在某处克隆了第二个存储库 - 否则,将foo
和bar
文件添加到tests
文件夹,并提交它。
然后,我开始提交并更改我的第一个分支,我的官方克隆(origin / master)中的foo
和bar
文件。现在,我还要将此更改发送到第二个存储库,但不仅仅是覆盖文件的内容。我也希望在第二个分支上有提交历史记录。
问题是第二个存储库将我的文件放在不同的位置。
任何提示?
答案 0 :(得分:1)
看起来您正在寻找subtree merge strategy(另见here)。
答案 1 :(得分:0)
应该没有任何问题。有两棵树有一些内容。您合并它们并将文件放在合并中的一个或另一个位置并推送该合并。
Git不跟踪文件标识,但是当它进行合并并注意到一方被修改但另一方不存在的文件时,它会查找足够相似的文件,以便更改可能有机会应用。因此,如果文件类似,git将合并它们(如果你愿意,你可以将它们移动到另一个位置),如果它们不同,它只会给你们两个,你们必须选择(但是试图合并)无论如何它们都会发生冲突,所以跟踪文件标识并没有松动任何东西。)