如何解决在不重新创建提交的情况下对之前的提交进行调整
我曾经使用 gitx 来暂存更改以进行提交,但我已经切换到纯粹的终端工作流 + Fugitive.vim。不过,我真正想念 gitx 的一个功能是能够在之前的提交中进行调整。例如,如果在之前的提交中添加了某个部分,但不应该添加,则 gitx 可以很容易地提取该部分并修改之前的提交。
我目前进行此类更改的工作流程是:
git show
- 复制提交信息
git reset --soft HEAD^
- 使用 Fugitive 或
git add -i
进行我想做的任何更改 git commit
- 粘贴之前复制的提交信息
- 确认
以前方便的两步过程现在变得非常麻烦。还有其他方法可以做到这一点吗?
git commit --amend -CHEAD --interactive
对我来说似乎很有希望,但它似乎根本不起作用。
解决方法
为了完成相同的任务,我使用以下方法:
# Find the starting commit where I need to place changes
git log --oneline --graph --decorate
# Ask for editing commit(s)
git rebase -i {{commit-hash-from-log-history}}
# Enter "edit" for commit(s) you want change,then save
# Add,Edit or Remove files
# Finalize editing
git rebase --continue
# Or,if you want to abort
git rebase --abort
请告诉我它是否也适合您。
,git 命令行对编辑文件一无所知,因此您总是有两个步骤:进行更改,然后将该更改应用于某个提交。
如果您要修改的提交是分支上的最新提交,您可以使用 the options to git commit
中的两个:
--amend:通过创建一个新的提交来替换当前分支的提示......使用来自原始提交的消息作为起点,而不是一条空消息
--no-edit:在不启动编辑器的情况下使用选定的提交消息。例如, git commit --amend --no-edit 修改提交而不更改其提交消息。
如果你想修改更深入的历史提交,你需要使用 git rebase --interactive
并将针对提交的命令从“pick”更改为“edit”。然后你做同样的事情,但是一旦你完成,你运行 git rebase --continue
以便 git 在那个点之后重播更改。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。