选择git commit

时间:2018-03-05 16:16:18

标签: git

每当我想重写一个提交只保留差异的一部分时,我就会经历这个(从头顶开始,有些东西可能会关闭):

git rebase -i COMMIT~1

然后选择e进行修改。

git reset HEAD~1  
git add -p # select the part I want
git checkout HEAD -- :/ # discard changes not selected
git stash
git reset COMMIT
git checkout HEAD~1 -- :/
git commit -u --amend
git stash pop
git commit --amend
git rebase --continue

显然,这是一个糟糕的工作流程。问题是重置允许我选择我想要的更改,但是通过移动HEAD我停止能够修改相关提交。

我试图做一个git checkout HEAD~1 -- :/一旦我想要修改并选择反向差异,但它只是让人感到困惑。

什么是更好的选择?

1 个答案:

答案 0 :(得分:2)

如果对上一次提交进行软重置,则可以在不进行交互式rebase的情况下重做上次提交:

git reset head~1 --soft

这也可以轻松将单个提交转换为多个较小的提交。

但是,这可能只适用于重做 last 提交。如果您为多次提交(即head~2)执行此操作,则会在暂存区域中收集过去两次提交的所有更改。这仍然很有用,但与您描述的所需工作流程不同。