拉取请求被拒绝时如何更新GitHub forked repo?

Ben*_*old 12 github git-rebase git-checkout

我在GitHub上分了一个回购并提交了拉取请求.该项目的维护者拒绝了拉取请求,但我们在论坛中找到了更好的解决方案.他们指示我使用替代更改创建另一个拉取请求.但是,我在GitHub上的存储库的分支现在已经过时了,因为自从我分叉以来,更新已经被推送到主仓库.此外,GitHub上的存储库还有一个额外的提交(我的拉取请求提交),它不应该存在,因为它不被接受作为项目的一部分.

我发现了这个问题:如何更新GitHub分叉存储库?

我按照说明操作,具体来说,我这样做了:

git remote add upstream git://github.com/fuel/core
git fetch upstream
Run Code Online (Sandbox Code Playgroud)

结果导致:

remote: Counting objects: 93, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 69 (delta 49), reused 40 (delta 20)
Unpacking objects: 100% (69/69), done.
From git://github.com/fuel/core
 * [new branch]      1.0/master -> upstream/1.0/master
 * [new branch]      1.1/master -> upstream/1.1/master
 * [new branch]      1.2/develop -> upstream/1.2/develop
 * [new branch]      1.2/master -> upstream/1.2/master
 * [new branch]      1.3/develop -> upstream/1.3/develop
 * [new branch]      1.3/master -> upstream/1.3/master
 * [new branch]      1.4/develop -> upstream/1.4/develop
 * [new branch]      1.4/master -> upstream/1.4/master
 * [new branch]      1.5/develop -> upstream/1.5/develop
 * [new branch]      1.5/master -> upstream/1.5/master
 * [new branch]      1.6/develop -> upstream/1.6/develop
 * [new branch]      feature/better-hmvc -> upstream/feature/better-hmvc
Run Code Online (Sandbox Code Playgroud)

好的,所以看起来一切都很好.我确定我在正确的分支上:

git checkout 1.6/develop
Already on '1.6/develop'
Run Code Online (Sandbox Code Playgroud)

字.好的,现在为此:

git rebase upstream/1.6/develop
First, rewinding head to replay your work on top of it...
Applying: prevent invalid XML node names
Run Code Online (Sandbox Code Playgroud)

等等......什么?为什么要应用"防止无效的XML节点名称"?这是项目维护者拒绝的拉取请求.我显然错过了"反叛"的真正含义.现在,如果我git status说:

# On branch 1.6/develop
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)

当我git log,我可以看到我的问题的一半已经解决.自我分叉以来已经进入项目的变化现在反映在我的git log.但是,最近的提交仍然是"防止无效的XML节点名称".我该如何消除它?

我试着查看最后一次对项目的提交:

git checkout 5f31a4df55e5b6ca1b2092534063a1fce4a32181
Run Code Online (Sandbox Code Playgroud)

但是,这使我处于一个独立的HEAD状态.它说我可以环顾四周,做出改变并提交它们.我不认为这就是我想要做的.我想我想要HEAD指向提交5f31a4df55e5b6ca1b2092534063a1fce4a32181.我下一步要做什么?

Sim*_*ias 9

git rebase将你的提交保留在你的分支机构.由于您的公关被拒绝,您想删除它并使您的master分支与之相同upstream/master.

如此,你想reset!

git checkout master
git reset --hard upstream/master
Run Code Online (Sandbox Code Playgroud)

那么你将拥有与上游主人完全相同的主人.然后,为您的新PR创建一个新分支,这样您就不会再遇到此问题.

  • 谢谢!我想重复一下,因为它对我很有帮助:**"然后,为你的新PR创建一个新分支,这样你就不会再遇到这个问题."** (2认同)