Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如果分叉回购和原始回购都有一些提交,如何用原始回购更新分叉回购?_Git_Github_Version Control - Fatal编程技术网

Git 如果分叉回购和原始回购都有一些提交,如何用原始回购更新分叉回购?

Git 如果分叉回购和原始回购都有一些提交,如何用原始回购更新分叉回购?,git,github,version-control,Git,Github,Version Control,我有以下情况: 存在名称为“主”的回购协议。 Fork“MASTER”创建“Fork\u MASTER” 假设在“MASTER”上推送了10个提交,在“FORK\u MASTER”上推送了大约两个提交 现在我想更新FORK。如何实现 我也试图这样做。为了实现这一目标,我采取了以下步骤: 1) 为“FORK_MASTER”至“MASTER”设置上游。 2) git取上游 3) 吉特上游/发展再基地 4) git推送原点 但git在第3步之后抛出冲突,即git重新设置上游/开发基础 期待听到如何实现

我有以下情况:

存在名称为“主”的回购协议。 Fork“MASTER”创建“Fork\u MASTER”

假设在“MASTER”上推送了10个提交,在“FORK\u MASTER”上推送了大约两个提交

现在我想更新FORK。如何实现

我也试图这样做。为了实现这一目标,我采取了以下步骤: 1) 为“FORK_MASTER”至“MASTER”设置上游。 2) git取上游 3) 吉特上游/发展再基地 4) git推送原点

但git在第3步之后抛出冲突,即git重新设置上游/开发基础


期待听到如何实现这一点。

由于主回购协议是主回购协议(FORK\u MASTER为主回购协议做出贡献),您应该首先从主回购协议中提取变更,然后在顶部重新确定FORK\u MASTER的变更基础

假设本地回购开发分支提交历史记录如下:

…---A---B  develop
对于主回购,有10个提交
C1
C10
推式提交。对于FORK_MASTER回购,有两个提交
D1
D2

通常的工作流是将更改推送到FORK_MASTER,然后创建pull请求以将FORK_MASTER/develop合并到MASTER/develop(因为处理FORK_MASTER repo的人员通常不是MASTER repo的管理员):

提交历史记录将是:

…---A---B---C1---C2---…---C10---D1---D2 develop, origin/develop
                           |
                     upstream/develop  
现在,FORK_主回购已更新。您还可以通过创建pull请求来更新MSTAER repo,以将FORK_MASTER/develope合并到MASTER/develope中。或者,如果您有权将更改推送到主repo,您可以通过
git push upper MASTER
直接推送到主repo


注意:当rebase提交
D1
D2
上游/develope
顶部时,如果有冲突,您可以手动修改和保存冲突文件,然后使用
git add。
git-rebase--继续
我使用以下命令解决了这个问题:

git remote-v(用于检查原始回购位置)

git远程添加上游(添加上游回购路径)

git取回上游(从上游回购取回分支)

git merge upstream/--允许不相关的历史记录-X ours-m“更新分支”(将上游分支的更改合并到分叉分支)

git push-f origin--all(将更改推送到分叉分支)


使用这些命令,我可以成功地更新分叉分支。

您必须完成重新基础(在完成之前可能还有几个冲突需要解决),然后您可以将结果推送到上游主控。可能重复的仍然会出现冲突错误,下面是日志:自动合并冲突(添加/添加):由于fork repo和原始repo更改了同一个文件而导致的合并冲突,无法避免冲突。您可以手动或自动解决冲突。选项1:手动解决冲突。正如我在答案末尾列出的那样,对confilct文件进行modeify,然后使用
git add.
git-rebase--继续。选项2:自动解决冲突。您应该为命令git pull upper develop--rebase添加
-X ours/theres
。如果您正在重新基址过程中,请通过
git-rebase--abort
中止它,然后执行命令
git-pull-upstream-develop--rebase-X-theres
。命令
git-pull-upstream-develop--rebase-X-theres
将通过保留fork-repo的版本自动解决冲突。如果要通过保留原始回购的版本来自动解决冲突文件,您可以使用命令
git-pull-upstream-develope--rebase-X ours
来代替。git-pull-upstream-develope--rebase-X ours:这将保留来自fork\u-master的文件版本是的,它们是。完全是为了再基地。
…---A---B---C1---C2---…---C10---D1---D2 develop, origin/develop
                           |
                     upstream/develop