简单的Git基础概念:

repository:  仓库

track:     跟踪

stage:    暂存

commit:     提交

push:         推送

pull:       拉取

一、获取Git仓库

在现有目录中初始化仓库

git init

若在一个已经存在文件的文件夹中初始化Git仓库来进行版本控制,应该开始跟踪文件并提交 git add 来跟踪文件, git commit来提交文件

git add *.c

git add LICENCE

git commit -m 'initial project version'

克隆现有的仓库

克隆仓库的命令格式是git clone [url] 比如要克隆的可链接库 libgit2 ,可用下列命令:

git clone https://github.com/libgit2/libgit2

这段命令的含义是,在当前目录下创建一个名为"libgit2"的目录,并在这个目录下初始化一个.git文件夹,从远程仓库中拉取所有数据放入.git中文件

夹中,然后从中读取最新版本文件的拷贝。

如果想克隆远程仓库,自定义本地仓库的名字,可以使用如下命令:

git clone https://github.com/libgit2/libgit2/ mylibgit

git clone https://github.com/LIU-HONGYANG/introdatascience github

Git基础-记录每次更新到仓库

git中,工作目录下,文件的状态不外乎两种:已跟踪或未跟踪

已跟踪:

已经跟踪的文件是已经纳入版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改、已修改、或放入暂存区

未跟踪:

工作目录中除已经跟踪的文件以外其它都属于未跟踪的的文件,它们既不存在于上次快照的记录当中,也没有放入暂存区。

注:初次克隆某个版本的仓库时,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

检查当前文件状态

使用git status来检查当前文件的状态,如果在克隆仓库后立即使用此命令,会看到类似的输出

On branch master
nothing to commit, working directory clean

这说明所有已跟踪文件在上次提交后未被更改过, 此外还表明,当前目录下没有出现任何处于未跟踪状态的新文件。例,查看新克隆出来的git库的状态

接下来,我们创建一个新的文件HELLO.md, 并使用git status查看文件的状态

在上图中,可以看到Hello.md文件出现在未跟踪的文件下面。未跟踪意味着之前的快照没有这些文件,Git不会自动将之纳入跟踪的范围。这样可以让你防止将不想跟踪的文件包含进来。

跟踪新文件

使用命令 git add 开始跟踪一个新文件

git add Hello.md

此时再次运行git status命令,会看到 README文件已经被跟踪,并处于暂存状态:

暂存已修改文件

 

现在我们来修改一个被跟踪的文件,如果你修改了一个名为Hello.md的已被跟踪的文件,然后运行git status命令

文件Hello.md修改后,出现Changes not staged for commit, 说明已经跟踪的文件还没有放到暂存区。要暂存这次更新,运行git add命令

git add是多功能命令,可以用它开始跟踪新文件,或者把已经跟踪的新文件放到暂存区。git add命令可以使用文件或目录的路径作为参数;

如果参数是目录的路径,该命令将递归地跟踪该目录下的文件。

在暂存之后,如果继续对Hello.md修改 会发现,Changes to be commited和Changes not staged for commit都有Hello.md文件

即Git既出现在了暂存区又出现了非暂存区,为什么?实际上Git只是暂存了刚刚在运行git add命令后提交的版本,而不是在运行git commit时,在工作目录中的当前版本。所以,运行了git add后,又作了修订的文件,需要重新运行git add把最新的版本重新暂存起来。

状态简览

状态简览是指,使用一种更加紧凑的方式显示状态

$ git status -s
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt

新添加的未跟踪文件前面有??标记

新添加到暂存区中的文件有 A 标记

修改过后的文件有M标记(M在右边表示修改过但是还没提交暂存区,M在左边表示该文件修改了并放入暂存区)

这个说明,Hello.md文件已经被提交到暂存区中,但是又发生了修改

忽略文件

一般我们总会有些文件无需纳入Git管理,也不希望它们总出现在未跟踪文件列表

查看已暂存和未暂存的修改

git diff用来查看尚未暂存的文件更新了哪些部分,不加参数直接加入git diff

注:git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。

 

提交更新

在暂存区域的文件可以使用git commit运行提交命令,注:在提交之前,应该查看当前文件的状态git status.

请记住,提交时记录的是放在暂存区域的快照。 任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。 每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。

跳过使用暂存区域

git提供一个暂时跳过暂存区域的方式,只要在提交的时候加上-a选项,git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过-a步骤

移除文件

rm Hello.md

git rm Hello.md

 

移动文件

git mv Hello.md Hello

运行此命令就相当于三条命令:

rm Hello.md

git rm Hello.md

git add Hello

二、查看提交历史

git log部分由于现阶段用的比较少,所以不是很常用。

在提交了若干个更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。

查看提交历史git log命令

默认状态下,git log会按提交时间列出所有的更新,最近的排在上面。

参数-p用来显示每次提交的差异,加上-2用来显示最近两次提交

git log -p -2

一下操纵用来git log -p -1显示,最近一次提交的差异

如果想看到每次提交的总结性选项。比如说,如果每次你想看到每次提交的的简略信息,可以使用--stat

选项在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了

git log --pretty=oneline提交的信息放在一行显示

git log --pretty=format:"%h - %an"

可以用来定制要显示的记录格式

限制输出长度

git log中有限制输出长度,比如-2显示最近提交的2条信息。

还有一些限制选项,比如:

git log --since = 2.weeks

Git基础-第2章的更多相关文章

  1. Git详解之二 Git基础

    Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置: ...

  2. Git详解之二:Git基础

    Git 基础 读完本章你就能上手使用 Git 了(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读).本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到 ...

  3. Git 学习之Git 基础(二)

    Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置: ...

  4. Git详解之二 Git基础 转

    http://www.open-open.com/lib/view/open1328069733264.html Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 ...

  5. 《Pro Git》笔记2:Git基础操作

    第二章 Git基础 Git基础包括:版本库的创建和获取,文件添加修改提交等基本操作,状态查询,远程版本库管理和同步,打标签. 1.取得项目的Git版本库 基于Git的工作流要以Git版本库为基础,即可 ...

  6. 2.4 Git 基础 - 撤消操作

    2.4 Git 基础 - 撤消操作 撤消操作 任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失 ...

  7. Git基础教程(二)

    继续上篇Git基础教程(一),在开篇之前,先回顾一下上篇中的基本命令. 配置命令:git config --global * 版本库初始化:git init 向版本库添加文件:git add * 提交 ...

  8. Git 基础和原理

    Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 Git 的时候,请努力分清你对其它版本管理系统的已 ...

  9. 第五篇 -- git基础教程

    git(权威指南)基础教程第一章 git -- gitbash -- cygwin git service:gitolite 两个的目录不同 gitbash ~ windows/home/admini ...

随机推荐

  1. C#学习之委托与事件

    委托 语法:  public  delegate void MyDelegate(); 使用:  1.定义委托----public  delegate void MyDelegate(); 2.注册委 ...

  2. WebApi使用Unity实现IOC

    最近在学习ASP.NET MVC,使用Unity作为依赖注入容器.分别在WebAPI和MVC中使用.这篇文章介绍WebAPI,MVC的在下篇文章中介绍.下面是学习的一点经验. 一 IOC简单介绍 Io ...

  3. 你不知道的Golang map

    在开发过程中,map是必不可少的数据结构,在Golang中,使用map或多或少会遇到与其他语言不一样的体验,比如访问不存在的元素会返回其类型的空值.map的大小究竟是多少,为什么会报"can ...

  4. C# 去除数字中多于的0

    decimal i = decimal.Parse(Console.ReadLine()); Console.WriteLine((i).ToString(")); Console.Writ ...

  5. 开发技术--浅谈Python函数

    开发|浅谈Python函数 函数在实际使用中有很多不一样的小九九,我将从最基础的函数内容,延伸出函数的高级用法.此文非科普片~~ 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...

  6. deepin可视化程序打不开问题排查方法

    anyconnect是一个VPN软件,在deepin系统下安装完成之后,并不能够直接使用,点击启动图标之后没有反应. 要想分析问题,必须从命令行入手,错误会打印在控制台. 如何根据一个图标来找到一个程 ...

  7. vue学习指南:第四篇(详细) - vue的 :class 和 :style

    1. :class = “a” 说明 vue 中有个叫 a 的属性 这个标签的class 就是 a的值 2. :class = “{ active:isactive }” Active的存在取决于 i ...

  8. Violet音乐社区 - 总结报告

    目录 一.项目概述 1.1 项目背景 1.2 编写目的 1.3 项目文档 1.4 项目源码 1.5 项目成果 二.个人工作总结 1.1 工作概览 1.1.1 作为项目组组长 1.1.2 作为项目组成员 ...

  9. 数据库系统(五)---MySQL基础

    一.SQL基本概念: SQL 已经成为关系数据库的标准语言,是一种数据库查询和程序设计语言,用 于存取数据以及查询.更新和管理关系数据库系统. 功能不仅仅是查询,还包括数据定义.数据操纵和数据控制等于 ...

  10. 10.InfluxDB-InfluxQL基础语法教程--OFFSET 和SOFFSET子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) OFFSET 和SO ...