从上一个git commit提取块,而无需重新提交原始提交

时间:2019-02-22 17:11:23

标签: git

假设我有一个提交,我意识到我想从中提取一小块并将该小块作为单独的提交来提交。

我已经知道许多使用多个命令执行此操作的方法,一个示例是:

$ `git reset @^`
$ `git add -p`    # Stage all but the small chunks I want to extract
$ `git commit`    # Commit original (without the small chunks)
$ `git commit -a` # Commit the remaining chunks as a new commit

问题是,我想执行而不需要手动暂存并重新提交第一次提交。显然,提交哈希会改变,但是我想避免不得不键入命令来暂存和提交初始提交。

换句话说,理想情况下,我正在寻找一个让我立刻使用的git命令: -从最后一次提交中交互式选择块 -从提交中删除这些块(保留原始提交消息) -将这些块放入索引中,以便我可以提交

这样的命令存在吗?

1 个答案:

答案 0 :(得分:2)

不。我认为最快捷的方法是从列表中删除一个命令:

git reset @^
git commit -p
git commit -a

但是,从您在评论中的评论来看,我认为您可能会发现有帮助的另一件事是git reset -p @^-它显示的功能块是相反的,有时可能会有些混乱,但这可以让您有选择地取消更改从您的上一次提交开始,启用了这种工作流程:

git reset -p @^
# potentially more wrangling
git commit --amend
git commit -a