Linux下Git的版本修改和版本回退

本文详细介绍了如何在Git中进行版本修改、查看版本日志及版本回退操作。包括修改文件、提交更改、查看详细及简化日志、硬重置回退版本及恢复已删除版本的全过程。

Git下的版本修改

Git下的版本修改非常的简单,我们首先只需要对Git所管理的文件夹下的文件本身进行修改。修改后先add到本地的库,然后提交即可。具体的流程贴在下面:

vim readme.txt
#修改文件中的内容
git add readme.txt
git commit -m "append GPL"

这样就修改成功了

Git下的版本日志

查阅代码和输出如下:

ycwang@Y700:~/learngit$ git log
commit 5d9ff40785e085c8a6b956f000bbb5ce59b8af05 (HEAD -> master)
Author: Your Name <you@example.com>
Date:   Tue May 14 19:38:23 2019 +0800

    append GPL

commit 4c93eefd480eaa4106022aeee66e12c54e884e46
Author: Your Name <you@example.com>
Date:   Sat May 11 21:14:15 2019 +0800

    wrote a readme file

输出的内容为提交的版本号(commit id),就是第一行那个5d9ff40785e085c8a6b956f000bbb5ce59b8af05。之后是谁提交的,这个版本就我修改,所以自然是我的名字,突然发现昨天的那个命令原来要自己给名字啊。。。。再之后是具体的提交时间。最后是当时commit时给的注释。我们除去第一个贴子外就修改了一次,所以就两条记录。

此外,还可以减少输出内容

git log --pretty=oneline
5d9ff40785e085c8a6b956f000bbb5ce59b8af05 (HEAD -> master) append GPL
4c93eefd480eaa4106022aeee66e12c54e884e46 wrote a readme file

只给出了版本号和提交时的注释,另外(HEAD->master)代表当前所在的版本。

Git下的版本回退

首先我们已经知道(HEAD->master)对应的是当前的版本,而HEAD^对应的是当前版本的前一个版本,HEAD^^为前两个版本,以此类推。如果需要回退的版本比较多,可以使用HEAD~100表示往回回退100个版本。

使用如下命令回退:

ycwang@Y700:~/learngit$ git reset --hard HEAD^
HEAD 现在位于 4c93eef wrote a readme file

此时我们再次查阅版本记录

ycwang@Y700:~/learngit$ git log
commit 4c93eefd480eaa4106022aeee66e12c54e884e46 (HEAD -> master)
Author: Your Name <you@example.com>
Date:   Sat May 11 21:14:15 2019 +0800

    wrote a readme file

只剩下了一个版本,退回旧版本后,这个版本之前的新版本全部不输出了。那么,如果我们又想回到已经撤销的最新的版本呢?需要使用到前面类似乱码一样的版本号,代码如下:

ycwang@Y700:~/learngit$ git reset --hard 5d9ff40
HEAD 现在位于 5d9ff40 append GPL

使用的同样是reset命令,但是不使用HEAD^而是直接使用版本号,注意本来的版本号非常长,而我们只需要使用其中的前几位。此时我们再查一下版本,

ycwang@Y700:~/learngit$ git log
commit 5d9ff40785e085c8a6b956f000bbb5ce59b8af05 (HEAD -> master)
Author: Your Name <you@example.com>
Date:   Tue May 14 19:38:23 2019 +0800

    append GPL

commit 4c93eefd480eaa4106022aeee66e12c54e884e46
Author: Your Name <you@example.com>
Date:   Sat May 11 21:14:15 2019 +0800

    wrote a readme file

很好确实已经恢复了。注意,我们在退回版本时,并不是真的删除了新的版本的文件,只是将HEAD的指针指向了旧版的文件。

回想一下刚才的操作过程,我们在恢复已经删除的版本之前,需要知道已经删除的版本的版本id。但是如果我们已经把这个终端关掉了,那个版本id无从得知怎么办?实际上可以用命令git reflog查阅,如下:

ycwang@Y700:~/learngit$ git reflog
5d9ff40 (HEAD -> master) HEAD@{0}: reset: moving to 5d9ff40
4c93eef HEAD@{1}: reset: moving to HEAD^
5d9ff40 (HEAD -> master) HEAD@{2}: commit: append GPL
4c93eef HEAD@{3}: commit (initial): wrote a readme file

他记录了我们历史上对版本所有的修改记录,初始化,第一次更新,然后回退,再回到最新的版本,而且每行最前面给出了版本id的前几个编码。这样我们就可以通过这个编码回到我们想要回到的版本啦~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值