创建版本库

版本库,又称仓库,英文名为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. Swift中文教程 第2章 基本运算符 (20140604更新)

    今天我在下午又进行了新的翻译,之前我翻译的大家有没有看啊,感觉如何,我昨天下午不小心点了什么原先的文章都没了,大家的评论也没了,现在我也找不回来了,希望大家能继续给我新的评论和支持点个推荐,毕竟现在学 ...

  2. 2016年JS面试题目汇总

    1.怎样添加.移除.移动.复制.创建和查找节点? //1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 ...

  3. 【PHP开发】国外程序员收集整理的 PHP 资源大全

    依赖管理 依赖和包管理库 Composer/Packagist:一个包和依赖管理器 Composer Installers:一个多框架Composer库安装器 Pickle:一个PHP扩展安装器 其他 ...

  4. ViewStub的简单用法和说明

    最近无意间知道了ViewStub,所以特地的去了解了一下 都知道ViewStub是一个不可见的,大小为0的View,实际上跟include差不多,但是ViewStub要更加节约资源.被称为是" ...

  5. HTML5 input placeholder 颜色修改示例

    Chrome支持input=[type=text]占位文本属性,但下列CSS样式却不起作用: CSS 复制代码 代码如下: input[placeholder], [placeholder], *[p ...

  6. 获得Window窗口权限的三种方法

    1.第一种方法:利用视图控制器自带的View的window属性:  具体使用 self.view.window.rootViewController = ... 2.第二种方法:通过导入APPDele ...

  7. Python实例2

    2.企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:20万到40万之间 ...

  8. libgcc_s.so.1 must be installed for pthread_cancel to work

    首先 whereis 看一下 有没有 libgcc_s.so.1 有的话 记得gcc --o xxx xxx.c -lpthread -lgcc_s

  9. poj2368 Buttons Nim取石子游戏

    链接:http://poj.org/problem?id=2368 和前面差距还是很大啊囧 代码: k,a;main(i){,i=;i<=k/&&k%i;++i);k%i||(a ...

  10. 计算机网络自学之路------IP协议(1)

    1)TCP/IP模型与OSI对应 2)TCP/IP集每层主要协议 3)IP协议 4)IP地址的命名与使用 5)子网与子网掩码 1)TCP/IP模型与OSI对应关系 我们看到,TCP/IP只有四层与OS ...