ubuntu第二、三天(时光穿梭机)--学习资源来自廖雪峰博客

本文介绍了如何使用Git进行版本控制,包括基本的提交、回退操作,以及如何管理修改和撤销工作区中的变更。通过实际案例,展示了如何利用Git的强大功能高效地管理和恢复代码版本。

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

版本回退
当文件修改到一定程度的时候,可以commit一下提交到仓库。一旦你把文件弄乱也可以恢复到最近的版本。
使用命令git log查看最近提交的版本,比如

$ git log
commit 2c1479bede14ee4be0b5390b6a8fe58c5ab46f46
Author: ubuntuYGQ <zjumydr@gmail.com>
Date:   Tue Dec 19 11:20:42 2017 +0800

    append GPL

commit 3ffd7a91d63471082bdf14bf6c9c95d84bd3f7e9
Author: ubuntuYGQ <zjumydr@gmail.com>
Date:   Tue Dec 19 11:18:51 2017 +0800

    add distribution

commit 98596c8cea46fa686bfae2d8bf3bd53539c9e067
Author: ubuntuYGQ <zjumydr@gmail.com>
Date:   Tue Dec 19 10:44:56 2017 +0800

    wrote a readme.file

commit 7a0be406eee0f0dfe5ae9d72cc788422f077733e
Author: ubuntuYGQ <zjumydr@gmail.com>
Date:   Tue Dec 19 10:41:55 2017 +0800

    add readme.txt to repository

最近一次改动的是append GPL,上面一长串16进制字符串表示版本号,是git自动分配的。
log后加上 –pretty=oneline 命令,即git log --pretty=oneline可以使显示变得简洁

$ git log --pretty=oneline
2c1479bede14ee4be0b5390b6a8fe58c5ab46f46 append GPL
3ffd7a91d63471082bdf14bf6c9c95d84bd3f7e9 add distribution
98596c8cea46fa686bfae2d8bf3bd53539c9e067 wrote a readme.file
7a0be406eee0f0dfe5ae9d72cc788422f077733e add readme.txt to repository

如上,前面部分显示的是版本号,后面是你用命令commit添加的说明。

git reset --hard HEAD^  //回退到上一版本
git reset --hard HEAD^^  //回退到上上一版本
……
git reset --hard HEAD~100  //回退到上100个版本

恢复到上一版本如下:

$ git reset --hard HEAD^
HEAD is now at 3ffd7a9 add distribution

其中HEAD是git中一个头指针,它指向哪里哪里就是现在所在版本。现在版本就是3ffd7a9这个版本
可以用git log查看当前所在版本
现在到了之前的版本,那么这次更改之前的版本已经用git log
看不到了,如何回去呢?只要这个黑乎乎的终端没有关闭,就可以找到它的版本号,2c1479bede14ee4be0b5390b6a8fe58c5ab46f46
我们只须输入前面几位就可以,git可以帮我们找到所匹配的版本号。

$ git reset --hard 2c1479b
HEAD is now at 2c1479b append GPL

现在又回到了append GPL版本。
那么,使用cat readme.txt查看当前readme.txt的内容。

$ cat readme.txt
Git is a distribution version control system.
Git is free software distributed under the GPL.

假如你已经关闭了终端,看不到之前的版本号的时候怎么办呢?
使用命令git reflog可以查看每一次使用的命令以及版本号,于是就可以可以恢复到任意版本了。

工作区和暂存区
往readme.txt中添加一句话(随意添加),并且在learngit目录下新建一个文本文件LICENSE,用git status查看当前状态显示
Change not staged for commit
改变未提交确认

$ 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:   readme.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    LICENSE

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

readme.txt被修改了,而LICENSE还没被追踪到(没有添加到工作区)
现在把readme.txt和LICENSE都添加一下,再用git status查看当前状态

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   LICENSE
    modified:   readme.txt

当前git已经知道新建的LICENSE文件,并且知道readme.txt被修改过。
现在暂存区(stage)的有了这两个文件,还需要提交到master分支.
使用git commit命令可以一次性把暂存区(stage)中的所有修改提交到master分支

$ git commit -m "Understand how stages works"

这时工作区已经没有工作可做了,工作区就是”干净的”

$ git status
On branch master
nothing to commit, working directory clean

管理修改
git管理的是修改,不是文件。
修改文件后,要先从工作区add到暂存区,才可以commit到master分支。
假如你第一次修改了文件,并且add到暂存区;然后第二次修改了文件,没有add到暂存区; 最后一次commit到master分支。最终的结果是只把第一次修改的文件提交到了master分支,第二次修改的文件没有提交到master分支。简单流程图就是:
first change -> git add -> second change -> git commit
正确的操作是在第二次改变文件之后,也要添加到暂存区(stage),最终一并提交到master分支。
小结
git commit只提交暂存区中的内容。
撤销修改
当你不小心在readme.中添加了一条错误的内容后,你发现的及时还可以删除它。(git认为你已经做了修改)但是,然后呢?如何在git中撤销你所做的修改呢?

$ 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:   readme.txt

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

使用git checkout -- readme.txt放弃修改。
注意:不可以省略掉--,省略掉后就成了另一个命令了。
checkout可以做两件事:1、放弃工作区的修改
2、放弃前一次修改add到暂存区(stage)后又增加的修改

假如你发现你已经把修改提交到了stage还未提交到master分支,可以 用git reset HEAD readme.txt.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值