Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.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

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_Push_Rebase_Git Fork - Fatal编程技术网

Git在上游主机上重新设置分叉分支的基础

Git在上游主机上重新设置分叉分支的基础,git,github,push,rebase,git-fork,Git,Github,Push,Rebase,Git Fork,Github上的某个用户有一个具有单个主分支的存储库。我已将该存储库转移到我自己的帐户中。我在自己的分叉存储库上创建了一个新分支,并对其进行了一些更改 上游用户已提交对其主服务器的更改。我希望用这些更改更新我的主机。此外,如果我正确理解了rebase,我希望rebase我在该主机上的分支。我不想与master合并,因为我还没有完成分支的开发。注意:上游更改的文件与我在分支中更改的文件不同,因此不应存在冲突 我尝试了以下方法: 我将上游用户的更改拉入我的本地回购:git拉入上游主用户 I推送将本地

Github上的某个用户有一个具有单个主分支的存储库。我已将该存储库转移到我自己的帐户中。我在自己的分叉存储库上创建了一个新分支,并对其进行了一些更改

上游用户已提交对其主服务器的更改。我希望用这些更改更新我的主机。此外,如果我正确理解了
rebase
,我希望
rebase
我在该主机上的分支。我不想与master合并,因为我还没有完成分支的开发。注意:上游更改的文件与我在分支中更改的文件不同,因此不应存在冲突

我尝试了以下方法:

将上游用户的更改拉入我的本地回购:
git拉入上游主用户

I推送将本地主控更改为分叉主控:
git推送原始主控更改

I在我的本地主机上重新设置我的本地分支:
git签出我的分支

git重新设置主机

我试图将我的重定基本机分支推送到我的分叉分支:
git推送到原始mybranch

但是,我得到以下错误:

To https://github.com/myusername/myforkedrepository.git
 ! [rejected]        mybranch -> mybranch (non-fast-forward)
error: failed to push some refs to 'https://github.com/myusername/myforkedrepository.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
请注意,
origin
是我的分叉存储库,
upstream
是原始存储库

stackoverflow上有一个类似的问题,建议使用一种稍微简单的方法:

git fetch upstream
git rebase upstream/master
这没有给出任何错误,但也没有将任何内容推送到我的远程fork。在尝试了上述方法后,我再次尝试

git push origin mybranch
但同样的错误依然存在


我该如何做我想做的事?

这是因为在此之前您已经发布了您的
mybranch
分支

解决办法很简单:就是不要。你想改变出版的历史,这从来不是一个好主意!这可能会给已经基于您的public
mybranch
branch的其他开发人员带来非常难看的bug


一种技术解决方案是:
git-push——强制原始mybranch
或删除远程分支,然后使用
git-push-origin:mybranch
git-push-origin-mybranch


但是如果mybranch已经发布,您就不应该这样做。

我就是这样理解您的场景的:

[upstream repo] ==> [forked repo] <==> [local repo] master master master mybranch [上游回购]==>[分岔回购][本地回购] 大师 我的分行 箭头指示提交的方向流

鉴于以上所述,您已经询问了如何实现所需的开发流程,使您的更改始终处于首位

总的来说,如果上游主回购协议要纳入mybranch主题分支的变更,那么分叉回购协议和本地回购协议的主回购协议都不可避免地偏离上游主回购协议

但是,当更改完全不相交时,正如您在问题中概述的那样,您确实可以在合并或拉取时通过重定基址和快进将更改集保持在顶部

0] local master $ branch mybranch off master 1] fork master $ git pull --rebase 2] local master $ git pull --rebase 3] local mybranch $ commit commit commit 4] local mybranch $ git rebase master 0]本地主机$分支mybranch脱离主机 1] fork master$git pull--重设基础 2] 本地主控$git pull--重新基址 3] 本地mybranch$commit 4] 本地mybranch$git重新基础主控 在开发流程中,根据需要重复1-4次或仅重复3-4次。当您准备将您的工作发布到forked repo master时,上游master和forked master将不同步,但只要您遵循1-4,您就应该能够永远保持您的更改

5] local master $ git merge --ff-only mybranch 6] local master $ git push origin 5] 本地主机$git合并--仅ff mybranch 6] 本地主机$git推送源 然后根据需要重复1-4次


一句警告的话。为了实现这一点,您可能需要将您的分支(或者可能重新克隆您的回购)重置为“干净”状态,您尚未合并和/或将mybranch上的任何更改推送到本地或分支主服务器

那我该怎么做呢?我想继续处理我的分支,但我想处理上游的最新更新。只需合并最新的更改。哦,我可以将
master
合并到
mybranch
而不是反之亦然吗?我真的鼓励你阅读git教程!好的开始点:gitready.com!你能提供你的.git/config吗?