Git基础篇(二十三)——amend指令

前言:
   amend指令是常用指令,用于对最近一次提交记录进行修改,但指令的使用应该小心,本篇文章详细介绍amend的用法。

1 amend指令介绍

  该指令用于对最近一次 commit 记录进行再次修改提交,不会生成新的提交记录,但会更新git的Commit ID。原提交记录可通过 git reflog 查看。

Git基础篇(二十三)——amend指令

前言:
   amend指令是常用指令,用于对最近一次提交记录进行修改,但指令的使用应该小心,本篇文章详细介绍amend的用法。

1 amend指令介绍

  该指令用于对最近一次 commit 记录进行再次修改提交,不会生成新的提交记录,但会更新git的Commit ID。原提交记录可通过 git reflog 查看。

git_reflog.png

  什么情况下应该应该对最近一次提交记录进行修改?比如忘记添加或多添加了一些文件,对文件内容需要重新修改,或者是对提交的log进行修改,此时应该重新提交。

2 amend修改分支最新提交

2.1 修改文件、目录或log

  若需要重新修改文件,则先在本地工作区直接修改,然后执行 git add --all 将修改添加到暂存区,若不需要修改文件则无需执行此步骤。
  执行指令 git commit --amend 进行重新提交,输入指令后会跳转到log输入界面并显示最新log描述,若需修改log描述则直接进行修改,最后输入 :wq 退出。
  此时已完成对最近一次提交记录的修改并重新提交,输入指令 git log 可看到分支最新的提交记录已被修改。

2.2 修改作者或邮件信息

  使用指令 git commit --amend --author "Name <Email>" 对分支最新提交记录进行修改,修改其用户名和邮箱地址,注意这里的 ""<> 不能省略。

3 amend修改push到远程服务器

  amend指令用于对本地提交记录进行二次修改提交,修改记录还需要同步到远程服务器。可分为以下两种情况。

  • 被修改的提交记录未push到远程分支;
  • 被修改的提交记录已push到远程分支;

3.1 被修改的提交记录未push到远程分支

  这种情况直接在本地完成对分支最新提交记录的修改,然后通过指令 git push 推送到远程服务器即可,不会产生冲突。

3.2 被修改的提交记录已push到远程分支;

  由于本地分支最新的提交记录已经推送到远程服务器,若对本地分支最新提交记录进行amend修改再 push 则会报错,因为在本地纯在一个从A修改而来的B节点,而远程分支存在一个从A修改而来的C节点,把B推到远程服务器则出现冲突,提示更新被拒,因为当前分支的尖端滞后。

error.png

  需要使用 git push --force 指令强制推送,使得本地的记录覆盖掉远程服务器的记录,但 --force 执行有风险。

  什么情况下应该应该对最近一次提交记录进行修改?比如忘记添加或多添加了一些文件,对文件内容需要重新修改,或者是对提交的log进行修改,此时应该重新提交。

2 amend修改分支最新提交

2.1 修改文件、目录或log

  若需要重新修改文件,则先在本地工作区直接修改,然后执行 git add --all 将修改添加到暂存区,若不需要修改文件则无需执行此步骤。
  执行指令 git commit --amend 进行重新提交,输入指令后会跳转到log输入界面并显示最新log描述,若需修改log描述则直接进行修改,最后输入 :wq 退出。
  此时已完成对最近一次提交记录的修改并重新提交,输入指令 git log 可看到分支最新的提交记录已被修改。

2.2 修改作者或邮件信息

  使用指令 git commit --amend --author "Name <Email>" 对分支最新提交记录进行修改,修改其用户名和邮箱地址,注意这里的 ""<> 不能省略。

3 amend修改push到远程服务器

  amend指令用于对本地提交记录进行二次修改提交,修改记录还需要同步到远程服务器。可分为以下两种情况。

  • 被修改的提交记录未push到远程分支;
  • 被修改的提交记录已push到远程分支;

3.1 被修改的提交记录未push到远程分支

  这种情况直接在本地完成对分支最新提交记录的修改,然后通过指令 git push 推送到远程服务器即可,不会产生冲突。

3.2 被修改的提交记录已push到远程分支;

  由于本地分支最新的提交记录已经推送到远程服务器,若对本地分支最新提交记录进行amend修改再 push 则会报错,因为在本地纯在一个从A修改而来的B节点,而远程分支存在一个从A修改而来的C节点,把B推到远程服务器则出现冲突,提示更新被拒,因为当前分支的尖端滞后。

Git基础篇(二十三)——amend指令

前言:
   amend指令是常用指令,用于对最近一次提交记录进行修改,但指令的使用应该小心,本篇文章详细介绍amend的用法。

1 amend指令介绍

  该指令用于对最近一次 commit 记录进行再次修改提交,不会生成新的提交记录,但会更新git的Commit ID。原提交记录可通过 git reflog 查看。

git_reflog.png

  什么情况下应该应该对最近一次提交记录进行修改?比如忘记添加或多添加了一些文件,对文件内容需要重新修改,或者是对提交的log进行修改,此时应该重新提交。

2 amend修改分支最新提交

2.1 修改文件、目录或log

  若需要重新修改文件,则先在本地工作区直接修改,然后执行 git add --all 将修改添加到暂存区,若不需要修改文件则无需执行此步骤。
  执行指令 git commit --amend 进行重新提交,输入指令后会跳转到log输入界面并显示最新log描述,若需修改log描述则直接进行修改,最后输入 :wq 退出。
  此时已完成对最近一次提交记录的修改并重新提交,输入指令 git log 可看到分支最新的提交记录已被修改。

2.2 修改作者或邮件信息

  使用指令 git commit --amend --author "Name <Email>" 对分支最新提交记录进行修改,修改其用户名和邮箱地址,注意这里的 ""<> 不能省略。

3 amend修改push到远程服务器

  amend指令用于对本地提交记录进行二次修改提交,修改记录还需要同步到远程服务器。可分为以下两种情况。

  • 被修改的提交记录未push到远程分支;
  • 被修改的提交记录已push到远程分支;

3.1 被修改的提交记录未push到远程分支

  这种情况直接在本地完成对分支最新提交记录的修改,然后通过指令 git push 推送到远程服务器即可,不会产生冲突。

3.2 被修改的提交记录已push到远程分支;

  由于本地分支最新的提交记录已经推送到远程服务器,若对本地分支最新提交记录进行amend修改再 push 则会报错,因为在本地纯在一个从A修改而来的B节点,而远程分支存在一个从A修改而来的C节点,把B推到远程服务器则出现冲突,提示更新被拒,因为当前分支的尖端滞后。

error.png

  需要使用 git push --force 指令强制推送,使得本地的记录覆盖掉远程服务器的记录,但 --force 执行有风险。

  需要使用 git push --force 指令强制推送,使得本地的记录覆盖掉远程服务器的记录,但 --force 执行有风险。