如何将文件添加到git中的最后一次提交?

Sea*_*ene 253 git

有时在我提交之后,我发现我遗漏了一个文件,该文件也应该包含在提交中,但实际上并没有.我经常做的是再次提交.

git add the_left_out_file
git commit "include the file which should be added in the last commit"
Run Code Online (Sandbox Code Playgroud)

我认为这样做可能不是一个好主意,我想要做的只是在不添加提交的情况下包含文件.像这样的东西,

git add the_left_out_file
git add_staged_files_to_previous_commit
Run Code Online (Sandbox Code Playgroud)

可能吗?

Kon*_*is' 470

是的,有一个命令git commit --amend用于"修复"上次提交.

在你的情况下,它将被称为:

git add the_left_out_file
git commit --amend --no-edit
Run Code Online (Sandbox Code Playgroud)

--no-edit标志允许在不更改提交消息的情况下修改提交.

编辑:警告 你永远不应该修改已经推送到公共存储库的公共提交,因为修改的做法实际上是从历史记录中删除最后一次提交并创建新提交,其中包含来自该提交的组合更改以及在修改时添加的新提交.

  • 请注意,修改提交(无论是否进行消息编辑)都不会更改*提交日期*或*作者*。为了使时间和谁做了什么变得透明,我建议 `git commit --amend --no-edit --date=now --reset-author` (6认同)
  • 在执行提交之后,我在@ konrad-zeguis回答*中看到了EDIT ...如何才能撤消'git commit --amend --no-edit'? (3认同)
  • 如果你想推送到远程存储库,请执行此命令: **git push -f origin some_branch** [link](https://medium.com/@igor_marques/git-basics-adding-more-changes-to-your -最后提交-1629344cb9a8) (3认同)
  • 提醒一下,最后应该使用:git push --force **,因为这样您可以重写提交树 (2认同)

小智 18

如果您没有在远程推送更新,那么简单的解决方案是使用以下命令删除最后一次本地提交:git reset HEAD^.然后添加所有文件并再次提交.

  • `HEAD^` 是对当前分支上最新提交之前提交的引用。`HEAD` 是对当前分支上最新提交的引用。 (10认同)
  • ^代表-1,HEAD代表git中的当前位置指针。因此, HEAD^ 代表最新提交之前的 1 次提交。 (8认同)
  • 这不是一个好的答案,因为此命令不会将文件添加到上次提交中。它完全删除了要重做的最后一次提交,这不是一回事。 (3认同)
  • 妙招,穆罕默德!您可以在答案中添加有关“ HEAD ^”的简短说明吗? (2认同)
  • git commit --amend -m "你的新消息" (2认同)