我在本地分叉的repo上做了一堆提交,当它们完成时我把它们推到了上游(github)。我错误地认为当我推动时我有机会崩溃提交但是没有,它推动(我正在使用TortoiseGit)。
有没有办法将提交崩溃为现在他们在GitHub上?我在创建拉取请求时尝试了它的样子,并且在该过程中它仍然列出了所有提交,没有选项可以折叠它们或提供单一的全部注释。
如果没有选项,是否可以完全放弃我的fork,重新分叉然后重新提交为单个提交然后执行pull请求?
我所指的回购是:https://github.com/samuelneff/DefinitelyTyped
我看了警告“ Do not rebase commits that you have pushed to a public repository ”,所以我正在寻找其他选择。谢谢!
答案 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并不是一件坏事。只要你是唯一一个从回购中推/拉的人,它就相对安全了。