创建版本库

版本库,又称仓库,英文名为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. 面向小白的JS笔记 - #Codecademy#学习笔记

    前言 最初浏览过<JavaScript秘密花园>,前一段时间读过一点点<JavaScript语言精粹>和一点点<JavaScript高级程序设计>(一点点是指都只是 ...

  2. 阿里云服务器远程mysql连不上

    使用grant all privilege命令添加了远程访问账号,可是还是怎么都连不上,查了好多才知道,原来在linux下,需要开启允许对外访问的网络端口才行. 使用以下步骤即可开启3306端口: / ...

  3. 关于thinkphp中的G方法使用

    最近在研究thinkphp框架发现其中有好多东西很值得借鉴今天看了一下函数G()很适合调试出页面执行的时间和使用的内存情况具体的代码如下 <?php /** * 记录和统计时间(微秒)和内存使用 ...

  4. HDU 1839

    http://acm.hdu.edu.cn/showproblem.php?pid=1839 题意:从1到n,要求时间小于等于T到达.每条边有一个容量,问最多能运多少货物. 分析:最多能运的货物取决于 ...

  5. Magento后台手动修改订单状态方法及手动修改方法php

    订单详细内容页手动修改订单状态方法: 打开此文件:app\design\adminhtml\default\default\template\sales\order\view\history.phtm ...

  6. Azure CDN Smart Routing 功能正式上线

    经过Azure中国CDN产品团队的不懈努力,融合CDN服务的一个重要功能 Smart Routing目前已经正式上线.在接下来的一段时间该功能将逐步开放给所有客户.本文主要对Smart Routing ...

  7. HTML5地理定位

    1.通过navigator.geolocation来获取设备当前位置,返回一个位置对象,可以获得当前经纬度相关信息: 2.navgatior.geolocation的三个方法: getCurrentP ...

  8. jQuery获取带点的id元素

    一般jQuery获取某个id为elem元素,只需用$('#elem')就行了,但是如果id中不小心包括了'.' ,那么我吗就会发现这时候jQuery就不能获取到这个元素了.但是使用dom原生的getE ...

  9. Android中ExpandableListView的使用

    ExpandableListView是Android中可以实现下拉list的一个控件,具体的实现方法如下: 首先:在layout的xml文件中定义一个ExpandableListView < L ...

  10. eclipse修改web项目部署路径

    Eclipse中用Tomcat发布的Web项目,更改其部署路径 我的Eclipse的工作目录是D:/workspace 先配置Tomcat 选择你的tomcat版本 点击next 这里先不要把项目添加 ...