Git:如何在拉取请求失败后撤消我的更改?

时间:2011-06-19 16:27:06

标签: git github

我对Github上的软件包进行了一些更改,然后发送了一个pull请求。作者决定不合并我的更改,所以我留下了包的不同副本。如何还原我的更改并使用新代码创建另一个拉取请求但不推送被拒绝的代码?

3 个答案:

答案 0 :(得分:3)

从你的主人头,上游不想要

$ git checkout -b myunwantedbranch
$ git checkout master
$ git reset --hard upstream/master

您的本地更改现在位于分支myunwantedbranch上,而您的主人与上游相同。 (实际上,您正在为此分支创建正确的名称,然后将所有不需要的东西从主分支中倒回。)

注意 - 我是一个git newb,这是我在面对一个几乎相同的问题时完成任务的方式 - 如果它错了,请请纠正我。

答案 1 :(得分:1)

假设原始存储库(您分叉的存储库)与名为上游的远程磁盘保持一致,您可以

git checkout upstream/master
git checkout -b <new-branch>

因此,您将拥有一个名称具有“起始点”的新分支,该分支是原始存储库的主分支所在的状态。


如果原始存储库已更新,则可能需要先进行提取

git fetch upstream master
git checkout FETCH_HEAD  # or upstream/master
git checkout -b <new-branch>

此外,如果你不关心你的变化,并想完全摆脱它们,你可以简单地运行

git reset --hard upstream/master  # go back to where you were 
                                  # before and changes were made
git pull upstream                 # update your repository

请注意,最后一个代码段会删除您的更改,但它们会丢失。所以只有当你知道自己在做什么时才使用它。


编辑:
我刚刚看到了Dogbert的评论。 That link描述了如何获取上游主分支并从中获取更改。我解释了如何创建一个与上游主分支同步的新分支。所以,我现在还不确定你需要什么。

答案 2 :(得分:0)

我有本地提交,我想要推送到我的存储库,但后来我意识到我仍然有旧的提交在之前的pull请求中被拒绝所以我需要在推送之前撤消它们。

我做了什么:

  1. 创建新分支git checkout -b reverting_changes_branch
  2. 运行git reset --hard upstream/master
  3. 使用-f强制推送更改,例如git push -f origin master
  4. 返回原来的分支并推送我的提交
  5. 这是我安全的做法,也许有一种更简单的方法。

相关问题