您的位置:首页 > 其它

Git学习与使用2-版本库创建修改回退

2018-01-24 16:55 239 查看
一.版本库创建与修改

1.创建版本库

首先创建一个空目录,并且确保目录名不包含中文,例learngit:

$ cd learngit
$ pwd      //该命令用于显示当前目录


通过git init命令把这个目录变成Git可以管理的仓库:

$ git init
Initialized empty Git repository in F:/learngit/.git/


这时一个版本库就创建好了,会发现多了一个.git的目录,这个目录是用来追踪管理版本库的,千万不要手动修改里面文件。

把文件添加到版本库,我们在git目录下编写一个readme.txt文件,内容如下:

1.Git is a version control system;
2.Git is free software;


然后用命令git add把文件添加到仓库:

$ git add readme.txt


接着用命令git commit把文件提交到仓库:

$ git commit -m "wrote a readme file"


-m是本次提交的说明,最好有意义以后方便查找改动记录,commit可以一次提交多个文件,所以可以多次add不同文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."


2.修改文件

我们已经成功添加并提交了一个readme.txt文件,继续修改文件:

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


运行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被修改过了,但还没有准备提交的修改。

虽然Git告诉我们readme.txt文件被修改了,但是我们还可以用命令查看具体修改了什么:

$ git diff readme.txt      //diff意为difference


之后提交修改和提交新文件是一样两步:

$ git add readme.txt


在执行提交之前,我们再用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 commit -m "add distributed"
[master 6a8ab3a] add distributed
1 file changed, 1 insertion(+), 1 deletion(-)


提交之后,我们再用git status查看一下仓库的当前状态:

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


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

3.版本回退

现在我们已经学会了修改文件,现在再修改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"


现在,我们回顾一下readme.txt文件一共有几个版本被提交到Git仓库里了:

版本1:wrote a readme file

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


版本2:add distributed

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


版本3:append GPL

Git is a distributed version control system.
Git is free software distributed under the GPL.


但是在实际工作中,我们不可能记得一个几千行的文件每次都改了什么内容,但是在Git中我们可以用命令git log来查看历史记录:

$ git log
commit f1c6504b3a4a686c26743b75a41e063d98d02c8e
Author: zhangyan <32030155+yannercode@users.noreply.github.com>
Date:   Wed Jan 24 15:52:18 2018 +0800

append GPL

commit 6a8ab3afe775b79939ccd368429e19d8d5c489aa
Author: zhangyan <32030155+yannercode@users.noreply.github.com>
Date:   Wed Jan 24 11:32:45 2018 +0800

add distributed

commit 9733f81546b902c769e922011e86a562aaebc8aa
Author: zhangyan <32030155+yannercode@users.noreply.github.com>
Date:   Wed Jan 24 10:54:06 2018 +0800

wrote a readme file


如果嫌输出信息太多,我们可以加参数查看:

$ git log --pretty=oneline


现在,我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git reset命令:

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


在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^。

然后我们查看一下readme.txt文件的内容是不是add distributed:

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


如果我们想回到上个append GPL版本怎么办,我们可以用版本号指定回到某个版本:

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


但是如果找不到版本号怎么办,Git提供了一个git reflog来记录每一次的命令版本号:

$ git reflog
f1c6504 HEAD@{0}: reset: moving to f1c6504
6a8ab3a HEAD@{1}: reset: moving to HEAD^
f1c6504 HEAD@{2}: commit: append GPL
6a8ab3a HEAD@{3}: commit: add distributed
9733f81 HEAD@{4}: commit (initial): wrote a readme file


于是我们可以看到append GPL的版本号为:f1c6504.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: