Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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
放弃Github上被拒绝拉请求的Git提交_Git_Github - Fatal编程技术网

放弃Github上被拒绝拉请求的Git提交

放弃Github上被拒绝拉请求的Git提交,git,github,Git,Github,我已经完成了某人的项目并做出了一些承诺。我填写了一个pull请求,但它没有被接受(要么更改不可取,要么作者重写了功能以符合“他的风格”)。现在,我被我的本地fork卡住了,因为它有一些额外的提交,永远不会进入上游。我可以撤销更改集,但是我有两倍的额外提交,并且将不得不永远将它们推送出去。真难看 放弃这些没有人想要的承诺,让我的叉子回到上游,最好的方法是什么?我知道我可以完全删除fork并重新fork它,但这真的很麻烦,我正在做的任何其他工作都会丢失。返回主分支几步(假设要跳过三次提交),然后通过

我已经完成了某人的项目并做出了一些承诺。我填写了一个pull请求,但它没有被接受(要么更改不可取,要么作者重写了功能以符合“他的风格”)。现在,我被我的本地fork卡住了,因为它有一些额外的提交,永远不会进入上游。我可以撤销更改集,但是我有两倍的额外提交,并且将不得不永远将它们推送出去。真难看


放弃这些没有人想要的承诺,让我的叉子回到上游,最好的方法是什么?我知道我可以完全删除fork并重新fork它,但这真的很麻烦,我正在做的任何其他工作都会丢失。

返回主分支几步(假设要跳过三次提交),然后通过按-f重写github repo

git reset --hard HEAD~3
git push -f origin master

您可以将回购状态重置为较早的提交。首先确定要将回购重置为哪个承诺:

git log
要将回购重置为该状态,请执行以下操作:

git reset --hard <commit_hash>
我创建了一个分支来完成我所有的工作,例如:
feature
。当发出拉取请求时,我会从
功能
分支到
原始
分支执行拉取请求。如果pull请求被拒绝,如您的示例所示,您可以放弃该分支。如果您想进行更多的修改,只需从
master
创建另一个分支,并使用它进行修改

我也不会将任何本地更改提交或合并到
master
分支。我只使用
master
分支与
original\u repo
master
分支同步。例:

git checkout master
git fetch original_repo
git merge original_repo/master
这确保了
分支始终与原始回购的
分支同步。例如,如果拉取请求被接受并合并到中,当提取和合并发生时,本地
master
也将在原始回购中使用所有“已批准”的代码


基本上,使用
master
与原始回购协议的
master
同步,并在需要进行编辑时始终从master分支。将这些分支用于原始回购的pull请求。

您是否有机会在单独的(分叉的)分支中进行建议的修改?是的,这是一个非常可靠/明智的Git工作流建议,谢谢。使用
master
分支进行拉取请求只是在自找麻烦。
$ git remote
origin
original_repo
git checkout master
git fetch original_repo
git merge original_repo/master