分叉和同步 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,这是一个受限制的分支 - 所以我实际上不能这样做。此外,由于相同的限制,我无法创建从本地 masterorigin\master 的拉取请求..

更一般地说,直觉上我觉得从 upstream\master 直接合并到 origin\master 是不对的。

有谁知道对于这种情况是否有更好的策略?

由于您的本地 master 分支是 origin/master 的工作副本,因此您需要将本地 masterorigin/master 同步。直接同步 origin/masterupstream/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