Git 如何使用一个存储库作为父存储库?
不确定标题的措辞是否正确,但是 我有Git 如何使用一个存储库作为父存储库?,git,Git,不确定标题的措辞是否正确,但是 我有repo-A和repo-B 在B中,我已将A和B设置为遥控器。 假设B是A的一个扩展名,带有一些附加文件,我希望定期用A的更改更新B,但不将附加的B文件推送到A 这可能吗。做这件事的最佳方法是什么?是的,你可以做得很简单: 在B中,我将A和B设置为遥控器 这正是你必须做的 您只需在项目中添加任意数量的遥控器,并以您喜欢的任何方式使用它们。(推至1,然后从另一个上拔出等) 远程地址是您的存储库可以与之通信的URL,您可以决定如何使用它们 克隆原始回购协议 添加
repo-A
和repo-B
在B中,我已将A和B设置为遥控器。
假设B是A的一个扩展名,带有一些附加文件,我希望定期用A的更改更新B,但不将附加的B文件推送到A
这可能吗。做这件事的最佳方法是什么?是的,你可以做得很简单:
在B中,我将A和B设置为遥控器 这正是你必须做的 您只需在项目中添加任意数量的遥控器,并以您喜欢的任何方式使用它们。(推至1,然后从另一个上拔出等) 远程地址是您的存储库可以与之通信的URL,您可以决定如何使用它们
- 克隆原始回购协议
- 添加新远程
git远程添加
- 在单个repo中使用两个存储库中的代码
# clone first repository
git clone <repo1>
# add remote
git remote add <remote2> <url2>
# display the list of all the remotes
git remote -v
如下图所示,您将拥有2个存储库,用于构建大型存储库
# clone first repository
git clone <repo1>
# add remote
git remote add <remote2> <url2>
# display the list of all the remotes
git remote -v
#克隆第一个存储库
git克隆
#添加远程
git远程添加
#显示所有遥控器的列表
git远程-v
我想用A的更改定期更新B,但不想将附加的B文件推送到A 在这一点上,您所要做的只是从一个待实现的对象中提取更改
# make sure you are on the branch from repository B
git pull origin A <branch>
# now you have all the changes from A in your B branch
#确保您位于存储库B的分支上
git拉原点A
#现在,在B分支中有了A的所有更改
除非有单独回购的具体要求,否则您所描述的最好是作为分支机构进行。B是a的一个分支。使用
git merge a
或git rebase a
将B更新为任何其他分支,以您喜欢的为准。从现在起,我将假设合并。下面是合并后的情况
1 - 2 - 3 - 6 - 7 - 10 - 12 - 13 [A]
\ \ \
4 - 5 - M - 8 - 9 - 11 - M - 14 [B]
如果它们必须是独立的存储库,您可以使用远程分支执行相同的操作。当您扩展一个您无法直接控制的项目时,您可以使用此选项。为了让事情更清楚一点,让我们称a为“上游”,B是您的存储库。A在B的上游。B只从上游拉动,从不后退
首先克隆A,然后将origin
(即A)重命名为上游
git克隆A
git远程重命名源站上游
git远程添加源站
git推送原点
1 - 2 - 3 [master] [origin/master] [upstream/master]
正常工作,正常提交,并推到原点。下面是两次新的提交和推送
1 - 2 - 3 [upstream/master]
\
4 - 5 [master] [origin/master]
要更新时,首先git-fetch-upstream
。这不会改变您的本地分支,只会更新上游分支的副本。假设上游的主分支有两个新提交
1 - 2 - 3 - 6 - 7 [upstream/master]
\
4 - 5 [master] [origin/master]
然后像任何其他分支一样合并:git merge-upstream/master
1 - 2 - 3 - 6 - 7 [upstream/master]
\ \
4 - 5 - M [master] [origin/master]
您可以通过git pull upstream master一步完成此操作
1 - 2 - 3 - 6 - 7 [upstream/master]
\ \
4 - 5 - M [master] [origin/master]
继续这样做,你会得到同样的结果,就像你做了一样
1 - 2 - 3 - 6 - 7 - 10 - 12 - 13 [upstream/master]
\ \ \
4 - 5 - M - 8 - 9 - 11 - M - 14 [master] [origin/master]
重要的是:
- 远程分支只是分支
- 从上游拉动:
git向上游拉动
- 推送到原点:
git推送到原点