1 装备Git

1.1 git config

--global 全局装备文件~/.gitconfig

--system 系统装备文件 /usr/local/git/etc/gitconfig

--local 项目库房装备文件项目途径/.git/config

--worktree 每个作业树装备文件,如未设置,默许等同于--local

# 用法
$ git config [<options>]

# 检查当时生效的装备信息,一般为一切装备文件的并集
$ git config -l
$ git config --list

# 检查装备文件
$ git config --<global |system | local> -l

# 修正装备文件
$ git config --<global |system | local> -e$ git config --<global |system | local> --edit

# 增加装备项
$ git config --<global |system | local> --add name value

# 删去装备项
$ git config --<global |system | local> --unset name [value-regex]

# 替换装备项
$ git config --<global |system | local> --replace-all name value [value-regex]

# 获取装备项
$ git config --<global |system | local> --get name [value-regex]

# 重命名装备项的section
$ git config --<global |system | local> --rename-section old-name new-name

# 移除装备项的section
$ git config --<global |system | local> --remove-section name [value-regex]

1.2 常用装备

# 装备提交记载中的用户信息
$ git config --global user.name <用户名>
$ git config --global user.email <邮箱地址>

# 装备提交信息模版
$ git config --global commit.template <~/.文件名>

# 更改Git缓存区的巨细
# 假如提交的内容较大,默许缓存较小,提交会失利
# 缓存巨细单位:B,例如:524288000(500MB)
$ git config --global http.postBuffer <缓存巨细>

# 调用 git status/git diff 指令时以高亮或五颜六色方法显现改动状况
$ git config --global color.ui true

# 装备能够缓存暗码,默许缓存时刻15分钟
$ git config --global credential.helper cache

# 装备暗码的缓存时刻
# 缓存时刻单位:秒
$ git config --global credential.helper 'cache --timeout=<缓存时刻>'

# 装备长时间存储暗码
$ git config --global credential.helper store

2 前期作业

2.1 git clone

克隆长途库房

# 克隆长途库房,默许是master分支
$ git clone <长途库房地址>

# 克隆长途库房,并指定本地库房目录
$ git clone <长途库房地址> <本地目录>

# 克隆长途库房的指定分支,并指定本地库房目录
$ git clone <长途库房地址> -b <分支名> <本地目录>

2.2 git init

在当时目录新建库房

$ git init [库房称号]

2.3 git status

检查本地库房的状况

# 检查一切文件状况
$ git status
# 检查指定文件状况
$ git status <文件称号>

2.4 git remote

操作长途库房

# 检查本地存在的长途库房
$ git remote 
# 检查本地存在的长途库房,更详细信息$ git remote -v 
$ git remote --verbose
# 增加长途库房,并指定主机名
$ git remote add <长途库房主机名> <长途库房地址>
# 删去指定的长途库房
$ git remote remove <长途库房主机名>
# 修正长途库房的主机名
$ git remote rename <旧的长途库房主机名> <新的长途库房主机名># 修正长途库房的URL
$ git remote set-url <长途库房主机名> <新的长途库房地址>

3 代码提交

3.1 git add

将作业区的改动提交到暂存区(stage)

# 将 指定文件 增加到暂存区
$ git add <文件途径>
# 将一切 修正和新增 的文件增加到暂存区,不包括 删去 的文件
$ git add .
# 将一切 修正和删去 的文件增加到暂存区,不包括 新增 的文件
$ git add -u .
$ git add -update .
# 将 一切改动的文件 增加到暂存区
$ git add -A .
$ git add -all .

3.2 git commit

将暂存区的文件提交到本地库房

# 将 暂存区一切的文件 提交到本地库房,调用文本修正器输入该次提交的描绘信息
$ git commit

# 将 暂存区一切的文件 提交到本地库房
$ git commit -m <提交信息>

# 将 暂存区指定的文件 提交到本地库房
$ git commit [文件1] [文件2] -m <提交信息>

# "git add" 指令增加的一切文件 提交到本地库房
$ git commit -a

# 将 作业区的内容 直接提交到本地库房
# 不包括未被版别库盯梢的文件,等同于先调用了 "git add -u"
$ git commit -am <提交信息>

# 修正上次提交记载的描绘信息
$ git commit --amend

4 分支指令

4.1 git branch

操作分支,分支的增修正查操作

# 检查本地库房的一切分支
$ git branch
# 检查长途库房的一切分支
$ git branch -r
# 检查本地库房和长途库房的一切分支
$ git branch -a
# 创立新的本地分支,新分支根据上一次提交建立
$ git branch <分支名>
# 删去指定的本地分支
$ git branch -d <分支名>
# 强制删去指定的本地分支
$ git branch -D <分支名>
# 修正分支名,假如不指定原分支名,则默许为当时分支
$ git branch -m [原分支名] <新分支名>
# 强制修正当时分支名
$ git branch -M <新分支名>

4.2 git checkout

检出分支,用于创立、切换分支

# 切换分支
$ git checkout <分支名>
# 创立并切换到新的分支,保存一切的提交记载
$ git checkout -b <分支名>
# 创立并切换到新的分支,删去一切的提交记载
$ git checkout --orphan <分支名>
# 替换掉本地的改动,新增的文件和现已增加到暂存区的内容不受影响
$ git checkout <文件途径>

4.3 git switch

切换分支

# 切换到已有分支
$ git switch <分支名>
# 创立并切换到新分支
$ git switch -c <分支名>

4.4 git cherry-pick

遴选分支

# 将现已提交的记载兼并到当时分支
$ git cherry-pick <commit-id>

4.5 get fetch

抓取分支,获取长途库房最新的版别

# 抓取长途库房一切分支的最新版别
$ git fetch [长途分支名]
# 抓取长途库房指定分支的最新版别
$ git fetch <长途主机名> <长途分支名>

4.6 git merge

兼并分支

# 将指定的分支兼并到当时分支
$ git merge <分支名>
# 当兼并分支后出现冲突,撤回兼并分支
$ git merge --quit

4.7 git pull

拉取分支,获取长途库房最新的版别,并兼并到本地分支

git pull == git fetch + git merge

# 拉取长途服务器上的改动,并兼并到你的作业目录
$ git pull [长途库房的地址]

4.8 git push

推送分支,将本地分支到长途库房

# 将本地分支推送到指定长途主机名下的长途分支
$ git push <长途主机名> <本地分支名>:<长途分支名>
$ git push origin master:master
# 将本地分支推送到与之存在"追寻联系"的长途分支
# 省略长途分支名,假如该长途分支不存在,则会被新建
$ git push <长途主机名> <本地分支名>
$ git push origin master
# 假如当时分支与长途分支之间存在"追寻联系",则本地分支和长途分支都能够省略
$ git push <长途主机名>
$ git push origin
# 假如当时分支只要一个追寻分支,那么主机名都能够省略
$ git push
# 假如当时分支与多个长途主机存在"追寻联系",则能够运用 -u 指定一个默许主机,这样今后就能够不加任何参数运用git push
$ git push -u <长途主机名> <本地分支名>$ git push -u origin master
# 删去指定长途主机名下的长途分支
# 省略本地分支名,等同于推送一个空的本地分支到长途分支
$ git push <长途主机名> :<长途分支名>
$ git push <长途主机名> --delete <长途分支名>

5 标签指令

5.1 git tag

标签操作

# 检查一切标签
$ git tag 
# 给指定的提交增加标签,标签名默许为提交ID
$ git tag <提交ID>
# 增加轻量标签,能够指定之前的提交记载
$ git tag <标签名> [提交ID]
# 增加带有描绘信息的附注标签,能够指定之前的提交记载
$ git tag -a <标签名> -m <标签描绘信息> [提交ID]
# 删去指定标签
$ git tag -d <标签名>

5.2 其他标签指令

# 切换到指定的标签
$ git checkout <标签名>
# 检查标签的信息
$ git show <标签名>
# 将指定的本地标签提交到长途库房
$ git push <长途主机名> <标签名>
# 将一切的本地标签全部提交到长途库房
$ git push <长途主机名> –tags

6 其他指令

6.1 git log

检查提交日志。侧重于显现版别的提交前史

# 检查一切提交日志
$ git log

# 将一切日志缩写为单行显现
$ git log --pretty=oneline

# 检查最新 n 条提交日志
$ git log -n 

# 打印从第一次提交到指定的提交的日志
$ git log <提交ID>

# 检查分支兼并状况
$ git log --graph --pretty=oneline --abbrev-commit 

# 检查分叉前史,包括:提交前史、各个分支的指向以及项目的分支分叉状况
$ git log --graph --oneline --decorate --all

6.2 git show

检查提交日志。侧重于显现版别差异,输出每个提交具体修正的内容

# 检查某次前史提交的完好日志
$ git show <提交ID>
# 检查某次前史提交的某个文件的日志
$ git show <提交ID>:<文件途径>
# 检查HEAD标签当时指向的提交的完好日志
$ git show HEAD
# 检查HEAD标签当时指向的提交的文件内容
$ git show HEAD:<文件途径>
# 检查分支最新一次提交的完好日志
$ git show <分支名>
# 检查分支最新一次提交的父提交的完好日志
$ git show <分支名^1>
$ git show <分支名~>
# 检查标签的详细信息
$ git show <标签名>

6.3 git diff

比较版别之间的差异

# 比较当时文件和暂存区中文件的差异,没有增加到暂存区(stage)
$ git diff

# 比较暂存区(stage)中的文件和当时最新版别的差异
$ git diff --cached
$ git diff --staged

# 比较当时文件和当时最新版别的差异$ git diff HEAD

# 检查从指定的提交之后改动的内容
$ git diff <commit id>

# 显现两个分支之间的差异
$ git diff <分支1> <分支2>

# 检查两个分支各自改动的内容
$ git diff <分支1>...<分支2>

6.4 git rm

删去文件或文件夹

# 删去作业目录中的文件夹,并将删去动作增加到暂存区(stage)
$ git rm -r <文件夹途径>

# 删去作业目录中的文件,并将删去动作增加到暂存区(stage)
$ git rm <文件途径>

# 删去暂存区的文件
$ git rm --cached <文件途径>

# 删去作业目录中的文件,并删去一切暂存区的文件
$ git rm -rf .

6.5 git clean

删去未盯梢的文件

# 删去一切未盯梢的文件
# -d:包括目录,-f:强制
$ git clean -df

6.6 git stash

储藏文件

# 暂时保存一切修正的文件,message为补白信息
$ git stash save <补白信息>
# 康复最近一次储藏
$ git stash pop
# 显现一切的储藏
$ git stash list
# 丢掉最近一次储藏
$ git stash drop

6.7 git reset

还原提交记载

用法:git reset --{soft | mixed | hard} HEAD

HEAD^ 上一个版别,也能够写成HEAD1。撤回2次提交,能够运用HEAD^^或许HEAD2

--mixed 不删去作业空间改动代码,吊销commit,吊销git add .操作。默许参数

--soft 不删去作业空间改动代码,吊销commit,不吊销git add .操作

--hard 删去作业空间改动代码,吊销commit,吊销git add .操作,并康复到上一次的提交状况

# 吊销最近一次的提交
$ git reset HEAD~
$ git reset --mixed HEAD~

# 重置暂存区,但能够保存文件的改动
# 相当于将用 "git add" 指令更新到暂存区的内容撤出暂存区,能够指定文件
$ git reset [文件途径]
$ git reset --mixed [文件途径]

# 改动 HEAD 指向,吊销到指定的提交记载,并在本地保存文件的改动
$ git reset <提交ID>
$ git reset --mixed <提交ID>

# 改动 HEAD 指向,吊销到指定的提交记载,并在本地保存文件的改动
# 相当于调用 "git reset --mixed" 指令后又做了一次 "git add"
$ git reset --soft <提交ID>

# 改动 HEAD 指向,吊销到指定的提交记载,并丢掉一切的前史记载
$ git reset --hard <提交ID>

6.8 git rebase

此指令执行后会弹出 vim 修正信息,修正第二行的pick为s,或许为squash,squash为兼并的意思。然后保存退出修正,会翻开第二个 vim 修正,兼并并修正 commit 内容,保存退出会产生一个新的commit id,这样就兼并了两个commit

# 兼并前两个前史提交
$ git rebase -i HEAD~2