简单的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. 汇编之JCC指令

    版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明.2019-09-06,21:59:16.作者By-----溺心与沉浮----博客园 JCC指令决定它跳不跳转跟别的没关系,只跟EFLAG标 ...

  2. tushare库:免费的python财经数据接口

    tushare官网以及在线文档http://tushare.org/ 安装    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tus ...

  3. Django 基于 jquery 的 ajax

    <1> $.ajax的两种写法: $.ajax("url",{}) $.ajax({}) <2> $.ajax的基本使用 $.ajax({ url:&quo ...

  4. Mysql时区无法识别

    Unable to connect to database. Tried 1 times {:error_message=>“Java::JavaSql::SQLException: The s ...

  5. springboot访问服务器本地静态文件的方法

    一.继承WebMvcConfigurerAdapter,重写addResourceHandlers,在registry里面配置访问路径和映射到的服务器本地路径. import org.springfr ...

  6. vue 开发系列(十) VUE 作用域插槽

    使用场景 官方解释,有时让插槽内容能够访问子组件中才有的数据是很有用的.比如我们在使用ant-design-vue 的表格控件时. <a-table-column title="注释& ...

  7. [PHP] 三种运行模式 ISAPI模式 APACHE2HANDLER模式 CGI模式 FastCGI模式

    ISAPI模式:ISAPI是微软提供的一套标准,PHP的ISAPI模式意思是PHP在windows系统上的IIS进行配合的运行模式,在PHP5.3之后不再支持,php5isapi.dll文件,PHP进 ...

  8. django-manage.py参数

    cleanup--从数据库中删除旧数据 compilemessages--将.po文件编译为.mo以与gettext一起使用 createcachetable--为SQL缓存后端创建表 create ...

  9. 19、FTP服务器

    FTP (File Transfer Protocol) 文件传输协议的简称.主要用跨网络.跨平台的文件 传输.   FTP 支持两种工作工作模式:主动模式.被动模式.     主动模式: 客户端使用 ...

  10. 201871010126 王亚涛 《面向对象程序设计(Java)》第十周实验总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...