Git学习与使用2-版本库创建修改回退
2018-01-24 16:55
239 查看
一.版本库创建与修改
1.创建版本库
首先创建一个空目录,并且确保目录名不包含中文,例learngit:
通过git init命令把这个目录变成Git可以管理的仓库:
这时一个版本库就创建好了,会发现多了一个.git的目录,这个目录是用来追踪管理版本库的,千万不要手动修改里面文件。
把文件添加到版本库,我们在git目录下编写一个readme.txt文件,内容如下:
然后用命令git add把文件添加到仓库:
接着用命令git commit把文件提交到仓库:
-m是本次提交的说明,最好有意义以后方便查找改动记录,commit可以一次提交多个文件,所以可以多次add不同文件,比如:
2.修改文件
我们已经成功添加并提交了一个readme.txt文件,继续修改文件:
运行git status命令查看结果:
git status命令可以让我们时刻掌握仓库的状态,上面命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
虽然Git告诉我们readme.txt文件被修改了,但是我们还可以用命令查看具体修改了什么:
之后提交修改和提交新文件是一样两步:
在执行提交之前,我们再用git status查看一下当前仓库的状态:
git status告诉我们,将要被提交的修改包括readme.txt,下一步,就可以放心地提交了:
提交之后,我们再用git status查看一下仓库的当前状态:
Git告诉我们当前没有需要提交的修改,而且,工作目录是干净(working directory clean)的。
3.版本回退
现在我们已经学会了修改文件,现在再修改readme.txt文件:
然后尝试提交:
现在,我们回顾一下readme.txt文件一共有几个版本被提交到Git仓库里了:
版本1:wrote a readme file
版本2:add distributed
版本3:append GPL
但是在实际工作中,我们不可能记得一个几千行的文件每次都改了什么内容,但是在Git中我们可以用命令git log来查看历史记录:
如果嫌输出信息太多,我们可以加参数查看:
现在,我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git reset命令:
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^。
然后我们查看一下readme.txt文件的内容是不是add distributed:
如果我们想回到上个append GPL版本怎么办,我们可以用版本号指定回到某个版本:
但是如果找不到版本号怎么办,Git提供了一个git reflog来记录每一次的命令版本号:
于是我们可以看到append GPL的版本号为:f1c6504.
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.
相关文章推荐
- Git使用本地仓库之基本操作--版本回退,后悔怎么办,撤销未提交的修改
- Git学习系列(三)版本回退和管理文件的修改及删除操作
- Git学习笔记二(版本回退、工作区和暂存区、撤销修改、删除文件)
- Git学习系列(三)版本回退和管理文件的修改及删除操作
- git使用:如何进行版本回退或只是修改已提交的commit
- (1)git创建仓库、版本回退、管理修改
- Git学习系列(三)版本回退和管理文件的修改及删除操作
- 三、快速学习创建版本库、管理修改、查看状态、分支、标签、变基、克隆远程版本库
- 使用VMWare虚拟机创建CentOS版本的Linux学习环境(每一步都有截图与说明)
- Git学习笔记(2)——版本的回退,和暂存区的理解
- Git的使用三(版本回退)仅限Mac亲测
- Git学习笔记(三)---版本回退
- git基础学习(三):版本回退 git reset --hard HEAD^(或者是commit id的前几位)和git reflog
- git学习和使用(一) 本地版本库的操作
- git学习之旅(四)——回退版本
- Git使用教程2:版本库的创建和添加文件
- GIT学习日记二:Git版本回退
- git 学习二之版本回退
- GIT学习日记一:windows安装GIT和创建版本
- OS(关于版本控制)使用git 创建远程仓库-熟知这些命令行,带你装逼带你飞!