Git(分布式版本控制系统)——操作篇(一)

一、修改文件

1、把握版本库

修改readme.txt文件,改成如下内容:

Git is a distributed version control system.
Git is free software.

(1)查看是否被修改
运行git status命令

$ 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 status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
(2)修改的内容
git diff+文件名

$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们在第一行添加了一个“distributed”单词。
理解:git 是按行区分是否发生了改动的,比如你把git is free改为git is free software,对于git来说,是把git is free 这一行删除再添加以行git is free software。

然后在进行提交文件,提交文件和提交新文件是一样的,先进行git add,同样没有任何输出。在执行第二步git commit之前,我们再运行git status看看当前仓库的状态。

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

git status告诉我们,将要被提交的修改包括readme.txt,下一步,就可以放心地提交了

提交后,我们再用git status命令看看仓库的当前状态:

$ git status
# On branch master
nothing to commit (working directory clean)

Git告诉我们当前没有需要提交的修改,而且,工作目录是干净(working directory clean)的。

注意:A、要随时掌握工作区的状态,使用git status命令。

B、如果git status告诉你有文件被修改过,用git diff可以查看修改内容

C、git提交过程是先 git add将其添加到暂存区,git commit将其提交到当前分支,git commit -m的作用是添加本次提交的备注信息,一般写改动了什么。
git commit -a 就是将git add和git commit合并,用了git commit -a 后不用再git add

二、版本回退

1、用git log命令查看历史记录

$ git log
commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Tue Aug 20 15:11:49 2013 +0800

    append GPL

commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Tue Aug 20 14:53:12 2013 +0800

    add distributed

commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Mon Aug 19 17:51:55 2013 +0800

    wrote a readme file

git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数

`
$ git log --pretty=oneline
3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file

友情提示:你看到的一大串类似3628164…882e1e0的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。`

2、回溯到上一个历史版本
(1)首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164…882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

(2)使用git reset命令回溯
把当前版本“append GPL”回退到上一个版本“add distributed”

$ git reset --hard HEAD^
HEAD is now at ea34578 add distributed

(3)查看版本是否后退成功

$ cat readme.txt
Git is a distributed version control system.
Git is free software.

$ git log

commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao <askxuefeng@gmail.com>
Date: Tue Aug 20 14:53:12 2013 +0800
add distributed
commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <askxuefeng@gmail.com>
Date: Mon Aug 19 17:51:55 2013 +0800
wrote a readme file

(4)回溯到当前的版本

方法一:在当前页面未关闭的情况下,可以顺着往上找啊找啊,找到那个append GPL的commit id是3628164…;然后可以指定回到哪个版本库。


$ git reset --hard 3628164
HEAD is now at 3628164 append GPL

方法二:关掉电脑以后,第二天想要回溯。Git提供了一个命令git reflog用来记录你的每一次命令。

$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file

然后使用git reset –hard+commit id回到想要到达的版本就可以了。

*注意:***1、HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset –hard commit_id。

2、穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
3、要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
4、输入git reset –hard HEAD^会出现more?,或者直接弹出一大堆命令提示,那么可能是window的CMD控制台不能识别这个命令,使用git bash,或者powershell则可以回滚到上一个版本。
5、查看自分支创建以来的提交记录:git help log

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值