我知道如果我做了什么,我可以这样解除它:
get reset HEAD~1
Run Code Online (Sandbox Code Playgroud)
这将有效地"回归"一次提交.我的问题是我做了一个提交,然后是拉.事实上,我做了很多工作,添加了越来越多的代码.所以我最终得到了:
--> Other User Commit A <<-- WAS PUSHED
--> Other User Commit B <<-- WAS PUSHED
--> MY COMMIT <<---- This is what must be UNDONE, that was never pushed
--> Other User Commit E <<-- WAS PUSHED
--> Other User Commit F <<-- WAS PUSHED
Run Code Online (Sandbox Code Playgroud)
因此重置HEAD~1将简单地摆脱"其他用户提交A".但我只需要删除"MY COMMIT",这是从未被推过的.
关于如何摆脱我的这个提议的任何想法?
(仅供参考,发生的事情是我意外地提交了一个1.6 Gb的文件,并且无法弄清楚为什么push不起作用,但是继续工作并提取新的代码......但是从来没有推过这个直到我刚刚意识到既然这个大文件不在提交......)
任何帮助将不胜感激?
UPDATE
最好的解决方案是允许我"取消添加"我添加的文件.
既然你从未推动过这个分支,那么你应该很好地重写历史并删除错误的提交.为此,您可以在分支上执行交互式rebase:
git rebase -i HEAD~5
Run Code Online (Sandbox Code Playgroud)
这将显示一个屏幕,显示您分支历史记录中的最后5次提交.它应该看起来像这样:
pick dl3n2l2 Other User Commit A
pick be7mme2 Other User Commit B
pick loc83ns MY COMMIT
pick af8uo31 Other User Commit E
pick dl983md Other User Commit F
Run Code Online (Sandbox Code Playgroud)
现在删除包含您标记的提交的行MY COMMIT.只需从文件中删除该行,保存并关闭即可.这应该有效地从您的分支中删除错误的提交,您现在应该能够推送到远程.
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |