Git基础篇(十四)——Git修正提交

前言:
  有时候git的提交存在缺陷,想要重新提交,想在最新的提交上修正这个缺陷然后重新提交,不需要为其在分支路线上生成一个节点,这时候可以使用amend指令。

1 修改最新提交的运用场景

  有时候我们最新的commit发现存在某些问题,需要修改后重新提交,这时候有两种解决思路,通过 git reset HEAD^ 退回到上一个版本然后重新提交,或者通过 git commit --amend 修改最新的提交。建议使用第二种方式在修改最新的提交,这样可以保持分支上的节点尽可能的“干净”。
  以下几种情况会使得我们想要去修改最新提交。

  • 需要修改commit message;
  • 需要删除或新增文件;
  • 需要修改文件内容;

2 amend使用演示

  只要满足以上三种的任一一种情况就可以修改最新提交,下面演示同时对这三种情况进行最新提交的修改。
  我们在github上创建一个仓库用于测试,将其clone到本地。我们新增两个文件a.txt、b.txt。
  将其增加到暂存区。

1
2
3
4
5
6
7
git add --all
````

  将其添加到本地仓库。

```git
git commit -m "不满意的提交"

  将其推到远程仓库。

1
git push

  我们查看这次提交的commit ID,等下重新提交后进行对比。

1
git log

Git基础篇(十四)——Git修正提交

前言:
  有时候git的提交存在缺陷,想要重新提交,想在最新的提交上修正这个缺陷然后重新提交,不需要为其在分支路线上生成一个节点,这时候可以使用amend指令。

1 修改最新提交的运用场景

  有时候我们最新的commit发现存在某些问题,需要修改后重新提交,这时候有两种解决思路,通过 git reset HEAD^ 退回到上一个版本然后重新提交,或者通过 git commit --amend 修改最新的提交。建议使用第二种方式在修改最新的提交,这样可以保持分支上的节点尽可能的“干净”。
  以下几种情况会使得我们想要去修改最新提交。

  • 需要修改commit message;
  • 需要删除或新增文件;
  • 需要修改文件内容;

2 amend使用演示

  只要满足以上三种的任一一种情况就可以修改最新提交,下面演示同时对这三种情况进行最新提交的修改。
  我们在github上创建一个仓库用于测试,将其clone到本地。我们新增两个文件a.txt、b.txt。
  将其增加到暂存区。

1
2
3
4
5
6
7
git add --all
````

  将其添加到本地仓库。

```git
git commit -m "不满意的提交"

  将其推到远程仓库。

1
git push

  我们查看这次提交的commit ID,等下重新提交后进行对比。

1
git log

git_commit.png

  上面完成了一次“不满意的提交”,因此我们想要修改最新的提交并重新提交。我们进行这些修改,修改a.c文件内容,删除b.c文件然后新增c.c文件,然后还要修改commit message。
  将其增加到暂存区。

1
2
3
4
5
6
7
git add --all
````

  将其添加到本地仓库。

```git
git commit --amend -m "满意的提交"

  然后我们查看提交记录,发现此时提交记录仍然显示之后两条,但最新的提交记录已经被修改,说明再次的修改提交没有产生新的的提交记录。

1
git log

git_commit_amend.png

  那么之前那次“不满意的提交”记录去哪里了,git会保存每一次的提交记录,要想显示被 amend 修改掉的旧提交,可以使用下面的指令。

1
git reflog

  git reflog 可以查看所有分支的所有提交记录,包括被 resetamend 掉的提交记录。

git_reflog.png

  从上面可以看出,修改最新提交记录后即便没有直接产生一次提交记录,但提交记录的commit ID还是变了。如果你的远程服务器是使用Gerrit进行版本管理,Gerrit分配的change-ID不会发生改变。接下来我们将其推送到远程服务器。

1
git push --force-with-lease origin main

  需要注意的是,现在github默认的主分支名改为main了,以前叫master ,上面的指令根据你要提交的分支名修改。

git_push_force.png

  被 amend 掉的旧记录不会保存在远程服务器,所以别人 clone 或者 pull 下来时看不到“不满意的提交”记录。

  上面完成了一次“不满意的提交”,因此我们想要修改最新的提交并重新提交。我们进行这些修改,修改a.c文件内容,删除b.c文件然后新增c.c文件,然后还要修改commit message。
  将其增加到暂存区。

1
2
3
4
5
6
7
git add --all
````

  将其添加到本地仓库。

```git
git commit --amend -m "满意的提交"

  然后我们查看提交记录,发现此时提交记录仍然显示之后两条,但最新的提交记录已经被修改,说明再次的修改提交没有产生新的的提交记录。

1
git log

Git基础篇(十四)——Git修正提交

前言:
  有时候git的提交存在缺陷,想要重新提交,想在最新的提交上修正这个缺陷然后重新提交,不需要为其在分支路线上生成一个节点,这时候可以使用amend指令。

1 修改最新提交的运用场景

  有时候我们最新的commit发现存在某些问题,需要修改后重新提交,这时候有两种解决思路,通过 git reset HEAD^ 退回到上一个版本然后重新提交,或者通过 git commit --amend 修改最新的提交。建议使用第二种方式在修改最新的提交,这样可以保持分支上的节点尽可能的“干净”。
  以下几种情况会使得我们想要去修改最新提交。

  • 需要修改commit message;
  • 需要删除或新增文件;
  • 需要修改文件内容;

2 amend使用演示

  只要满足以上三种的任一一种情况就可以修改最新提交,下面演示同时对这三种情况进行最新提交的修改。
  我们在github上创建一个仓库用于测试,将其clone到本地。我们新增两个文件a.txt、b.txt。
  将其增加到暂存区。

1
2
3
4
5
6
7
git add --all
````

  将其添加到本地仓库。

```git
git commit -m "不满意的提交"

  将其推到远程仓库。

1
git push

  我们查看这次提交的commit ID,等下重新提交后进行对比。

1
git log

git_commit.png

  上面完成了一次“不满意的提交”,因此我们想要修改最新的提交并重新提交。我们进行这些修改,修改a.c文件内容,删除b.c文件然后新增c.c文件,然后还要修改commit message。
  将其增加到暂存区。

1
2
3
4
5
6
7
git add --all
````

  将其添加到本地仓库。

```git
git commit --amend -m "满意的提交"

  然后我们查看提交记录,发现此时提交记录仍然显示之后两条,但最新的提交记录已经被修改,说明再次的修改提交没有产生新的的提交记录。

1
git log

git_commit_amend.png

  那么之前那次“不满意的提交”记录去哪里了,git会保存每一次的提交记录,要想显示被 amend 修改掉的旧提交,可以使用下面的指令。

1
git reflog

  git reflog 可以查看所有分支的所有提交记录,包括被 resetamend 掉的提交记录。

git_reflog.png

  从上面可以看出,修改最新提交记录后即便没有直接产生一次提交记录,但提交记录的commit ID还是变了。如果你的远程服务器是使用Gerrit进行版本管理,Gerrit分配的change-ID不会发生改变。接下来我们将其推送到远程服务器。

1
git push --force-with-lease origin main

  需要注意的是,现在github默认的主分支名改为main了,以前叫master ,上面的指令根据你要提交的分支名修改。

git_push_force.png

  被 amend 掉的旧记录不会保存在远程服务器,所以别人 clone 或者 pull 下来时看不到“不满意的提交”记录。

  那么之前那次“不满意的提交”记录去哪里了,git会保存每一次的提交记录,要想显示被 amend 修改掉的旧提交,可以使用下面的指令。

1
git reflog

  git reflog 可以查看所有分支的所有提交记录,包括被 resetamend 掉的提交记录。

Git基础篇(十四)——Git修正提交

前言:
  有时候git的提交存在缺陷,想要重新提交,想在最新的提交上修正这个缺陷然后重新提交,不需要为其在分支路线上生成一个节点,这时候可以使用amend指令。

1 修改最新提交的运用场景

  有时候我们最新的commit发现存在某些问题,需要修改后重新提交,这时候有两种解决思路,通过 git reset HEAD^ 退回到上一个版本然后重新提交,或者通过 git commit --amend 修改最新的提交。建议使用第二种方式在修改最新的提交,这样可以保持分支上的节点尽可能的“干净”。
  以下几种情况会使得我们想要去修改最新提交。

  • 需要修改commit message;
  • 需要删除或新增文件;
  • 需要修改文件内容;

2 amend使用演示

  只要满足以上三种的任一一种情况就可以修改最新提交,下面演示同时对这三种情况进行最新提交的修改。
  我们在github上创建一个仓库用于测试,将其clone到本地。我们新增两个文件a.txt、b.txt。
  将其增加到暂存区。

1
2
3
4
5
6
7
git add --all
````

  将其添加到本地仓库。

```git
git commit -m "不满意的提交"

  将其推到远程仓库。

1
git push

  我们查看这次提交的commit ID,等下重新提交后进行对比。

1
git log

git_commit.png

  上面完成了一次“不满意的提交”,因此我们想要修改最新的提交并重新提交。我们进行这些修改,修改a.c文件内容,删除b.c文件然后新增c.c文件,然后还要修改commit message。
  将其增加到暂存区。

1
2
3
4
5
6
7
git add --all
````

  将其添加到本地仓库。

```git
git commit --amend -m "满意的提交"

  然后我们查看提交记录,发现此时提交记录仍然显示之后两条,但最新的提交记录已经被修改,说明再次的修改提交没有产生新的的提交记录。

1
git log

git_commit_amend.png

  那么之前那次“不满意的提交”记录去哪里了,git会保存每一次的提交记录,要想显示被 amend 修改掉的旧提交,可以使用下面的指令。

1
git reflog

  git reflog 可以查看所有分支的所有提交记录,包括被 resetamend 掉的提交记录。

git_reflog.png

  从上面可以看出,修改最新提交记录后即便没有直接产生一次提交记录,但提交记录的commit ID还是变了。如果你的远程服务器是使用Gerrit进行版本管理,Gerrit分配的change-ID不会发生改变。接下来我们将其推送到远程服务器。

1
git push --force-with-lease origin main

  需要注意的是,现在github默认的主分支名改为main了,以前叫master ,上面的指令根据你要提交的分支名修改。

git_push_force.png

  被 amend 掉的旧记录不会保存在远程服务器,所以别人 clone 或者 pull 下来时看不到“不满意的提交”记录。

  从上面可以看出,修改最新提交记录后即便没有直接产生一次提交记录,但提交记录的commit ID还是变了。如果你的远程服务器是使用Gerrit进行版本管理,Gerrit分配的change-ID不会发生改变。接下来我们将其推送到远程服务器。

1
git push --force-with-lease origin main

  需要注意的是,现在github默认的主分支名改为main了,以前叫master ,上面的指令根据你要提交的分支名修改。

Git基础篇(十四)——Git修正提交

前言:
  有时候git的提交存在缺陷,想要重新提交,想在最新的提交上修正这个缺陷然后重新提交,不需要为其在分支路线上生成一个节点,这时候可以使用amend指令。

1 修改最新提交的运用场景

  有时候我们最新的commit发现存在某些问题,需要修改后重新提交,这时候有两种解决思路,通过 git reset HEAD^ 退回到上一个版本然后重新提交,或者通过 git commit --amend 修改最新的提交。建议使用第二种方式在修改最新的提交,这样可以保持分支上的节点尽可能的“干净”。
  以下几种情况会使得我们想要去修改最新提交。

  • 需要修改commit message;
  • 需要删除或新增文件;
  • 需要修改文件内容;

2 amend使用演示

  只要满足以上三种的任一一种情况就可以修改最新提交,下面演示同时对这三种情况进行最新提交的修改。
  我们在github上创建一个仓库用于测试,将其clone到本地。我们新增两个文件a.txt、b.txt。
  将其增加到暂存区。

1
2
3
4
5
6
7
git add --all
````

  将其添加到本地仓库。

```git
git commit -m "不满意的提交"

  将其推到远程仓库。

1
git push

  我们查看这次提交的commit ID,等下重新提交后进行对比。

1
git log

git_commit.png

  上面完成了一次“不满意的提交”,因此我们想要修改最新的提交并重新提交。我们进行这些修改,修改a.c文件内容,删除b.c文件然后新增c.c文件,然后还要修改commit message。
  将其增加到暂存区。

1
2
3
4
5
6
7
git add --all
````

  将其添加到本地仓库。

```git
git commit --amend -m "满意的提交"

  然后我们查看提交记录,发现此时提交记录仍然显示之后两条,但最新的提交记录已经被修改,说明再次的修改提交没有产生新的的提交记录。

1
git log

git_commit_amend.png

  那么之前那次“不满意的提交”记录去哪里了,git会保存每一次的提交记录,要想显示被 amend 修改掉的旧提交,可以使用下面的指令。

1
git reflog

  git reflog 可以查看所有分支的所有提交记录,包括被 resetamend 掉的提交记录。

git_reflog.png

  从上面可以看出,修改最新提交记录后即便没有直接产生一次提交记录,但提交记录的commit ID还是变了。如果你的远程服务器是使用Gerrit进行版本管理,Gerrit分配的change-ID不会发生改变。接下来我们将其推送到远程服务器。

1
git push --force-with-lease origin main

  需要注意的是,现在github默认的主分支名改为main了,以前叫master ,上面的指令根据你要提交的分支名修改。

git_push_force.png

  被 amend 掉的旧记录不会保存在远程服务器,所以别人 clone 或者 pull 下来时看不到“不满意的提交”记录。

  被 amend 掉的旧记录不会保存在远程服务器,所以别人 clone 或者 pull 下来时看不到“不满意的提交”记录。