git的撤销、删除和版本回退

git的撤销、删除和版本回退备注 本文参考于廖雪峰的博客 Git 教程 依照其博客进行学习和记录 感谢其无私分享 也欢迎各位查看原文

大家好,欢迎来到IT知识分享网。

备注:

本文参考于廖雪峰的博客Git教程。依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文。

知识点:

1、git status,查看git仓库的状态

2、git diff 查看git修改了的内容

3、HEAD指向的版本就是当前版本,使用git reset –hard commit_id命令可以回到指定版本

4、通过git log查看提交历史和git reflog查看命令历史,确定回退或恢复到某一版本。

查看git仓库的状态

我们修改一下readme文件的内容,添加一行内容。

  • 运行git status查看状态
liu@liu-virtual-machine:~/gitTest$ git status 位于分支 master 尚未暂存以备提交的变更: (使用 "git add <文件>..." 更新要提交的内容) (使用 "git checkout -- <文件>..." 丢弃工作区的改动) 修改: readme.txt 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

git status命令可以查看仓库当前的状态,上面显示,readme.txt文件被修改过,但还没有加入提交修改的内容。

  • git diff可以查看修改了什么内容,这样就可以清楚的知道上次修改的内容是什么,如下
liu@liu-virtual-machine:~/gitTest$ git diff diff --git a/readme.txt b/readme.txt index 90269eb..7d0ff65  --- a/readme.txt +++ b/readme.txt @@ -1,4 +1,4 @@ `this is a test that I learning and use git version control system this is a beginning -wofaidognyixie dognxi +i Add a new line information in the end of readme.txt file

在修改最后一行之前我添加和提交了一行wofaidognyixie dognxi,现在修改为i Add a new line information in the end of readme.txt file,相当于删除添加。git diff查看不同的内容,结果显示出修改前后的对比。

  • git add readme.txt添加修改,此时查看仓库状态,提示:要提交的变更为readme.txt
liu@liu-virtual-machine:~/gitTest$ git status 位于分支 master 要提交的变更: (使用 "git reset HEAD <文件>..." 以取消暂存) 修改: readme.txt
  • git commit和git status提交并查看当前仓库状态
liu@liu-virtual-machine:~/gitTest$ git commit -m "add a new line in readme.txt" [master e] add a new line in readme.txt 1 file changed, 1 insertion(+), 1 deletion(-) liu@liu-virtual-machine:~/gitTest$ git status 位于分支 master 无文件要提交,干净的工作区

显示没有需要提交的修改,干净的工作区,(working directory clean)

查看历史记录。

对于版本控制系统,重要的是我们可以查看历史记录,方便我们知道每次修改和提交的内容。

  • git log查看修改历史

git log显示从最近到最远的提交日志,每一次提交的作者、日期和提交的信息都被显示出来。

  • 如果显示信息太多,可加上–pretty-oneline
liu@liu-virtual-machine:~/gitTest$ git log --pretty=oneline ec3f43e15ceee10fb86f05fd add a new line in readme.txt 1769dcb57a1b16d3c4ed7f96828af2f1131f5882 modify d5b84bff04a672d9fd42e71a3e79910f17 modifya readme file 3033dda882f53ea249d6dacd4c39c470fab700e8 add a readme file

此时每条log记录被显示在一行。

每行前面的一串字母数字是commit id(版本号)。和svn不一样,Git的commit id不是1,2,3递增数字,而是一个SHA1计算出来的一个非常大的数字,16进制表示.为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。

Git将每一次提交串成一条时间线。

版本回退

  • git首先需要知道当前版本是哪个版本。

Git中,用HEAD表示当前版本,即上面最新提交的e181…5127,上一个版本就是HEAD^,上上个版本使HEAD^^,当往上100个版本时,写成HEAD~100

  • git reset –hard HEAD^

将当前版本“add a new line in readme.txt”回退到上一版本“modify”,如下:

iu@liu-virtual-machine:~/gitTest$ git reset --hard HEAD^ HEAD 现在位于 1769dcb modify

查看readme.txt的内容已经是modify版本,

此时用git log查看历史记录

liu@liu-virtual-machine:~/gitTest$ git log commit 1769dcb57a1b16d3c4ed7f96828af2f1131f5882 Author: findmoon <@.com> Date: Tue Feb 20 13:37:05 2018 +0800 modify commit d5b84bff04a672d9fd42e71a3e79910f17 Author: findmoon <@.com> Date: Tue Feb 20 12:55:06 2018 +0800 modifya readme file commit 3033dda882f53ea249d6dacd4c39c470fab700e8 Author: findmoon <@.com> Date: Tue Feb 20 12:48:53 2018 +0800 add a readme file

之前的最新版本记录已经没有。要想重新回到原来的最新版本,你需要记下当时的版本号(终端不关闭,可以向上找到)。如“add a new line in readme.txt”版本的commit id e18195…

  • 指定前进到未来某一版本
liu@liu-virtual-machine:~/gitTest$ git reset --hard ec3f43e15ceee10fb86f05fd HEAD 现在位于 e add a new line in readme.txt

readme.txt内容已经变为最新版本。

  • git reset –hard e可以不必将版本号写全,Git会自动查找

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当回退版本时,Git仅仅是把HEAD从指向当前版本,改为指向回退的版本.然后把工作区的文件更新。

  • 当回退到某一版本后又想恢复到最新版本,就必须找到commit id。Git提供it reflog记录你的每一次命令
liu@liu-virtual-machine:~/gitTest$ git reflog 1769dcb HEAD@{0}: reset: moving to HEAD^ e HEAD@{1}: reset: moving to ec3f43e15ceee10fb86f05fd 1769dcb HEAD@{2}: reset: moving to HEAD^ e HEAD@{3}: commit: add a new line in readme.txt 1769dcb HEAD@{4}: commit: modify d5b84bf HEAD@{5}: commit: modifya readme file 3033dda HEAD@{6}: commit (initial): add a readme file

通过每一条命令历史前面的commit id,就可以恢复想要的版本。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/183035.html

(0)
上一篇 2025-07-11 11:10
下一篇 2025-07-11 11:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信