创建版本库

版本库,又称仓库,英文名为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. PHP与Golang如何通信?

    PHP与Golang如何通信? 最近遇到的一个场景:php项目中需要使用一个第三方的功能(结巴分词),而github上面恰好有一个用Golang写好的类库.那么问题就来了,要如何实现不同语言之间的通信 ...

  2. libev学习(一)

    一.libev简介 Libev是一个事件循环:你注册感兴趣的特定事件(比如一个文件可以读取时或者发生超时时),它将管理这些事件源,将这些事件反馈给你的程序.为了实现这些,至少要在你的进程(或线程)中执 ...

  3. Scrollview嵌套Listview运行后最先显示出来的位置不在顶部而是中间问题

    问题: Scrollview里面嵌套了一个Listview ,通过设置一个方法设置了Listview的高度,现在的情况就是进到这个界面的时候看到的不是最上面 而是中间 解决办法: 设置ListView ...

  4. STM32启动代码分析 IAR 比较好

    stm32启动代码分析 (2012-06-12 09:43:31) 转载▼     最近开始使用ST的stm32w108芯片(也是一款zigbee芯片).开始看他的启动代码看的晕晕呼呼呼的. 还好在c ...

  5. java高级规范之一

    一.不允许使用汉语拼音命名 不规范示例: public void zengjiaYongHu{}//拼音方法名称 规范示例: public void addUser(){} 解析:应该使用国际化语音, ...

  6. Web Deploy安装时显示Web Management Service无法启动

      在安装显示如题错误,看了日志: IISWMSVC_STARTUP_UNABLE_TO_READ_CERTIFICATE 无法读取带有指纹"3f60e39108a7e4c54f671b75 ...

  7. 电脑重装BIOS设置中文翻译

  8. 接口 Post

    public static StringBuilder HttpPost(string Url, byte[] Postdata, string i) { StringBuilder content ...

  9. You need to use a Theme.AppCompat theme (or descendant) with this activity

    经过本人的经验和在网上查找,有2种方法可以解决. 解决步骤已经写到我的公众号,二维码在下面. 欢迎观看我的CSDN学院课程,地址:http://edu.csdn.net/course/detail/2 ...

  10. sql join,left join,rigt join

    left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录.right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录.inner join: 内连接,又叫等 ...