简单的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. vue 脚手架搭建步骤!

    ========================================================== 说出来都是泪,最开始都不知道从哪里开始(回头一看还是很简单的,关键是要找到入口)  ...

  2. (九)分布式服务----Zookeeper注册中心

    ==>>点击查看本系列文章目录 首先看一下几种注册中心: 最老的就是Zookeeper了, 比较新的有Eureka,Consul 都可以做注册中心.可以自行搜索对比三者的优缺点. Zook ...

  3. 你所不知的 PHP 断言(assert)

    PHP 中的断言常用于调试,检查一个表达式或语句是否为 FALSE.本文带你重新认识 PHP assert() 函数的神(Qi)通(Yin)广(Ji)大(Qiao). 本文基于 PHP Version ...

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

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

  5. MySQL的过滤(极客时间学习笔记)

    数据过滤 SQL的数据过滤, 可以减少不必要的数据行, 从而可以达到提升查询效率的效果. 比较运算符 在SQL中, 使用WHERE子句对条件进行筛选, 筛选的时候比较运算符是很重要. 上面的比较运算符 ...

  6. oracle查询中会使索引无效的情况总结

    总结一下oracle中会使索引无效的情况 1 无where条件: 2 索引列进行运算时: 3 使用like,并且通配符在前的情况: 4 字符型字段为数字时在where条件里不添加引号: 5 not i ...

  7. 2.InfluxDB-InfluxQL基础语法教程--目录

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

  8. 155--MinStack

    /* 解法一:使用链表从0实现栈,用min来存放最小值. 复杂的地方是,如果pop了最小的数,就要遍重新找到最小的数. */ public class MinStack { List<Integ ...

  9. os模块,sys模块,json和pickle模块,logging模块

    目录 OS模块 sys模块 json和pickle模块 序列化和反序列化 json模块 pickle logging模块 OS模块 能与操作系统交互,控制文件 / 文件夹 # 创建文件夹 import ...

  10. 使用策略组禁止win10某个程序运行

    打开策略组:win+R----gpedit.msc 一.计算机配置——windows设置——安全设置——软件限制策略——其他规则——空白处右键,新建哈希规则 点击浏览,并不安全级别设置为不允许,选中程 ...