Git学习版本回退和管理文件的修改及删除操作

版本回退

前面我们成功的提交了一次mygit.txt,下面咱对它进行修改,内容如下:

Hello Git
Git is so easy.

然后用git status来跟踪该文件的状态:

可以看到hellogit.txt已经被修改过了,到底这次修改的内容与上次的内容有什么不同的,咱们可以使用git diff查看:

当然你也可以查看上次提交的信息,使用git log:

通过前面一章我们知道,该文件还处于工作区,因此我们又可以使用add、commit操作了:

这里笔者偷了个懒,直接用-m表示提交的信息,当然在学习过程中咱可以这样,但实际工作中一般不这么写。

好了,提交完后咱再用git status来跟踪一下(建议多使用git status)状态:

这里依然是:Git告诉咱们当前没有需要提交的修改,而且工作目录是干净的。

下面再学一个命令:git reflog,它主要用来记录你的每一次命令和commit id,这个命令非常有效,也建议大家常用。

可以看到咱提交的id号和提交的message被显示出来了。

加入你现在不想修改了,想回到原来那个版本,该怎么办呢?别急,这一点Git早就帮我们想好了,使用git reset --hard HEAD^

注意:这里HEAD上面^表示回到上一个版本,如果想回到前面第五个版本呢?我们可以用git reset --hard HEAD~5,当然因为我们这里只修改了1次,所以我们最多只能回到前面一个版本。打开hellogit.txt看看,是内容不是Hello Git呢?当然如果你又想修改回去,那么咱们还有办法,用git reset --hard commit-id:

注意:这里的e75e865指的是commit id,上面已经说了,这里就不再赘述。

撤销修改:

下面我们再次对helliogit.txt进行修改,内容如下:

Hello Git
Git is so easy.
Easily learn the Git.

然后我们用git status跟踪状态:

这里Git会告诉你,git checkout -- file可以丢弃工作区的修改:

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,然后在查看状态:

工作目录有变回”clean“了,查看hellogit.txt内容 cat hellogit.txt

内容又改回来了,这样就完成了一次简单的修改撤销。如果你把文件内容修改为原来添加时的:

Hello Git
Git is so easy.
Easily learn the Git.

git add hellogit.txt到了暂存区,咱们还有办法,使用git reset HEAD hellogit.txt来返回到工作区状态:

竟然已经回到了工作区,那么咱们就可以向之前那样,使用git checkout -- hellogit.txt了:

好了,一切又回到了,原来的状态。如果你还从暂存区提交到了版本库,还记得上面的版本回退吗?可以回到上一个版本就OK了,不过如果你还将本地的修改推送到远程版本库(后面会讲),那就没有后悔药吃了。

删除文件

前面已经说了,在Git中,删除也算一个修改操作。下面咱们先添加一个新文件1.txt到Git并且提交:

这是你如果执行rm 1.txt把1.txt文件删了,那么这个时候,Git知道你删了文件,工作区和版本库就不一致了,我们再用git status跟踪一下:

这是你有两个选择,一是确实要从版本库中删除,使用git rm 1.txt并commit一下:

注意:你删除之后,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

另一种情况,你觉得你删除了想修改过来,因为版本库中还存在,所以可以很轻松地把误删的文件恢复到原来版本。

可以看到,1.txt有回到工作区了。

时间: 2024-11-08 23:32:19

Git学习版本回退和管理文件的修改及删除操作的相关文章

Git教程-版本回退

现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. Git is free software distributed under the GPL. 然后尝试提交: $ git add readme.txt $ git commit -m "append GPL" [master 3628164] append GPL 1 file cha

Git(时光机-版本回退)

现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. Git is free software distributed under the GPL. 然后尝试提交: 像这样,你不断对文件进行修改,然后不断提交修改到版本库里,就好比玩RPG游戏时,每通过一关就会自动把游戏状态存盘,如果某一关没过去,你还可以选择读取前一关的状态.有些时候,在打Boss之

Git学习——版本切换

版本回退 回退到前面几个版本的命令如下: git reset --hard HEAD^ //回退到前一个版本 git reset --hard HEAD^^ //回退到前前一个版本 git reset --hard HEAD~100 //往前回退100个版本 git reset --hard 13034a //跳转到某个版本(13034a)的文件 其中的HEAD是一个指针,用于指示当前的git版本. 版本前推 如果版本回退了,但是后悔了,还可以恢复: git log //查看历史纪录,但是查不了

GIt回版本回退

这里我们使用命令行的方式对已经提交的版本进行强行回退操作~~~ 一.将git的安装目录bin放到path路径中, 如下图所示: 二.进入cmd界面,依次输入下面内容即可(git 远程仓库 回退到指定版本) git checkout branches         #检出当前分支 git branch branches_bak   #备份相关分支git reset --hard 版本号         #将本地代码强行回退到指定的版本号git push -f origin branches  

学习Git的一点心得以及如何把本地修改、删除的代码上传到github中

一:学习Github的资料如下:https://git.oschina.net/progit/ 这是一个学习Git的中文网站,如果诸位能够静下心来阅读,不要求阅读太多,只需要阅读前三章,就可以掌握Git的常用命令. 二:学习Git中远程仓库的问题: Git的远程仓库:就是管理你代码的地方,这个是Github中提供的有,只要你在Github中注册一下你就可以获得无限个Git的远程仓库. 我的Github中的远程仓库如下图所示: 对远程仓库我首先理解为:在Gitbash中敲一个命令:Git init

【Git】Git 本地的撤销修改和删除操作

一:撤销操作 比如我现在在readme.txt文件里面增加一行 内容为555555555555,我们先通过命令查看如下: 在我未提交之前,我发现添加5555555555555内容有误,所以我得马上恢复以前的版本,现在我可以有如下几种方法可以做修改: 第一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉. 第二:我可以按以前的方法直接恢复到上一个版本.使用 git reset –hard HEAD^ 但是现在我不想使用上面的2种方法,我想直

学习linux-基础四(用户创建、修改、删除)

用户的创建.修改.删除 一.用户创建 useradd usermod userdel useradd:创建用户:create a new user or update default new user information useradd [options]- LOGIN -u,–uid:指定新用户的UID -o,配合-u使用,不检测用户UID的唯一性(可创建2个相同UID的帐号) -g,–gid:指定新建用户的GID -G,–group:指定新建用户的附加组,若指定多个组可用,分割 -d,–

git学习笔记12-标签管理-版本

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照. Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的. 在Git中打标签非常简单,首先,切换到需要打标签的分支上: $ git branch * dev master $ git check

git的版本回退探索

简介 今天改完代码匆忙提交,上线发现有问题,那怎么办?废话,赶紧回滚,那怎么回滚,开始用git reset [--soft | --mixed | --hard 命令,但这命令真的能达到我预期的效果吗? 每个参数后面的意思又是什么?让人一头雾水,然后用了 reset  --hard命令,并没有达到预期的效果.现在总结下 1.git相关术语 HEAD 这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交 Index index也被称为staging area,是指一整套即将被下一个提交的文