有一个第三方git repo,我已经分叉了,我正在维护我的更改。这些更改是在已发布的分支中完成的,因此不会发生任何冲突。每当第三方回购发布新版本时,我必须在其上进行更改,我应该在我的回购中保留它。因此,我想知道我们是否可以通过git达到以下要求。
1)我不想使用第三方回购作为库,而是我想将它用作我的项目,但我不想分叉回购,而是我应该能够标记哪个第三方回购我想改变。 - 这是因为如果我在第三方发布版本时分叉,那么在我的git仓库的分支内会出现合并冲突。
2)仅维护我对项目所做的更改,并仅将这些更改推送到我的仓库,我不希望任何事情被推入第三方仓库。
3)当我克隆我的仓库然后在本地仓库中它应该有来自第三方和我的更改的文件但是在我的git仓库中它应该只有我对第三方库的差异。
我这样做的原因是为了跟踪我在第三方回购的不同发布版本之间的变化。
答案 0 :(得分:1)
这是我为您提出的解决方案。我尝试了子模块的成功,但子模块作为镜像存储库我没有真正的实验。
创建存储库有一个/多个子模块(https://github.com/blog/2104-working-with-submodules)
子模块是镜像存储库(https://help.github.com/articles/duplicating-a-repository/)
答案 1 :(得分:1)
您可以将第三方回购添加为"文件夹"为你的回购。当第三方回购有新版本时,您可以将其视为子回购,然后您需要从远程拉出并在您的回购中更新。为了清楚说明,我们假设第三方回购的名称是3rd_repo
,回购的名称是my_repo
。
您可以按照以下步骤操作:在本地my_repo上进行Bash - >克隆3rd_repo这里 - > git add 3rd_repo/
并提交 - >在3re_repo中进行更改 - >在my_repo/
目录中提交 - >推送到远程my_repo。详细步骤可以参考here
通过这些步骤,您可以对3rd_repo进行更改并将更改推送到my_repo。此外,当您克隆my_repo时,它具有3rd_repo的修改文件。如果3rd_repo在remote上有新版本,你应该这样做:
cd 3rd_repo
- > git commit
- > git pull
- > (解决冲突,如果有和)进行更改 - > cd..
- >在my_repo /目录中提交 - >推送到远程my_repo。