Git基础篇(十四)——Git修正提交
Git基础篇(十四)——Git修正提交
前言:
  有时候git的提交存在缺陷,想要重新提交,想在最新的提交上修正这个缺陷然后重新提交,不需要为其在分支路线上生成一个节点,这时候可以使用amend指令。
1 修改最新提交的运用场景
  有时候我们最新的commit发现存在某些问题,需要修改后重新提交,这时候有两种解决思路,通过 git reset HEAD^
退回到上一个版本然后重新提交,或者通过 git commit --amend
修改最新的提交。建议使用第二种方式在修改最新的提交,这样可以保持分支上的节点尽可能的“干净”。
  以下几种情况会使得我们想要去修改最新提交。
- 需要修改commit message;
- 需要删除或新增文件;
- 需要修改文件内容;
2 amend使用演示
  只要满足以上三种的任一一种情况就可以修改最新提交,下面演示同时对这三种情况进行最新提交的修改。
  我们在github上创建一个仓库用于测试,将其clone到本地。我们新增两个文件a.txt、b.txt。
  将其增加到暂存区。
1 | git add --all |
  将其推到远程仓库。
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 | git add --all |
  将其推到远程仓库。
1 | git push |
  我们查看这次提交的commit ID,等下重新提交后进行对比。
1 | git log |
  上面完成了一次“不满意的提交”,因此我们想要修改最新的提交并重新提交。我们进行这些修改,修改a.c文件内容,删除b.c文件然后新增c.c文件,然后还要修改commit message。
  将其增加到暂存区。
1 | git add --all |
  然后我们查看提交记录,发现此时提交记录仍然显示之后两条,但最新的提交记录已经被修改,说明再次的修改提交没有产生新的的提交记录。
1 | git log |
  那么之前那次“不满意的提交”记录去哪里了,git会保存每一次的提交记录,要想显示被 amend
修改掉的旧提交,可以使用下面的指令。
1 | git reflog |
  git reflog
可以查看所有分支的所有提交记录,包括被 reset
和 amend
掉的提交记录。
  从上面可以看出,修改最新提交记录后即便没有直接产生一次提交记录,但提交记录的commit ID还是变了。如果你的远程服务器是使用Gerrit进行版本管理,Gerrit分配的change-ID不会发生改变。接下来我们将其推送到远程服务器。
1 | git push --force-with-lease origin main |
  需要注意的是,现在github默认的主分支名改为main了,以前叫master ,上面的指令根据你要提交的分支名修改。
  被 amend
掉的旧记录不会保存在远程服务器,所以别人 clone
或者 pull
下来时看不到“不满意的提交”记录。
  上面完成了一次“不满意的提交”,因此我们想要修改最新的提交并重新提交。我们进行这些修改,修改a.c文件内容,删除b.c文件然后新增c.c文件,然后还要修改commit message。
  将其增加到暂存区。
1 | git add --all |
  然后我们查看提交记录,发现此时提交记录仍然显示之后两条,但最新的提交记录已经被修改,说明再次的修改提交没有产生新的的提交记录。
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 | git add --all |
  将其推到远程仓库。
1 | git push |
  我们查看这次提交的commit ID,等下重新提交后进行对比。
1 | git log |
  上面完成了一次“不满意的提交”,因此我们想要修改最新的提交并重新提交。我们进行这些修改,修改a.c文件内容,删除b.c文件然后新增c.c文件,然后还要修改commit message。
  将其增加到暂存区。
1 | git add --all |
  然后我们查看提交记录,发现此时提交记录仍然显示之后两条,但最新的提交记录已经被修改,说明再次的修改提交没有产生新的的提交记录。
1 | git log |
  那么之前那次“不满意的提交”记录去哪里了,git会保存每一次的提交记录,要想显示被 amend
修改掉的旧提交,可以使用下面的指令。
1 | git reflog |
  git reflog
可以查看所有分支的所有提交记录,包括被 reset
和 amend
掉的提交记录。
  从上面可以看出,修改最新提交记录后即便没有直接产生一次提交记录,但提交记录的commit ID还是变了。如果你的远程服务器是使用Gerrit进行版本管理,Gerrit分配的change-ID不会发生改变。接下来我们将其推送到远程服务器。
1 | git push --force-with-lease origin main |
  需要注意的是,现在github默认的主分支名改为main了,以前叫master ,上面的指令根据你要提交的分支名修改。
  被 amend
掉的旧记录不会保存在远程服务器,所以别人 clone
或者 pull
下来时看不到“不满意的提交”记录。
  那么之前那次“不满意的提交”记录去哪里了,git会保存每一次的提交记录,要想显示被 amend
修改掉的旧提交,可以使用下面的指令。
1 | git reflog |
  git reflog
可以查看所有分支的所有提交记录,包括被 reset
和 amend
掉的提交记录。
Git基础篇(十四)——Git修正提交
前言:
  有时候git的提交存在缺陷,想要重新提交,想在最新的提交上修正这个缺陷然后重新提交,不需要为其在分支路线上生成一个节点,这时候可以使用amend指令。
1 修改最新提交的运用场景
  有时候我们最新的commit发现存在某些问题,需要修改后重新提交,这时候有两种解决思路,通过 git reset HEAD^
退回到上一个版本然后重新提交,或者通过 git commit --amend
修改最新的提交。建议使用第二种方式在修改最新的提交,这样可以保持分支上的节点尽可能的“干净”。
  以下几种情况会使得我们想要去修改最新提交。
- 需要修改commit message;
- 需要删除或新增文件;
- 需要修改文件内容;
2 amend使用演示
  只要满足以上三种的任一一种情况就可以修改最新提交,下面演示同时对这三种情况进行最新提交的修改。
  我们在github上创建一个仓库用于测试,将其clone到本地。我们新增两个文件a.txt、b.txt。
  将其增加到暂存区。
1 | git add --all |
  将其推到远程仓库。
1 | git push |
  我们查看这次提交的commit ID,等下重新提交后进行对比。
1 | git log |
  上面完成了一次“不满意的提交”,因此我们想要修改最新的提交并重新提交。我们进行这些修改,修改a.c文件内容,删除b.c文件然后新增c.c文件,然后还要修改commit message。
  将其增加到暂存区。
1 | git add --all |
  然后我们查看提交记录,发现此时提交记录仍然显示之后两条,但最新的提交记录已经被修改,说明再次的修改提交没有产生新的的提交记录。
1 | git log |
  那么之前那次“不满意的提交”记录去哪里了,git会保存每一次的提交记录,要想显示被 amend
修改掉的旧提交,可以使用下面的指令。
1 | git reflog |
  git reflog
可以查看所有分支的所有提交记录,包括被 reset
和 amend
掉的提交记录。
  从上面可以看出,修改最新提交记录后即便没有直接产生一次提交记录,但提交记录的commit ID还是变了。如果你的远程服务器是使用Gerrit进行版本管理,Gerrit分配的change-ID不会发生改变。接下来我们将其推送到远程服务器。
1 | git push --force-with-lease origin main |
  需要注意的是,现在github默认的主分支名改为main了,以前叫master ,上面的指令根据你要提交的分支名修改。
  被 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 | git add --all |
  将其推到远程仓库。
1 | git push |
  我们查看这次提交的commit ID,等下重新提交后进行对比。
1 | git log |
  上面完成了一次“不满意的提交”,因此我们想要修改最新的提交并重新提交。我们进行这些修改,修改a.c文件内容,删除b.c文件然后新增c.c文件,然后还要修改commit message。
  将其增加到暂存区。
1 | git add --all |
  然后我们查看提交记录,发现此时提交记录仍然显示之后两条,但最新的提交记录已经被修改,说明再次的修改提交没有产生新的的提交记录。
1 | git log |
  那么之前那次“不满意的提交”记录去哪里了,git会保存每一次的提交记录,要想显示被 amend
修改掉的旧提交,可以使用下面的指令。
1 | git reflog |
  git reflog
可以查看所有分支的所有提交记录,包括被 reset
和 amend
掉的提交记录。
  从上面可以看出,修改最新提交记录后即便没有直接产生一次提交记录,但提交记录的commit ID还是变了。如果你的远程服务器是使用Gerrit进行版本管理,Gerrit分配的change-ID不会发生改变。接下来我们将其推送到远程服务器。
1 | git push --force-with-lease origin main |
  需要注意的是,现在github默认的主分支名改为main了,以前叫master ,上面的指令根据你要提交的分支名修改。
  被 amend
掉的旧记录不会保存在远程服务器,所以别人 clone
或者 pull
下来时看不到“不满意的提交”记录。
  被 amend
掉的旧记录不会保存在远程服务器,所以别人 clone
或者 pull
下来时看不到“不满意的提交”记录。