【问题标题】:Track my changes in a 3rd party git repo and push the changes to my personal repo在第 3 方 git 存储库中跟踪我的更改并将更改推送到我的个人存储库
【发布时间】:2016-11-15 16:58:24
【问题描述】:

有一个第 3 方 git repo,我已经分叉了它,我正在维护我的更改。这些更改是在已发布的分支中完成的,因此不会有任何冲突。每当第 3 方 repo 发布新版本时,我必须在它之上进行更改,并且我应该在我的 repo 中维护它。因此我想知道我们是否可以通过git实现以下要求。

1) 我不想将 3rd 方 repo 用作库,而是想将它用作我的项目,但我不想分叉 repo,而是我应该能够标记哪个 3rd 方 repo 我想要改变。 - 这是因为如果我在第 3 方发布版本时分叉分支,那么我的 git repo 的分支中就会出现合并冲突。

2) 只维护我对项目所做的更改,只将这些更改推送到我的 repo,我不希望任何东西被推送到 3rd 方 repo。

3) 当我克隆我的存储库时,在本地存储库中它应该包含来自第 3 方和我的更改的文件,但在我的 git 存储库中它应该只有我对第 3 方库的差异。

我这样做的原因是为了跟踪我在不同已发布版本的 3rd 方 repos 之间的更改。

【问题讨论】:

  • 你能从父发布分支打开一个 Pull Requests 到你的 fork 中

标签: git github version-control


【解决方案1】:

您可以将第 3 方代码库添加为您的代码库的“文件夹”。并且当第 3 方 repo 有新版本时,您也可以将其视为子 repo,然后您需要从远程拉取并在您的 repo 中更新。为了说明清楚,我们假设第 3 方 repo 的名字是3rd_repo,你的 repo 的名字是my_repo

您可以按照以下步骤操作:Bash on local my_repo -> 在此处克隆 3rd_repo -> git add 3rd_repo/ 并提交 -> 在 3re_repo 中进行更改 -> 在 my_repo/ 目录中提交 -> 推送到远程 my_repo。详细步骤可以参考here

通过这些步骤,您可以对 3rd_repo 进行更改并将更改推送到 my_repo。此外,当您克隆 my_repo 时,它具有 3rd_repo 的修改文件。如果 3rd_repo 在远程有新版本,你应该这样做:

cd 3rd_repo -> git commit -> git pull ->(解决冲突,如果有并且)进行更改 -> cd.. -> 在 my_repo/ 目录中提交 -> 推送到远程 my_repo。

【讨论】:

    【解决方案2】:

    这是我为您提出的解决方案。我尝试子模块成功,但是子模块作为镜像仓库我没有真正的实验。

    1. 创建一个包含一个/多个子模块的存储库 (https://github.com/blog/2104-working-with-submodules)

    2. 子模块是镜像仓库(https://help.github.com/articles/duplicating-a-repository/

    【讨论】:

      猜你喜欢
      • 2016-06-27
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多