在GitHub for Windows中撤消Git合并

在GitHub for Windows中撤消Git合并,git,merge,git-merge,github-for-windows,Git,Merge,Git Merge,Github For Windows,我需要撤消在GitHub for Windows中启动的合并 它已同步到单个存储库,我尝试同步它,但收到冲突错误消息,因此我犯了错误,将“合并远程跟踪分支”源/pp图表“合并到“pp图表”中 我想撤销我所做的一切,我该怎么做?git的好处是,只需创建存储库的新副本,您就可以非常轻松地进行实验。我希望您必须转到命令行来完成您想要的操作 我不是git专家,所以可能会在这里被枪杀,但如果我是在你的情况下,我会这样做: 在新目录中创建存储库的新副本git clone 在新副本中,查看历史记录,找到要作

我需要撤消在GitHub for Windows中启动的合并

它已同步到单个存储库,我尝试同步它,但收到冲突错误消息,因此我犯了错误,将“合并远程跟踪分支”源/pp图表“合并到“pp图表”中


我想撤销我所做的一切,我该怎么做?

git的好处是,只需创建存储库的新副本,您就可以非常轻松地进行实验。我希望您必须转到命令行来完成您想要的操作

我不是git专家,所以可能会在这里被枪杀,但如果我是在你的情况下,我会这样做:

  • 在新目录中创建存储库的新副本
    git clone
  • 在新副本中,查看历史记录,找到要作为新头(即合并前的头)的提交的SHA哈希。我发现使用gitk GUI工具最容易做到这一点。
    gitk
    在命令提示符下
  • 一旦您有了要作为新头的提交的SHA散列,就可以在该点重置本地回购
    git reset--hard
  • 检查本地repo以确保它是您想要的(即在ide中打开它,检查文件系统并执行
    gitk
    并检查历史记录是否与您期望的一样)
  • 推送到github,强制将本地版本置于现有版本之上
    git推送原点-f
  • 在其他地方再次克隆github repo,以检查一切是否正常。如果是,请删除您不想要的loacl repo,然后离开。如果不是,则您仍然保留您的(borked)原件,如果需要,可以将其推到顶部
这将使github版本看起来就像您从未做过任何更改一样,但会丢失数据(您仍然可以从以前的克隆中恢复),因此请确保强制推送的版本是正确的


可能不是最好的解决方案,但我认为这就是我要做的。

git的优点是,只需制作存储库的新副本,您就可以非常轻松地进行实验。不过,我希望您必须转到命令行来做您想做的事情

我不是git专家,所以可能会在这里被枪杀,但如果我是在你的情况下,我会这样做:

  • 在新目录中创建存储库的新副本
    git clone
  • 在新副本中,查看历史记录,找到要作为新头(即合并前的头)的提交的SHA哈希。我发现使用gitk GUI工具最容易做到这一点。
    gitk
    在命令提示符下
  • 一旦您有了要作为新头的提交的SHA散列,就可以在该点重置本地回购
    git reset--hard
  • 检查本地repo以确保它是您想要的(即在ide中打开它,检查文件系统并执行
    gitk
    并检查历史记录是否与您期望的一样)
  • 推送到github,强制将本地版本置于现有版本之上
    git推送原点-f
  • 在其他地方再次克隆github repo,以检查一切是否正常。如果是,请删除您不想要的loacl repo,然后离开。如果不是,则您仍然保留您的(borked)原件,如果需要,可以将其推到顶部
这将使github版本看起来就像您从未做过任何更改一样,但会丢失数据(您仍然可以从以前的克隆中恢复),因此请确保强制推送的版本是正确的


可能不是最好的解决方案,但我认为这是我应该做的。

如果它被推,我的建议是从现在开始坚持恢复

  • Git还原
如果您的合并提交如下:

Merge branch 'pp-chart'
git revert -m 1 [hash of the merge commit]
git revert --no-commit [first hash]
git revert --no-commit [second hash]
git revert --no-commit [third hash]
git commit -m "my message"
您可以按如下方式还原合并(及其所有提交):

Merge branch 'pp-chart'
git revert -m 1 [hash of the merge commit]
git revert --no-commit [first hash]
git revert --no-commit [second hash]
git revert --no-commit [third hash]
git commit -m "my message"
如果没有合并提交(在快进合并的情况下),则可以在结束时将它们全部还原,但仅提交如下:

Merge branch 'pp-chart'
git revert -m 1 [hash of the merge commit]
git revert --no-commit [first hash]
git revert --no-commit [second hash]
git revert --no-commit [third hash]
git commit -m "my message"
使用revert,您不会因为提交历史保持线性而失去任何风险。您始终可以还原还原,因为它只是原始提交的还原差异

  • 吉特再基地
另一种方法是进行重基交互,删除您不再需要的提交行,但这些行将丢失,所以请复制当前分支,以便稍后恢复

然后使用以下命令:

git rebase --interactive [hash of the commit prior to those you want to remove]
它将打开一个编辑器,您必须在其中删除您不想要的提交条目。请谨慎使用最后一个解决方案,但如果您没有信心,也许可以从“还原”开始

  • Git重设硬
如果您的历史记录中刚刚发生错误提交,您还可以使用以下命令及时返回:

git reset --hard [the last good commit you want]

再次提醒您,在执行重置时,您所做的更改将丢失在分支中!

如果它被按下,我的建议是从现在开始坚持还原

  • Git还原
如果您的合并提交如下:

Merge branch 'pp-chart'
git revert -m 1 [hash of the merge commit]
git revert --no-commit [first hash]
git revert --no-commit [second hash]
git revert --no-commit [third hash]
git commit -m "my message"
您可以按如下方式还原合并(及其所有提交):

Merge branch 'pp-chart'
git revert -m 1 [hash of the merge commit]
git revert --no-commit [first hash]
git revert --no-commit [second hash]
git revert --no-commit [third hash]
git commit -m "my message"
如果没有合并提交(在快进合并的情况下),则可以在结束时将它们全部还原,但仅提交如下:

Merge branch 'pp-chart'
git revert -m 1 [hash of the merge commit]
git revert --no-commit [first hash]
git revert --no-commit [second hash]
git revert --no-commit [third hash]
git commit -m "my message"
使用revert,您不会因为提交历史保持线性而失去任何风险。您始终可以还原还原,因为它只是原始提交的还原差异

  • 吉特再基地
另一种方法是进行重基交互,删除您不再需要的提交行,但这些行将丢失,所以请复制当前分支,以便稍后恢复

然后使用以下命令:

git rebase --interactive [hash of the commit prior to those you want to remove]
它将打开一个编辑器,您必须在其中删除您不想要的提交条目。请谨慎使用最后一个解决方案,但如果您没有信心,也许可以从“还原”开始

  • G