我想从某个仓库中只 fork 出几个文件。对于这些特定的文件,我希望能够跟踪并合并上游的更改。
最好的祝福。
最好的祝福。
这应该可以工作,虽然有点笨重(我还没有测试过):
$ git fetch upstream
$ git diff upstream/master -- file1.ext path/to/file2.ext yet/another/file3.ext | git apply -
$ git add file1.ext path/to/file2.ext yet/another/file3.ext
$ git commit
"upstream" 是上游远程的名称,而 "master"(如 "upstream/master")是您正在跟踪的分支。
基本上,您要说的是“从上游获取最新更改,在当前文件和上游文件之间制作差异补丁,针对某些文件列表应用该补丁,将文件添加到索引中并提交”。
(工作树应该是干净的,否则您将在提交中包含不来自上游的更改,这不是问题,但可能会令人困惑。)
看看子模块。在深入研究后,您可能会发现复杂性并不合理。最好是克隆整个存储库并忽略其他文件。
.gitattributes
,您可以指定某些文件的合并策略,但据我所知,在自动合并特定远程分支时无法这样做。从我的记忆中,我只能想到从上游生成新提交的修补程序,并使用git apply --include=<path-pattern>
应用这些修补程序。 - Tonio