不确定标题是否正确,但是
我有repo-A和repo-B
在 BI 中将 A 和 B 设置为遥控器。
假设 B 是 A 的扩展,带有一些附加文件,我想定期使用 A 的更改更新 B,但不将附加 B 文件推送到 A
这可能吗。做这个的最好方式是什么
除非有单独的存储库的具体要求,否则您所描述的内容最好作为分支来完成。git merge AB 是 A 的一个分支。使用或,将 B 更新为任何其他分支git rebase A,无论您喜欢什么。从现在开始我将假设合并。这就是合并后的样子。
1 - 2 - 3 - 6 - 7 - 10 - 12 - 13 [A]
\ \ \
4 - 5 - M - 8 - 9 - 11 - M - 14 [B]
Run Code Online (Sandbox Code Playgroud)
如果它们必须是单独的存储库,您可以执行相同的操作,但使用远程分支。当您扩展一个您无法直接控制的项目时,您可以使用它。为了让事情更清楚一些,我们将 A 称为“上游”,B 是您的存储库。A 位于 B 的上游。B 只从上游拉动,从不推回。
通过首先克隆 A 进行设置,然后将其重命名origin(即 A)为upstream。
git clone Agit remote rename origin upstream然后添加一个新的原点,您要在其中远程存储修改并推送到它。
git remote add origin <url to your remote>git push origin现在你有了这个。请注意,所有三个分支都指向同一个提交。
1 - 2 - 3 [master] [origin/master] [upstream/master]
Run Code Online (Sandbox Code Playgroud)
正常工作,正常提交,推到原点。这是两次新提交和一次推送之后的结果。
1 - 2 - 3 [upstream/master]
\
4 - 5 [master] [origin/master]
Run Code Online (Sandbox Code Playgroud)
当你想更新时,首先git fetch upstream。这不会改变您的本地分支,它只会更新您的上游分支的副本。假设上游的主分支有两个新的提交。
1 - 2 - 3 - 6 - 7 [upstream/master]
\
4 - 5 [master] [origin/master]
Run Code Online (Sandbox Code Playgroud)
然后像其他分支一样合并git merge upstream/master:
1 - 2 - 3 - 6 - 7 [upstream/master]
\ \
4 - 5 - M [master] [origin/master]
Run Code Online (Sandbox Code Playgroud)
您可以通过一个步骤完成此操作,如下所示git pull upstream master。
继续这样做,你最终会得到与分支相同的结果。
1 - 2 - 3 - 6 - 7 - 10 - 12 - 13 [upstream/master]
\ \ \
4 - 5 - M - 8 - 9 - 11 - M - 14 [master] [origin/master]
Run Code Online (Sandbox Code Playgroud)
重要的是:
git pull upstreamgit push origin