如何将文件夹(只有一个,不是全部)从一个存储库合并到第二个存储库?
How can merge folder(only one,not all) from one repository to second?
我有两个 repositories.In A 存储库 我从 B 添加了一个文件夹 repository.But 现在我在 B 的这个文件夹中有一些更改 repository.How 我只能从 B 存储库添加更改一个文件夹?
我做了 git fetch git://repository.url/repo.git master:folder_name
但它添加了所有文件夹
您有两个选择:
A) 从 repo_b
创建一个补丁并将其应用到 repo_a
(更容易)。
B) 添加 repo_b
作为 repo_a
和 merge unrelated histories 的远程。 (更复杂)。
选项 A 的操作方法如下:
cd repo_b
git whatchanged --reverse folder_name
git diff deadb33f HEAD > folder.patch
以上是确定 repo_b
历史记录的时间点,从该时间点开始,您希望获得所有更改。该提交应该是 deadb33f
.
cd repo_a
git checkout -b new_branch
git reset --hard decafbad
其中 decafbad
是两个 repos 分歧的提交。
patch -p1 < folder.patch
git add changed_folder
git commit -m "changes from repo_b"
但是,这会将所有更改压缩到一个提交中。如果您想保留 repo_b
的提交历史记录,请使用我上面链接的方法(选项 B)。
我有两个 repositories.In A 存储库 我从 B 添加了一个文件夹 repository.But 现在我在 B 的这个文件夹中有一些更改 repository.How 我只能从 B 存储库添加更改一个文件夹?
我做了 git fetch git://repository.url/repo.git master:folder_name
但它添加了所有文件夹
您有两个选择:
A) 从 repo_b
创建一个补丁并将其应用到 repo_a
(更容易)。
B) 添加 repo_b
作为 repo_a
和 merge unrelated histories 的远程。 (更复杂)。
选项 A 的操作方法如下:
cd repo_b
git whatchanged --reverse folder_name
git diff deadb33f HEAD > folder.patch
以上是确定 repo_b
历史记录的时间点,从该时间点开始,您希望获得所有更改。该提交应该是 deadb33f
.
cd repo_a
git checkout -b new_branch
git reset --hard decafbad
其中 decafbad
是两个 repos 分歧的提交。
patch -p1 < folder.patch
git add changed_folder
git commit -m "changes from repo_b"
但是,这会将所有更改压缩到一个提交中。如果您想保留 repo_b
的提交历史记录,请使用我上面链接的方法(选项 B)。