如何"git reset --soft HEAD ^"单个文件?

Rhi*_*non 6 git

当我在交互式rebase期间拆分提交时,我经常想从最后一次提交中提取特定文件.

我目前的流程是

  1. 将最后一次提交消息复制到我的剪贴板,
  2. git reset --soft HEAD ^(撤消上次提交,暂停更改)
  3. 我想要提取的Unstage文件
  4. 重新提交(粘贴在复制的提交消息中)
  5. 添加/提交其余文件
  6. 继续使用rebase

如果我可以软复位特定文件,我觉得这会更简单.

mel*_*ish 9

你想做git checkout $COMMIT_HASH some_file.ext什么?

您可以使用它将文件恢复到以前的状态,然后git将此更改发布.

  • 不,签出单个文件不会清除您的其他更改。它只是恢复该一个文件。 (2认同)

Emi*_*yan 7

这似乎做你想要的:

git reset [-q] [commit] [--] paths…此表单将所有索引条目重置paths为其状态commit.(它不会影响工作树,也不会影响当前分支.)

这意味着git reset与git add相反.