我对git很新,并且想知道这样的事情是否可行?
>git log --pretty=oneline --abbrev-commit
2f05aba Added new feature
3371cec Fixed screw up <-- I want to remove this
daed25c Screw up <-- and remove this.
e2b2a84 First. So it's like they never happend.
Run Code Online (Sandbox Code Playgroud)
这可能吗?
Sha*_*hur 79
如果你真的希望删除它们(从历史中擦除它们,再也不会被看到),你可以
运行rebase:
git rebase -i HEAD~4
Run Code Online (Sandbox Code Playgroud)
然后,只需删除(或注释掉)与您要删除的提交相对应的行,如下所示:
pick 2f05aba ... #will be preserved
#pick 3371cec ... #will be deleted
#pick daed25c ... #will be deleted
pick e2b2a84 ... #will be preserved
Run Code Online (Sandbox Code Playgroud)
Dev*_*eve 58
这是可能的git rebase.请尝试以下方法
git rebase -i HEAD~4
Run Code Online (Sandbox Code Playgroud)
然后,按照编辑器中的交互式说明进行操作.在第一步中,你"压缩"提交.它应该看起来像这样:
pick 2f05aba ... will be preserved
squash 3371cec ... will be squashed with daed25c
squash daed25c ... will be squashed with e2b2a84
pick e2b2a84 .. will contain this and 3371cec and daed25c
Run Code Online (Sandbox Code Playgroud)
在第二步中,您可以编辑提交消息.
rus*_*oue 12
要完全删除提交,现在有一个drop用于 git 交互式变基的新选项。第一次运行:
git rebase -i HEAD~4
Run Code Online (Sandbox Code Playgroud)
然后替换pick用drop的提交(S)被丢弃:
pick 2f05aba ... #will be preserved
drop 3371cec ... #will be dropped
drop daed25c ... #will be dropped
pick e2b2a84 ... #will be preserved
Run Code Online (Sandbox Code Playgroud)
这对我来说在 Fedora 上有以下版本:
$ git version
git version 2.21.0
Run Code Online (Sandbox Code Playgroud)
当您想要在单个哈希下生成合并提交的列表时,Squash 非常有用,但如果您希望进行三个单独的提交并获得看起来像是单个提交的最终输出,我建议fixup
git rebase -i HEAD~4
pick 2f05aba ... will be preserved
fixup 3371cec ... will be merged with 2f05aba (message lost)
fixup daed25c ... will be merged with 3371cec (message lost)
pick e2b2a84 .. will be preserved
Run Code Online (Sandbox Code Playgroud)
您可以在交互式 rebase UI 的命令列表中找到更多信息。
| 归档时间: |
|
| 查看次数: |
59360 次 |
| 最近记录: |