创建版本库

版本库,又称仓库,英文名为repository,版本库内的所有文件都可以被Git管理起来,即每个文件的修改、删除,Git都能跟踪。

1,在目录中创建版本库

在目录中有两种创建版本库的方法,
一是使用Bash命令行工具,即打开Bash环境直接进入该目录中,然后使用$ git init,
比如在目录中创建版本库,方法如下

在git命令行中输入:

$ cd learngit
$ git init

二是可以在合适的目录中使用鼠标右键的Git init here,采用鼠标右键这种方法的前提是安装过程中,勾选Simple contextmenu选项。如下图

Git仓库建好了,同时在当前目录下多了一个.git目录,这个用来跟踪管理版本库,千万不要删除
如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah
命令就可以看见。
注意:如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

本文使用命令行模式,如图

把文件添加到版本库:
注意:所有的版本控制系统,都只能跟踪文本文件的改动,比如txt,网页,程序代码等,而无法跟踪图片,视频,等这些二进制文件的变化。同时微软的word格式是二进制文件,所以,最好使用纯文本方式编写文件,
强烈建议使用标准的UTF-8编码,建议你下载Notepad++代替记事本!记得把Notepad++的默认编码设置为UTF-8 without BOM即可: 创建RinA01.R文件,并放到MyRScripts目录下,
1,用命令git add把文件添加到仓库,
$ git add RinA01.R
如果一次添加多个文件,可以使用git add .或者git
add -A(推荐)
git add -A:它能stages所有文件,
git add .:只能stages新文件和被修改文件,没有被删除文件


2,用命令git commit把文件提交到仓库
$ git commit -m "the first chapter code of the book",如图所示,

解释:-m参数表示后面输入本次提交的说明,最好有意义

打开RinA01.R文件,在第四行添加以下内容:

# time 2016/3/27
运行git status命令,得到结果如下

git status可以时刻掌握仓库的当前状态,表明,文件被修改过了,但是没有提交的修改

使用git diff查看修改内容:

git diff RinA01.R

结果如图,

知道了修改内容后,就可以提交到仓库了,

git add RinA01.R

git commit -m 'add distributed'

git status

如图所示:

继续对RinA01.R做修改,比如,在第五行添加如下内容:

# author:Nick

然后使用git add和git commit提交到仓库。

文件经过很多次修改,git对每次commit进行记录,当文件改乱或者文件误删,都可以从最近的一次commit恢复。
使用命令git log可以查看文件历史修改记录。显示从最近到最远的提交日志,
得到的日志信息中,commit后的数字是commit的版本号,如图所示:


版本回退:

Git的每次commit都相当于保存一个快照,
一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。 Git中,用HEAD表示当前版本,其对应一个版本号,上一个版本就是HEAD^,上上个版本是HEAD^^,第20个版本是HEAD~20。
使用命令git reset回退到上一个版本:
git reset --hard HEAD^
此时用git log,已经看不到add author的版本了,

要想回到add author版本,
1,可以使用
git reset --hard 版本号
版本号只需要完整版本号的前几位即可,

此时打开RinA01.R文件,可以看到文件恢复到最初的版本了。

如果完全忘记了版本号怎么办?
2,可以使用
git reflog
记录每次命令的信息,有版本号。

工作区Working Directory,比如MyRScripts文件夹就是一个工作区

版本库 Repository,工作区有一个隐藏目录.git,是git的版本库,其中存了很多文件,其中最重要的是称为暂存区的stage,还有git自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

文件的添加和提交的执行过程是:

1,git add,实际是把文件修改添加到暂存区

2,git commit,实际是把暂存区的所有内容提交到当前分支

开始时,git自动创建了唯一一个分支master,所以git commit就是往master分支上提交修改。

每次已修改只有通过git add添加到暂存区,然后经git commit才能把暂存区的所有修改提交。

git checkout --filename

可以丢弃工作区的修改

1,文件修改后还没有被放到暂存区,撤销修改就回到了版本库一样的状态

2,文件已经添加到暂存区,又做了修改,撤销修改回到添加暂存区后的状态

总之,就是让文件回到最近一次的git add或git commit时的状态。

如果文件修改已经添加到暂存区,可以用

git reset HEAD filename

把暂存区的修改全部撤销,重新回到工作区。

删除文件:

在Git中,删除文件也是一种修改操作,

要删除一个文件可以用

rm filename或者使用鼠标菜单删除

然后提交 git commit,这样文件就从版本库中删除了。

若是删错了,使用

git checkout-- filename

其实使用版本库的版本替代工作区的版本,无论工作区是修改还是删除,都可以一键还原

git学习2:版本库的更多相关文章

  1. Git学习--创建版本库

    什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ...

  2. Git学习 -- 新建版本库

    创建目录 mkdir git cd git 2 初始化git init #会在目录下自动创建一个.git目录,用于跟踪管理版本库,不要修改 3 向版本库中添加文件git add readme.txt ...

  3. Git学习之路(2)-安装GIt和创建版本库

    ▓▓▓▓▓▓ 大致介绍 前面一片博客介绍了Git到底是什么东西,如果有不明白的可以移步 Git学习之路(1)-Git简介 ,这篇博客主要讲解在Windows上安装Git和创建一个版本库 ▓▓▓▓▓▓ ...

  4. 学习笔记--Git安装 创建版本库 图文详解

    一.Git下载 在Windows上安装git,一般为msysgit,官网地址:http://git-scm.com/ 我下载的是Git-1.9.2-preview20140411.exe 二.Git安 ...

  5. Git教程--Git安装和版本库的创建

    Git的诞生 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了. Linus虽然创建了Linux,但Linux的壮大是靠全世界热 ...

  6. Git入门——本地版本库操作

    作为一个一直用SVN的家伙,深深地感到了自己在版本控制工具上的落伍.... 首先必须强调的是: Git与Github不是一回事. Git是目前世界上最先进的分布式版本控制系统,于2005年被linux ...

  7. [git]入门-创建版本库

    转载整理自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256 ...

  8. git入门 创建版本库, 版本管理 分支 标签

    参考: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 GIT最流行的分布式版本 ...

  9. git 工作区与版本库

    git 工作区.版本库 在我们使用git的时候,我们脑海中一定要有一个关于git的框架,如下图: 我们先对git的工作区.暂存区.本地仓库做一个基本的解释 工作区: 就是我们电脑中代码的下载目录 版本 ...

  10. 『现学现忘』Git基础 — 8、Git创建本地版本库

    目录 1.Git版本库介绍 2.创建本地版本库 场景一:创建一个空的本地版本库. 场景二:项目中已存在文件时,创建该项目的本地版本库. 场景三:在GitHub网站上创建仓库,克隆到本地. 1.Git版 ...

随机推荐

  1. C#异常语句

    try: 用于检查发生的异常,并帮助发送任何可能的异常. catch: 以控制权更大的方式处理错误,可以有多个catch子句. finally :无论是否引发了异常,finally的代码块都将被执行. ...

  2. 如何全面解决ECSHOP的jquery冲突

    主要就是Ecshop的AJAX传输类,transport.js中重写了object的对象原型,从而导致了与jq框架的冲突. 解决: 1. 删除transport.js中587行 - 636行中关于ob ...

  3. Excel替换应用

    * 是通配符 ,代表任意字符 ?也是通配符, 代表单个字符替换回车 : 按住alt键不放,然后依次通过数字键盘输入1和0两个数字,放开数字键后再放开alt键.

  4. tensorflow资料补充(很棒)

    http://tensorfly.cn/tfdoc/get_started/introduction.html https://github.com/CreatCodeBuild/TensorFlow ...

  5. JSP基础总结(运行机制、脚本元素、指令元素、动作元素)

    JSP的运行机制: 1.转译阶段:JSP页面转换成Servlet类: 2.请求阶段:Servlet类执行,将相应结果发送至客户端. 流程解释: 1.用户访问某个JSP页面 2.服务器找到相应的JSP页 ...

  6. Sep19_html/css_imooc学习笔记_1

    1. <h1></h1>标题,h1-h6从大到小 2. <p></p> 段落 3. <img src=“1.jpg”> 加入图片 4.基本结 ...

  7. UE4 不能显示中文 解决办法

    UE4 4.11.2 方法步骤: 1.在内容浏览器新建一个字体文件如图: 2.打开刚刚创建的那个字体文件: 选择Offline,会有一个弹出框点击 “是” 接下来就选择你要用到的字体 红色矩形框出的文 ...

  8. ios常见的页面传值方式

    iOS页面间的传值细分有很多种,基本的传值方式有三种:委托Delegate传值.通知NSNotification传值.Block传值,其他在项目中可能会遇到的还有:UserDefault或文件方式传值 ...

  9. jsonp解决跨域

    ajax请求: $.ajax({        type: "get",//必须使用get方式        async: false,        url: "htt ...

  10. Android——JDK的get请求方式

    layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...