从Github仓库中分叉特定的文件

4
我想从某个仓库中只 fork 出几个文件。对于这些特定的文件,我希望能够跟踪并合并上游的更改。
最好的祝福。

你究竟想要实现什么?“fork”的概念适用于仓库,而不是文件。你是想fork整个仓库,但只跟踪某些文件的上游更改吗?还是你只想检出(并跟踪)某些文件,而不获取其余文件?你打算编辑这些文件,还是只想要跟踪远程仓库中的文件的本地副本?你打算编辑其余的文件,但对其中的上游更改不感兴趣吗?关于你究竟想要实现什么,再提供一些信息会很有帮助。=) - Tonio
我想要从另一个代码库中“重用”一些文件(以扩展它们)。然而,我希望能够重新整合上游的修复。 - Stasik
我明白了。我认为没有简单的方法可以做到,虽然我可能错了。通过 .gitattributes,您可以指定某些文件的合并策略,但据我所知,在自动合并特定远程分支时无法这样做。从我的记忆中,我只能想到从上游生成新提交的修补程序,并使用 git apply --include=<path-pattern> 应用这些修补程序。 - Tonio
2个回答

0

这应该可以工作,虽然有点笨重(我还没有测试过):

$ 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")是您正在跟踪的分支。

基本上,您要说的是“从上游获取最新更改,在当前文件和上游文件之间制作差异补丁,针对某些文件列表应用该补丁,将文件添加到索引中并提交”。

(工作树应该是干净的,否则您将在提交中包含不来自上游的更改,这不是问题,但可能会令人困惑。)


0

看看子模块。在深入研究后,您可能会发现复杂性并不合理。最好是克隆整个存储库并忽略其他文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接