分叉和同步 git 存储库的策略
Strategy to forking and syncing a git repository
在我的问题的上下文中,我有一个分支 origin\master
来自某个项目的 upstream\master
分支的分支。
我的 origin
项目是一个完全独立的项目,具有新功能,我永远不想创建 upstream\master
的拉取请求。但是,我想从 upstream\master
获取更新并与其保持同步。
在这种情况下,origin\master
是我项目的master
分支,所以它应该是最稳定的分支,我想保护它,并限制对它的推送操作. (restricted branches)
但如果我理解正确,如果我想与 upstream\master
同步,我将更改更改到项目的本地 master
分支,并且在解决冲突后我需要将其推送到 origin\master
,这是一个受限制的分支 - 所以我实际上不能这样做。此外,由于相同的限制,我无法创建从本地 master
到 origin\master
的拉取请求..
更一般地说,直觉上我觉得从 upstream\master
直接合并到 origin\master
是不对的。
有谁知道对于这种情况是否有更好的策略?
由于您的本地 master
分支是 origin/master
的工作副本,因此您需要将本地 master
与 origin/master
同步。直接同步 origin/master
和 upstream/master
是没有意义的。
如果你的 origin/master
分支保护没有直接推送到远程,你可以 创建另一个分支并将其推送到远程,然后创建一个拉取请求将其合并到 master
。详情如下:
#After you update local master to sync with upstream/master
git checkout -b temp
git push -u origin temp
在 github 网页中 -> 创建拉取请求 -> 将 temp
分支合并到 master
-> 最后 origin/master
将在 upstream/master
分支.
将本地 master
分支与 origin/master
同步:
git checkout master
git pull origin master
在我的问题的上下文中,我有一个分支 origin\master
来自某个项目的 upstream\master
分支的分支。
我的 origin
项目是一个完全独立的项目,具有新功能,我永远不想创建 upstream\master
的拉取请求。但是,我想从 upstream\master
获取更新并与其保持同步。
在这种情况下,origin\master
是我项目的master
分支,所以它应该是最稳定的分支,我想保护它,并限制对它的推送操作. (restricted branches)
但如果我理解正确,如果我想与 upstream\master
同步,我将更改更改到项目的本地 master
分支,并且在解决冲突后我需要将其推送到 origin\master
,这是一个受限制的分支 - 所以我实际上不能这样做。此外,由于相同的限制,我无法创建从本地 master
到 origin\master
的拉取请求..
更一般地说,直觉上我觉得从 upstream\master
直接合并到 origin\master
是不对的。
有谁知道对于这种情况是否有更好的策略?
由于您的本地 master
分支是 origin/master
的工作副本,因此您需要将本地 master
与 origin/master
同步。直接同步 origin/master
和 upstream/master
是没有意义的。
如果你的 origin/master
分支保护没有直接推送到远程,你可以 创建另一个分支并将其推送到远程,然后创建一个拉取请求将其合并到 master
。详情如下:
#After you update local master to sync with upstream/master
git checkout -b temp
git push -u origin temp
在 github 网页中 -> 创建拉取请求 -> 将 temp
分支合并到 master
-> 最后 origin/master
将在 upstream/master
分支.
将本地 master
分支与 origin/master
同步:
git checkout master
git pull origin master