0

我曾经使用gitx来暂存更改以进行提交,但我已经切换到纯粹的终端工作流程 + Fugitive.vim。我真正怀念 gitx 的一个特性是能够在之前的提交中进行调整。例如,如果在之前的提交中添加了某个部分,但不应该添加,那么 gitx 可以很容易地拉出该部分并修改之前的提交。

我目前进行此类更改的工作流程是:

  1. git show
  2. 复制提交信息
  3. git reset --soft HEAD^
  4. 使用 Fugitive 或git add -i做任何我想做的改变
  5. git commit
  6. 粘贴之前复制的提交信息
  7. 确认

以前方便的两步过程现在变得非常麻烦。还有其他我想念的方法吗?

git commit --amend -CHEAD --interactive对我来说似乎很有希望,但它似乎根本不起作用。

4

2 回答 2

1

为了完成相同的任务,我使用以下方法:


# 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

请告诉我它是否也适合你。

于 2021-06-16T11:08:19.473 回答
0

git 命令行对编辑文件一无所知,因此您总是需要两个步骤:进行更改,并将该更改应用于某些提交。

如果您要修改的提交是分支上的最新提交,您可以使用以下两个选项git commit

--amend: 通过创建一个新的提交来替换当前分支的提示......来自原始提交的消息被用作起点,而不是一个空消息

--no-edit:使用选定的提交消息而不启动编辑器。例如, git commit --amend --no-edit 修改提交而不更改其提交消息。

如果您想更深入地修改历史提交,则需要使用git rebase --interactive该提交的命令并将其从“pick”更改为“edit”。然后你做同样的事情,但是一旦你完成了,你运行git rebase --continue,以便 git 重放在那之后的更改。

于 2021-06-16T13:49:41.017 回答