Git 回退
Git 回退
revert
是我们想要获取之前的 commit
并将其作为一个新的 commit
添加时使用的命令,同时保持 log
不变。
步骤 1:查找之前的 commit
步骤 2:使用它创建一个新的 commit
让我们创建一个新的 commit
,其中我们“意外地”删除了一个文件
示例
git commit -m "Just a regular update, definitely no accidents here..."
[master 16a6f19] Just a regular update, definitely no accidents here...
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 img_hello_git.jpg
现在,我们在 commit
历史记录中有一部分想要回到过去。让我们尝试使用 revert
来做到这一点。
Git 回退查找日志中的提交
首先,我们需要找到我们想要返回的点。为此,我们需要查看 log
。
为了避免非常长的日志列表,我们将使用 --oneline
选项,它只显示每个提交的一行
commit hash
的前七个字符commit message
所以让我们找到我们想要 revert
的点
示例
git log --oneline
52418f7 (HEAD -> master) Just a regular update, definitely no accidents here...
9a9add8 (origin/master) Added .gitignore
81912ba Corrected spelling error
3fdaa5b Merge pull request #1 from w3schools-test/update-readme
836e5bf (origin/update-readme, update-readme) Updated readme for GitHub Branches
daf4f7c (origin/html-skeleton, html-skeleton) Updated index.html with basic meta
facaeae (gh-page/master) Merge branch 'master' of https://github.com/w3schools-test/hello-world
e7de78f Updated index.html. Resized image
5a04b6f Updated README.md with a line about focus
d29d69f Updated README.md with a line about GitHub
e0b6038 merged with hello-world-images after fixing conflicts
1f1584e added new image
dfa79db updated index.html with emergency fix
0312c55 Added image to Hello World
09f4acd Updated index.html with a new line
221ec6e First release of Hello World!
我们想要回退到之前的 commit
:52418f7 (HEAD -> master) Just a regular update, definitely no accidents here...
,我们看到它是最新的 commit
。
Git 回退 HEAD
我们使用 git revert HEAD
回退最新的 commit
(revert
最新的更改,然后 commit
),添加选项 --no-edit
以跳过提交消息编辑器(获取默认的 revert
消息)
示例
git revert HEAD --no-edit
[master e56ba1f] Revert "Just a regular update, definitely no accidents here..."
Date: Thu Apr 22 10:50:13 2021 +0200
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 img_hello_git.jpg
现在让我们再次检查 log
示例
git log --oneline
e56ba1f (HEAD -> master) Revert "Just a regular update, definitely no accidents here..."
52418f7 Just a regular update, definitely no accidents here...
9a9add8 (origin/master) Added .gitignore
81912ba Corrected spelling error
3fdaa5b Merge pull request #1 from w3schools-test/update-readme
836e5bf (origin/update-readme, update-readme) Updated readme for GitHub Branches
daf4f7c (origin/html-skeleton, html-skeleton) Updated index.html with basic meta
facaeae (gh-page/master) Merge branch 'master' of https://github.com/w3schools-test/hello-world
e7de78f Updated index.html. Resized image
5a04b6f Updated README.md with a line about focus
d29d69f Updated README.md with a line about GitHub
e0b6038 merged with hello-world-images after fixing conflicts
1f1584e added new image
dfa79db updated index.html with emergency fix
0312c55 Added image to Hello World
09f4acd Updated index.html with a new line
221ec6e First release of Hello World!
注意:要回退到更早的提交,请使用 git revert HEAD~x
(x
是一个数字。1 回退一个,2 回退两个,依此类推。)
在下一页,我们将介绍 git reset
,它将仓库回退到提交中的较早状态,而无需创建新的 commit
。