如何将文件夹(只有一个,不是全部)从一个存储库合并到第二个存储库?

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_amerge 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)。