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
下来时看不到“不满意的提交”记录。