Git是开源的分布式版本控制系统,能够说是开发人员必备了,每一个程序员都应该掌握。这里主要讲Git的安装与配置,工做区、暂存区、版本库的概念以及经常使用的一些命令。git
Ubuntu下能够运行如下命令安装:sudo apt install git
,安装成功后可查看Git版本:git --version
。程序员
Git 提供了一个叫作 git config 的工具,专门用来配置或读取相应的工做环境变量。缓存
这些环境变量,决定了Git 在各个环节的具体工做方式和行为。这些变量能够存放在如下三个不一样的地方:bash
git config -e --system
对配置文件进行配置。git config -e --global
对配置文件进行配置。git config -e
对配置文件进行配置。(Git的配置文件是INI格式的)分布式
开始前,须要先配置用户名和邮件地址:工具
git config --global user.name "your name"
git config --global user.email your_email
复制代码
若是用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,之后你全部的项目都会默认使用这里配置的用户信息。若是要在某个特定的项目中使用其余名字或者电邮,只要去掉 --global 选项从新配置便可,新的设定保存在当前项目的 .git/config 文件里。url
查看已有的配置信息:git config --list
。spa
理解Git是怎么工做的,主要是要理解工做区、暂存区、版本库这三个概念。3d
下面这个图展现了工做区、版本库中的暂存区和版本库之间的关系: 版本控制
工做区-->暂存区 当对工做区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工做区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
暂存区-->版本库 当执行提交操做(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会作相应的更新。即 master 指向的目录树就是提交时暂存区的目录树(这句话相对绕口一些,这里以master分支为例)。
git init
:使用当前目录做为Git仓库git init <directory>
:使用指定目录做为Git仓库git clone <repertory-url>
:克隆仓库git clone <repertory-url> <directory>
:克隆到指定目录git diff
:查看工做区的最新改动,即工做区与提交暂存区的差别git diff --cached
:查看已缓存的改动,即提交暂存区与版本库中的差别git diff HEAD
:查看工做区与HEAD(当前工做分支)的差别git diff --stat
:显示摘要而非整个 diff:HEAD :表明版本库中最近一次提交
^ :指代父提交
HEAD^:表明当前提交的上一次提交
HEAD^^:以此类推......
git reset --hard HEAD^
:回退到上一次提交。完全撤销最近的提交,工做区和暂存区都回退到上一次提交的状态。git reset --hard <commit>
:回退到指定提交git reset --hard参数会进行完全回退,工做区、暂存区、版本库内容一致,即回退到指定commit的那个状态
git branch -a
git branch -d <BranchName>
: 删除本地分支git push origin --delete <BranchName>
: 删除远程分支git add
:文件添加到缓存git add .
:添加项目的全部文件git status
:查看当前状态git commit -m"注释"
:将缓存区内容添加到仓库