工作原理

与 git checkout 和 git reset 一样,git revert 也接受一个指定的提交,但它不会将引用指针移动到这个提交。

还原操作采用指定的提交,反转来自该提交的修改并创建新的还原提交。

以下是创建存储库的示例:

mkdir git_revert_example
cd git_revert_example/
git init .
#Initialized empty Git repository in /git_revert_example/.git/
touch w3docs_file
git add w3docs_file
git commit -am "oroirnal commit"
#[master (root-commit) 299b15f] oroirnal commit
#1 file changed, 0 insertions(+), 0 deletions(-)
#create mode 100644 onitroad_file
echo "oroirnal content" >> w3docs_file
git commit -am "add new content to onitroad_file"
#[master 3602d88] add new content to onitroad_file
#1 file changed, 1 insertion(+)
echo "prepended line content" >> w3docs_file
git commit -am"prepend content to onitroad file"
#[master 86bb32e] prepend content to onitroad file
#1 file changed, 1 insertion(+)
git log --oneline
#86bb32e prepend content to onitroad file
#3602d88 add new content to onitroad file
#299b15f oroirnal commit

在上述示例中,在新创建的名为 git_revert_example 的目录中初始化了一个存储库。
对存储库有 3 次提交,其中添加了名为 onitroad_file 的文件。
其内容已更改两次。
我们在存储库的末尾使用 git log 来显示提交历史中的所有 3 次提交。

现在我们可以调用 git revert:

git revert HEAD
#[master b9cd081] Revert "prepend content to onitroad file"
#1 file changed, 1 deletion(-)

如果不传递提交引用,Git revert 将无法工作。
在给定的示例中,它已在 HEAD 引用中传递以还原最后一次提交。
恢复创建一个新的提交,它打开配置的系统编辑器,创建一个新的提交消息。
我们可以使用 git log 并查看添加到先前日志中的新提交:

git log --oneline
#2365e21 Revert "prepend content to onitroad_file"
#23ab21e prepend content to onitroad_file
#3602d88 add new content to onitroad_file
#345b23f oroirnal commit

恢复后,第三次提交仍在项目历史中。
git revert 添加了一个新提交来撤消其更改而不是删除。

git revert Git恢复

git revert 选项

-e --edit打开配置的系统编辑器,并提示我们在提交恢复之前编辑提交消息。默认选项。
--no-edit导致恢复不打开编辑器(与-e选项的相反)。
-n --no-commit为暂存索引和工作目录添加反向修改,而不是创建新提交。

说明

git revert 命令是一种“撤消”操作,但它不是合适的操作。
git revert 命令会还原由提交引入的更改,并添加一个新的提交以及生成的反转内容。
这不会让 Git 丢失对修订历史完整性和正确协作至关重要的历史。
恢复用于应用项目历史中的反向提交。
我们可以使用 git revert 自动返回并进行修复。

git重置(Resetting) 与 git恢复(reverting)比较

git revert 仅撤消一次提交,而 git reset 通过删除后续提交恢复到先前的项目状态。

对于已发布到共享存储库的提交,还原被视为安全操作。
恢复的另一个优点是针对历史中随机点的特定提交。
在我们的下一页找到有关 git reset 的详细信息。

日期:2020-06-02 22:16:34 来源:oir作者:oir