问题:How can I remove a commit on GitHub?
我无法在我的项目中使用相同的解决方案。
我想通过命令提交30735f3d:
git rebase -i HEAD~2
* 823da1cf7976466da40a5720191d09b080e046d6 Merge branch 'hotfix#1-issue
|\
| * 71b732ef9ecbf36153ab2729cc78bc522341399e fixed: changed salary type f
|/
* be87e784da99fbad8b575b5433bb33a35954064c Merge branch 'dev'
|\
| * 90b23296a3a6c2883f2c434947da4896d8afef5c Merge branch 'issue#2240'
| |\
|/ /
| * 947b43b12763acbd0ca2733f0fd88e3882c086ab issue#2240:create user class
|/
* 30735f3d4884c4156a070f75dbc5ae3608f9c312 Merge branch 'dev'
|\
| * 88b06701fc4a66511da3096b2383c8c26ea2e203 added field salaryDefault,bo
| * d364b0b381ed099e48b614955996696dbe39bba4 added entity start salary
|/
* 4de63ced11d978e10f5c81cc23e743fbe06ea9cc Merge branch 'dev'
|\
| * f16c849b25028a376dbdf03b5d0aaee0b3966d74 setup persistence
|/
* cb88a650a26905d6a911706bda609162338c57ed init
在变种之后一些上述承诺仍然存在,例如修复:更改了工资类型f,问题#2240:创建用户类
* 12f20a44e3ea7eaf34ca62fb6a7a51f5729bcba1 fixed: changed salary type from int t
* 947b43b12763acbd0ca2733f0fd88e3882c086ab issue#2240:create user class
* 30735f3d4884c4156a070f75dbc5ae3608f9c312 Merge branch 'dev'
|\
| * 88b06701fc4a66511da3096b2383c8c26ea2e203 added field salaryDefault,bonus,tax
| * d364b0b381ed099e48b614955996696dbe39bba4 added entity start salary
|/
* 4de63ced11d978e10f5c81cc23e743fbe06ea9cc Merge branch 'dev'
|\
| * f16c849b25028a376dbdf03b5d0aaee0b3966d74 setup persistence
|/
* cb88a650a26905d6a911706bda609162338c57ed init
但我想要一个这样的结果:
* 30735f3d4884c4156a070f75dbc5ae3608f9c312 Merge branch 'dev'
|\
| * 88b06701fc4a66511da3096b2383c8c26ea2e203 added field salaryDefault,bonus,tax
| * d364b0b381ed099e48b614955996696dbe39bba4 added entity start salary
|/
* 4de63ced11d978e10f5c81cc23e743fbe06ea9cc Merge branch 'dev'
|\
| * f16c849b25028a376dbdf03b5d0aaee0b3966d74 setup persistence
|/
* cb88a650a26905d6a911706bda609162338c57ed init
现在我只有分公司主人。 或者那是关于--no-ff还是别的什么?
答案 0 :(得分:0)
如果您“想要的结果”的示例实际上是准确的,请git reset --hard 30735f3d4884c4156a070f75dbc5ae3608f9c312
并且您就在那里。
答案 1 :(得分:0)
如果您只想更改分支指向的提交,则需要重置。
git reset --hard 30735f3d4884c4156a070f75dbc5ae3608f9c312
但是,与原点相比,这会让你在历史上“落后”。因此,你不能简单地推动。你必须强行推动。
git push -f origin
这个问题就是这个问题。如果其他开发人员在本地拥有此分支的副本,他们每个人都必须点击他。
git fetch
git reset --hard origin/<branch>
如果他们在本地提交他们需要保留的内容会变得复杂,因为上面的命令意味着他们会失去那些。 修改已经与他人分享的历史记录通常是一个坏主意。
或者,如果这是其他开发人员已经与您共享的代码,您可能希望使用`git-revert'来“撤消”所有那些合并提交之后。
git revert 823da1cf7976466da40a5720191d09b080e046d6
git revert be87e784da99fbad8b575b5433bb33a35954064c
这将创建两个“恢复”提交,这将撤消那些合并提交所做的更改。让你的历史看起来像这样。
* ######################################## Revert be87e78 Merge branch 'dev'
* ######################################## Revert 823da1c Merge branch 'hotfix#1-issue
* 823da1cf7976466da40a5720191d09b080e046d6 Merge branch 'hotfix#1-issue
|\
| * 71b732ef9ecbf36153ab2729cc78bc522341399e fixed: changed salary type f
|/
* be87e784da99fbad8b575b5433bb33a35954064c Merge branch 'dev'
|\
| * 90b23296a3a6c2883f2c434947da4896d8afef5c Merge branch 'issue#2240'
| |\
|/ /
| * 947b43b12763acbd0ca2733f0fd88e3882c086ab issue#2240:create user class
|/
* 30735f3d4884c4156a070f75dbc5ae3608f9c312 Merge branch 'dev'
您可以推送,每个人都可以推送 - 它将与30735f3d4884c4156a070f75dbc5ae3608f9c312
中存在的代码状态相同。
重要强>
如果您选择还原合并提交,请注意实际发生的情况。如果要从还原的合并中重新引入更改,则需要还原还原提交。 Read this answer from me to a different question regarding reverting and merge commits.