git中revert
介绍
在日常的开发中,我们经常需要修改、提交和合并代码。然而,有时候我们可能会发现自己提交的代码有问题,或者不符合预期,需要撤销一些已经提交的更改。在Git版本控制系统中,有几种方法可以实现这一目的,其中之一就是使用revert
命令。
revert
命令允许我们撤销先前的提交,生成一个新的提交,以取消先前的更改。撤销的提交将保留在Git历史记录中,并且不会修改先前提交的SHA哈希值。这是因为撤销是通过创建一个新提交来实现的,该提交包含与要撤销的提交相反的更改。
本文将详细介绍Git中revert
命令的用法和实例,并解释如何将其应用于您的项目中。
revert的基本用法
使用Git的revert
命令撤销先前的提交可以通过以下步骤完成:
- 选择要撤销的提交。首先,我们需要确定要撤销的提交。可以使用
git log
命令查看提交历史,找到要撤销的提交的SHA哈希值。 -
执行revert命令。一旦确定要撤销的提交,我们可以使用
git revert
命令来执行该操作。命令的基本语法如下:git revert <commit>
其中,
<commit>
是要撤销的提交的SHA哈希值。请注意,使用
revert
命令撤销提交时,Git将自动为您创建一个新的提交,以撤销先前的更改。 -
提交更改。撤销提交后,我们需要使用
git commit
命令提交更改。Git将会提示您输入提交消息,简要说明此次撤销的目的。
“`bash
git commit -m "Revert <commit>"
“`
其中,<commit>
是要撤销的提交的SHA哈希值。
- 推送更改(可选)。如果您希望将更改推送到远程仓库,以确保其他开发人员可以看到和使用更改,可以使用
git push
命令将更改推送到远程分支。
“`bash
git push origin <branch>
“`
其中,<branch>
是要推送到的远程分支的名称。
至此,您已成功使用Git的revert
命令撤销了一个提交,并生成了一个新的撤销提交。
revert的实例
为了更好地理解revert
命令的工作原理,以下是两个实例说明。
实例1:撤销最新的提交
假设您已经进行了两个提交,并且想要撤销最新的提交。
- 首先,使用
git log
命令查看提交历史,并找到要撤销的提交的SHA哈希值。
“`bash
$ git log
commit d18f34e3c7085f03b76fa5bd1f7a6904d849bb3c (HEAD -> master)
Author: Your Name <your.email@example.com>
Date: Mon Jan 1 00:00:00 2022 +0800
<pre><code> Commit message 2
</code></pre>
commit abcd1234ef56789abcdef0123456789abcdef01
Author: Your Name <a href="mailto:your.email@example.com">your.email@example.com</a>
Date: Sun Dec 31 00:00:00 2021 +0800
<pre><code> Commit message 1
</code></pre>
“`
在这个示例中,我们要撤销的是最新的提交d18f34e3c7085f03b76fa5bd1f7a6904d849bb3c
。
- 使用
git revert
命令撤销最新的提交。
“`bash
$ git revert d18f34e3c7085f03b76fa5bd1f7a6904d849bb3c
“`
此命令会创建一个新的撤销提交,以撤销先前的更改。
- 使用
git log
命令查看提交历史,确认撤销提交已创建。
“`bash
$ git log
commit e98765a4bc3def01ab23456789abcdef01234567 (HEAD -> master)
Author: Your Name <your.email@example.com>
Date: Tue Jan 2 00:00:00 2022 +0800
<pre><code> Revert "Commit message 2"
</code></pre>
commit d18f34e3c7085f03b76fa5bd1f7a6904d849bb3c
Author: Your Name <a href="mailto:your.email@example.com">your.email@example.com</a>
Date: Mon Jan 1 00:00:00 2022 +0800
<pre><code> Commit message 2
</code></pre>
commit abcd1234ef56789abcdef0123456789abcdef01
Author: Your Name <a href="mailto:your.email@example.com">your.email@example.com</a>
Date: Sun Dec 31 00:00:00 2021 +0800
<pre><code> Commit message 1
</code></pre>
“`
在这个示例中,创建了一个新的撤销提交e98765a4bc3def01ab23456789abcdef01234567
,用于撤销先前的提交。
- 提交更改。
“`bash
$ git commit -m "Revert d18f34e3c7085f03b76fa5bd1f7a6904d849bb3c"
“`
这将提交更改,并在撤销提交中提供相关的提交消息。
实例2:撤销多个提交
假设您想要撤销多个连续提交。
- 首先,使用
git log
命令查看提交历史,并找到要撤销的提交的SHA哈希值。
ffffff00000000000000000000000000000000
,eeeeeee111111111111111111111111111111111111111111111111111111111
,和dddddd22222222222222222222222222222222222
。
- 使用
git revert
命令撤销多个提交。
“`bash
$ git revert fffffff00000000000000000000000000000000..dddddd2222222222222222222222222222222222
“`
这将撤销从最新的提交ffffff00000000000000000000000000000000
到dddddd2222222222222222222222222222222222
之间的所有提交,并在每个撤销提交中生成一个新的提交。
- 使用
git log
命令查看提交历史,确认撤销提交已创建。
“`bash
$ git log
commit ggggggg55555555555555555555555555555555 (HEAD -> master)
Author: Your Name
Date: Thu Jan 6 00:00:00 2022 +0800
Revert "Commit message 5"
commit fffffff00000000000000000000000000000000
Author: Your Name your.email@example.com
Date: Wed Jan 5 00:00:00 2022 +0800
Commit message 5
commit eeeeeee11111111111111111111111111111111
Author: Your Name your.email@example.com
Date: Tue Jan 4 00:00:00 2022 +0800
Commit message 4
commit dddddd22222222222222222222222222222222
Author: Your Name your.email@example.com
Date: Mon Jan 3 00:00:00 2022 +0800
Commit message 3
commit ccccccc333333