Git是什么

git是目前最先进的分布式版本控制系统,它的核心架构如下图所示,分为四个核心区域。git的常用命令主要是关于这四个区域。

  • 本地工作区-work
    本地工作区就是我们实际电脑中的文件夹以及文件。

  • 缓存区-index
    英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所 以我们把暂存区有时也叫作索引(index)

  • 本地仓库-resp
    工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

  • 远程仓库-remote
    相对于本地仓库只能你一个人访问,在需要多人协作的时候功能可以再公有网络上建立一个仓库,提供大家一起访问

常用基本命令

  1. 初始化一个git仓库,默认为当前目录也可以指定目录

    git init
    git init repo-name

  2. 基于远处仓库初始化本地仓库。基于远程链接初始化本地仓库,也可以指定本地仓库的地址

    git clone url
    git clone url directory

  3. 查看在你上次提交之后是否有修改。使用该命令的时候加了 -s 参数,以获得简短的结果输出。

    git status
    git status -s

  4. 查看执行 git status 的结果的详细信息

    git diff 查看尚未缓存的修改
    git diff -cached 查看已经缓存的改动
    git diff HEAD 查看已经缓存和未缓存的改动
    git diff --stat 显示摘要而非整个diff

  5. 删除文件,删除之后务必要提交

    git rm file 删除工作区和暂存区
    git rm -f file 修改未提交时需要强制删除
    git rm --cached file 只删除缓存区不删除工作区
    git rm -r * 递归删除

本地工作区和其他区域交互常用命令

  1. 与缓存区交互

    git add file 将工作区指定新增内容或者修改内容提交到缓存区。
    git add . 包括所有内容,名字可以使用匹配表达式(*.sh)
    git checkout file 将缓存区的file覆盖工作区

  2. 与本地仓库交互

    git checkout HEAD file 从本地仓库中检出文件,会覆盖缓存区和工作区
    git commit -am file 直接将工作区文件提交本地仓库省略了git add这一步

  3. 与远程仓库及交互

    git pull origin next:master 取回远程主机origin的next分支的更新,再与本地的master分支合并,同时更新了工作区、缓存区、本地仓库
    git pull 如果当前分支只有一个追踪分支,连远程主机名都可以省

缓存区和其他区域交互常用命令

  1. 与本地仓库交互

    git commit -m file 指定文件暂存区里的改动给提交到本地的版本库
    git reset file 本地仓库和缓存区回退到上一个版本,本地工作区内容不变
    git reset -soft file 本地仓库回退版本,可直接commit
    git reset -hard file 彻底回退版本,工作区内容被覆盖

本地仓库和其他区域交互常用命令

  1. 与远程仓库交互

    git remote 管理远程仓库的工作,包括添加远程库,移除废弃的远程库,管理各式远程库分支,定义是否跟踪这些分支
    git push 将本地仓库的更新推送至远程仓库
    git fetch 获取远程仓库的更新到本地仓库

git 文件的状态标识

  • A: 你本地暂存区新增的文件(本地仓库中没有).

  • C: 文件的一个新拷贝.

  • D: 你本地删除的文件(服务器上还在).

  • M: 工作区文件的内容或者mode被修改了.

  • R: 文件名被修改了。

  • T: 文件的类型被修改了。

  • U: 文件没有被合并(你需要完成合并才能进行提交)。

  • X: 未知状态(很可能是遇到git的bug了,你可以向git提交bug report)。

Git 和SVN

在直观的使用层面我们可以发现git是分布式的,svn是集中式的。我们在使用git的时候无需搭建服务器即可以进行版本控制,只有在需要多人共享的时候,才需要服务器端。而SVN必须是有一个服务器端。
git 和 svn 对文件版本控制的方式也不同,这一点对使用者来说是透明的
如果你有svn的使用经验,在windows环境下,推荐使用TortoiseGit,git图形客户端。上手较为方便,但是也需要了解git的结构以及基本命令。


以上内容只是对git做了一个简单的介绍,在后续的使用过程中有机会了会对各个命令做详细的介绍。


Git常用简介的更多相关文章

  1. iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

    一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Bened ...

  2. 版本控制工具——Git常用操作(上)

    本文由云+社区发表 作者:工程师小熊 摘要:用了很久的Git和svn,由于总是眼高手低,没能静下心来写这些程序员日常开发最常用的知识点.现在准备开一个专题,专门来总结一下版本控制工具,让我们从git开 ...

  3. Git常用操作指南

    目录 前言 Git简介 安装之后第一步 创建版本库 本地仓库 远程仓库 版本控制 工作区和暂存区 版本回退 撤销修改 删除文件 分支管理 创建与合并分支 解决冲突 分支管理策略 状态存储 多人协作 R ...

  4. 10年阿里自动化测试架构师帮您收集的:git常用命令大全以及git原理图【泣血推荐,建议收藏】

    一.Git分布式版本控制简介 ​ Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.本来想着只把最有用.最常用的 Git 命令记下来, ...

  5. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  6. Git 常用命令

    一.初始環境配置 git config --global user.name "John Doe"git config --global user.email johndoe@ex ...

  7. 记录 git 常用的操作命令总结

    记录 git 常用的操作命令总结 2016-12-15 16:44:04 作为一名开发者,熟悉使用 git 代码管理工具是一项必备的基本技能.git 相较 SVN 而言,其优点不言而喻.git 的功能 ...

  8. Git 常用命令详解

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...

  9. git常用的命令集合

    Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone g ...

随机推荐

  1. 【转】Javascript错误处理——try…catch

    无论我们编程多么精通,脚本错误怎是难免.可能是我们的错误造成,或异常输入,错误的服务器端响应以及无数个其他原因. 通常,当发送错误时脚本会立刻停止,打印至控制台. 但try...catch语法结构可以 ...

  2. Exchanger兄弟线程间数据信息交换

    一.简述 Exchanger可以在两个线程之间交换数据,只能是2个线程,他不支持更多的线程之间互换数据.当线程A调用Exchange对象的exchange()方法后,他会陷入阻塞状态,直到线程B也调用 ...

  3. SSM-Spring-10:Spring中cglib动态代理

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 何为动态代理,就不扯皮了,上一篇博客刚刚提到,那cglib动态代理又怎么写,我拿个和上个例子相似的案例来写 具 ...

  4. sql server 高可用故障转移(3)

    虚拟磁盘创建 前面我们已经搭了域和两台sql 服务器, 下面我们准备让DC域服务器除了担当域控制器外,还行使另一个职能:充当集群共享存储. 集群共享存储是由群集内的每个节点都能共同访问的一个存储设备, ...

  5. 读书笔记---HTML5实战 MARCO CASARIO(后六章)

    画布叠加:用CSS的z-index和position; 第八章 HTML5通信API ①XMLHTTPREQUEST是JS中用于服务器交互的API; ②用HTML5的POSTMESSAGE API实现 ...

  6. javascript this 的工作原理

    JavaScript 有一套完全不同于其它语言的对 this 的处理机制. 在五种不同的情况下 ,this 指向的各不相同. 1.全局范围内 当在全部范围内使用 this,它将会指向全局对象. 2.函 ...

  7. CentOS安装JAVA

    http://hermosa-young.iteye.com/blog/1798026 每次都要搜索一下太麻烦了,留个底,方便以后查询 一般情况下,我们都要将linux自带的OPENJDK卸载掉,然后 ...

  8. BZOJ_1833_[ZJOI2010]count 数字计数_数位DP

    BZOJ_1833_[ZJOI2010]count 数字计数_数位DP 题意: 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 分析: 数位DP f[i][ ...

  9. Twitter分布式自增ID算法snowflake原理解析

    以JAVA为例 Twitter分布式自增ID算法snowflake,生成的是Long类型的id,一个Long类型占8个字节,每个字节占8比特,也就是说一个Long类型占64个比特(0和1). 那么一个 ...

  10. Postman----presets与环境变量的联合使用

    一.环境 在开发不同阶段,可能存在不同的环境(对我碰到的就是服务器地址/api版本/header信息等不一样),比如 debug环境和release环境,每次切换环境测试的时候都得重新配置url信息, ...