我有一个主存储库 A ,我分叉到存储库 B 。我已经对 B 进行了一些更改,我想要升级到 A 。我很难搞清楚如何做到这一点。
首先,执行此操作的git命令是什么?
其次,我可以在github上做拉取请求来促进这个吗?这会怎么样?
最后,我实际上在B中有一个我想合并的分支。在将合并/拉取请求返回到上游存储库(A)之前,是否应该将B中的分支合并回我的主分支?
答案 0 :(得分:1)
有两种主要方法可以做到这一点
在您阅读之前,我只想说您的问题相对开放,而且没有一个最好的答案。以下答案仅反映了我用来为您提供一些见解的一些工作流程。
假设您正在处理B的克隆,您可以添加A作为第二个遥控器:
git remote add repo_a <repo A URL>
repo_a
是您的远程存储库的别名,就像origin
可能是远程B的当前别名一样。为了清楚起见,我们将origin
重命名为repo_b
:
git remote rename origin repo_b
列出你的遥控器:
git remote -v
从两个遥控器中获取内容
git fetch repo_a
git fetch repo_b
此时,您可以创建本地分支以跟踪来自两个远程存储库的分支,而不限制合并方式或合并方式。如何定义工作流程将添加某些约束。
如果您想将Repo B的feature_1
分支的更改合并到repo_a
的{{1}}分支,您可以这样做:
master
您最大的朋友是git checkout -b master_a repo_a/master --track
git merge feature_1
git push repo_a master_a:master
或任何其他图形工具,它们将在同一视图中显示本地分支和远程分支。我建议打开一个独立的gitk
并根据需要随时刷新它。不要忘记gitk
选项。
--all
在下一个示例中,客户端命令发生在gitk --all &
的本地克隆中。我们将在GitHub上将功能推送到repo_b
并使用pull请求进行合并。
当我处理拉取请求时,我希望repo_b
的主分支始终与父存储库同步,并且在{{1}中使用repo_b
和upstream
是很常见的客户端克隆:
origin
将您的主分支重置为repo_b
:
git remote add upstream <repo A URL>
实施您的功能并推送到Github:
upstream
现在,在Web界面中,您应该可以选择在查看该分支时提交拉取请求。我不会详细介绍,但它应该足够直观。选择git fetch upstream
git fetch origin
git checkout master
git reset --hard upstream/master
git checkout -b feature_2
作为来源,git push origin feature_2
作为目的地。
合并完成后,您可以更新repo_b/feature_2
克隆中的repo_a/master
分支:
master