如何跟踪分叉项目中的原始代码库?
How do I keep track of the original codebase in a forked project?
我使用 git 管理的项目(在 github 上,如果相关)的情况有点复杂。
对于大多数项目,我的 git 工作流程 (1) 如下所示:
main repo (upstream)
|
|_repo A (origin)
我在自己的 repo (repo A
) 的分支中修改代码,然后推送到 repo
。合并 PR 后,我使用以下命令同步 repo A
:
pull upstream master
push origin master
这里没什么特别的,它是一个基本的 git 工作流程,其他人可以轻松地协作完成该项目。
我现在正在处理另一个工作流程更复杂的项目,它看起来像这样:
original repo
|
|_main repo (upstream)
|
|_repo A (origin)
基本上,main repo
是 original repo
的一个分支,不再积极开发。 main
分支现在是代码库的 官方版本 和用户 pull/push 他们的更改 to/from main repo
(如上) .
但是,original repo
有一些偶尔的更新可能需要合并到 main repo
中。显然 main
将包含 original
不包含的更改,因此简单的工作流程 (1) 不再适用。
为了保持官方版本的同步,我下载了最新版本的original
,将其与分叉时制作的main
的离线副本进行比较,然后手动将更改添加到(例如)repo A
。通常,它不是很多文件或更改,所以它是可行的,但它远非理想的解决方案。我不是git方面的大专家,除了基本的东西,我的问题是是否有更好的方法来组织工作流程。或者也许有一些聪明的“git-fu”技术?
出于多种原因,从 main
推到 original
(即使其成为上游)或取得 original
的所有权不是选项。
您可以使用 git remote
命令添加配置多个遥控器。因此,在您的情况下,您可以为原始存储库配置远程并使用 git pull remote-name branch --rebase
从中获取更新。根据 main 和 original 中的内容,您可能会遇到合并冲突,您可能需要手动修复这些冲突。
我使用 git 管理的项目(在 github 上,如果相关)的情况有点复杂。
对于大多数项目,我的 git 工作流程 (1) 如下所示:
main repo (upstream)
|
|_repo A (origin)
我在自己的 repo (repo A
) 的分支中修改代码,然后推送到 repo
。合并 PR 后,我使用以下命令同步 repo A
:
pull upstream master
push origin master
这里没什么特别的,它是一个基本的 git 工作流程,其他人可以轻松地协作完成该项目。
我现在正在处理另一个工作流程更复杂的项目,它看起来像这样:
original repo
|
|_main repo (upstream)
|
|_repo A (origin)
基本上,main repo
是 original repo
的一个分支,不再积极开发。 main
分支现在是代码库的 官方版本 和用户 pull/push 他们的更改 to/from main repo
(如上) .
但是,original repo
有一些偶尔的更新可能需要合并到 main repo
中。显然 main
将包含 original
不包含的更改,因此简单的工作流程 (1) 不再适用。
为了保持官方版本的同步,我下载了最新版本的original
,将其与分叉时制作的main
的离线副本进行比较,然后手动将更改添加到(例如)repo A
。通常,它不是很多文件或更改,所以它是可行的,但它远非理想的解决方案。我不是git方面的大专家,除了基本的东西,我的问题是是否有更好的方法来组织工作流程。或者也许有一些聪明的“git-fu”技术?
出于多种原因,从 main
推到 original
(即使其成为上游)或取得 original
的所有权不是选项。
您可以使用 git remote
命令添加配置多个遥控器。因此,在您的情况下,您可以为原始存储库配置远程并使用 git pull remote-name branch --rebase
从中获取更新。根据 main 和 original 中的内容,您可能会遇到合并冲突,您可能需要手动修复这些冲突。