Git版本回退

本文介绍如何使用Git进行基本的操作,包括查看仓库状态、提交修改、版本回退等,并提供了具体的命令示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看当前仓库的状态

$ git status

例如:下述代码表示,当前文件被修改过,但是还没提交

C:\Users\Simple\Desktop\gitdir>git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   test.txt

no changes added to commit (use "git add" and/or "git commit -a")

查看上次修改的内容

$ git diff

例如:my update后面就是修改的内容

C:\Users\Simple\Desktop\gitdir>git diff
diff --git a/test.txt b/test.txt
index 77d0734..eefb4c4 100644
--- a/test.txt
+++ b/test.txt
@@ -1,12 +1,3 @@
 my first git dir
 my update
-one
-two
-three
-four
-five
-six
-seven
-eight
-nine
-ten
+

确认修改的内容后,就可以直接提交,依旧是两步

$ git add "文件名"
$ git commit -m "提交说明"

此时可以再看一下仓库当前的状态

$ git status

如下输出内容:当前状态显示没有需要提交的修改

C:\Users\Simple\Desktop\gitdir>git add test.txt

C:\Users\Simple\Desktop\gitdir>git commit -m "my update"
[master db457be] my update
 1 file changed, 1 insertion(+), 10 deletions(-)

C:\Users\Simple\Desktop\gitdir>git status
On branch master
nothing to commit, working tree clean

版本回退

首先,我们要清楚我们需要回退到哪个版本,如果提交的数据过多,我们也不可能记得我们需要回退的版本,所以,我们先要找到回退的版本

1、查看提交历史

$ git log
//当前命令会打印出我们所有的提交历史记录

例:

C:\Users\Simple\Desktop\gitdir>git log
commit db457be7f9512b67f1eec6e4a97a2d4becea3117 (HEAD -> master)
Author: simple <xxx@qq.com>
Date:   Sun Apr 7 20:07:15 2019 +0800

    my update

commit 3a0e28b0eaeddaa869e2b5da28b5cd2e7f9313cc
Author: Simple <xxx@qq.com>
Date:   Thu Apr 4 10:22:43 2019 +0800

    im ok

commit 1e3463e48be90c79f88d587feb8836a1aec8a838
Author: Simple <xxx@qq.com>
Date:   Fri Mar 29 23:31:07 2019 +0800

    this is test.txt

commit b9622e94cdd127356f874bb4927205700717fe29
Author: Simple <xxx@qq.com>

如果打印出的数据过多,不便于我们查找版本,可以带上--pretty=oneline参数

$ git log --pretty=oneline

例:这样打印出的数据就更好查找了

C:\Users\Simple\Desktop\gitdir>git log --pretty=oneline
db457be7f9512b67f1eec6e4a97a2d4becea3117 (HEAD -> master) my update
3a0e28b0eaeddaa869e2b5da28b5cd2e7f9313cc im ok
1e3463e48be90c79f88d587feb8836a1aec8a838 this is test.txt
b9622e94cdd127356f874bb4927205700717fe29 update three git
da64cff3e0a9a71ec7965c032c6814d1e171e642 update two git
76109ff8ecc69e36ea4d9b7b8b706f5816f4fcc5 update first git

在Git中,HEAD代表的时当前的版本,那么上一个版本就是HEAD^,上上个就是HEAD^^,如果回退的版本较多,可以写成HEAD~数量

回退到上一个版本,使用git reset

C:\Users\Simple\Desktop\gitdir>git reset --hard HEAD^^
HEAD is now at 3a0e28b im ok

再次查看提交记录,当前显示im ok为最新版本,成功回退

C:\Users\Simple\Desktop\gitdir>git log --pretty=oneline
3a0e28b0eaeddaa869e2b5da28b5cd2e7f9313cc (HEAD -> master) im ok
1e3463e48be90c79f88d587feb8836a1aec8a838 this is test.txt
b9622e94cdd127356f874bb4927205700717fe29 update three git
da64cff3e0a9a71ec7965c032c6814d1e171e642 update two git
76109ff8ecc69e36ea4d9b7b8b706f5816f4fcc5 update first git

如果回退版本后,后悔怎么办呢,毕竟Git允许你后悔,还是有解决的方法的,但是需要找到版本的ID,如果当前命令窗口没有关闭的话,我们可以向上查找之前打印出的版本ID

根据版本ID回退

C:\Users\Simple\Desktop\gitdir>git reset --hard db457b(版本号可以只写前几位,但也不能过短)
HEAD is now at db457be my update

如果已经关闭当前命令窗口,我们又该如何查找之前版本的版本号呢?我们可以用到git reflog命令,该命令可以记录我们每一次的命令,这样我们就可以同上述方法一样回退到指定ID的版本

C:\Users\Simple\Desktop\gitdir>git reflog
db457be (HEAD -> master) HEAD@{0}: reset: moving to db457b
3a0e28b HEAD@{1}: reset: moving to HEAD^
db457be (HEAD -> master) HEAD@{2}: commit: my update
3a0e28b HEAD@{3}: commit: im ok
1e3463e HEAD@{4}: commit: this is test.txt
b9622e9 HEAD@{5}: commit: update three git
da64cff HEAD@{6}: commit: update two git
76109ff HEAD@{7}: commit (initial): update first git
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值