推送上游(github)后崩溃git提交?

时间:2013-12-31 19:10:26

标签: git github rebase

我在本地分叉的repo上做了一堆提交,当它们完成时我把它们推到了上游(github)。我错误地认为当我推动时我有机会崩溃提交但是没有,它推动(我正在使用TortoiseGit)。

有没有办法将提交崩溃为现在他们在GitHub上?我在创建拉取请求时尝试了它的样子,并且在该过程中它仍然列出了所有提交,没有选项可以折叠它们或提供单一的全部注释。

如果没有选项,是否可以完全放弃我的fork,重新分叉然后重新提交为单个提交然后执行pull请求?

我所指的回购是:https://github.com/samuelneff/DefinitelyTyped

我看了警告“ Do not rebase commits that you have pushed to a public repository ”,所以我正在寻找其他选择。谢谢!

2 个答案:

答案 0 :(得分:3)

你不需要放弃你的分叉来完成你想要的东西。

重写历史记录的唯一危险来自其他人承诺的历史记录,您可以查看in the network data on GitHub。没有人根据你的提交做出提交,所以你没事。

  • 将您分叉的存储库添加到您的遥控器:git remote add <name> <repo url>
    • 在您的情况下:git remote add borisyankov https://github.com/borisyankov/DefinitelyTyped.git
  • git rebase <upstream>/master,其中upstream是您在上面命名的遥控器。
  • git push --force origin master强制更新您的master分支。
如果您的本地origin master已经跟踪master,则不需要

origin/master,您可以使用git branch -vv进行检查(跟踪分支位于{{1} }})

  

[ ]

为了安全起见,您可以从* master <HEAD commit hash> [origin/master] <HEAD commit message>之外的新分支执行上述所有操作(您不需要master推送),将其推送到GitHub,打开拉取请求看看,然后当您感到安全时,请执行--force上的步骤。

经验:当我知道没有其他人在使用我的提交时,我经常在自己的项目中重写历史记录。我不再害怕master

答案 1 :(得分:1)

如果您绝对需要合并提交,则git rebase后跟git push --force是您唯一的选择。因为这看起来像是一个单独的仓库,所以做一个rebase并不是一件坏事。只要你是唯一一个从回购中推/拉的人,它就相对安全了。