git 常用指令

自己经常忘记git的指令,特意记录下

配置

全局配置(局部只需删掉--global

用户信息

1
2
git config --global user.name ""
git config --global user.email "***@qq.com"

记住密码

全局永久记住密码(局部只需删掉--global

1
git config --global credential.helper store

全局默认记住密码15分钟

1
git config --global credential.helper cache

编辑全局配置文件

1
git config --global --edit

查看已配置项

1
git config --lsit

删除配置项

1
git config --unset user.name

全局

1
git config --global --unset user.email

创建仓库

先进项目的根目录

1
git init

关联远程

关联远程仓库地址

1
2
3
4
5
6
7
8
#添加
git remote add -f origin http://xxx.git

#删除
git remote rm origin

#修改
git remote set-url origin http://xxxx.git

查看远程关联信息

1
git remote -v

添加关联多个远程仓库

分多次push

  • origin2 可自定义
1
git remote add origin2 https://xxxx.xxx.git

一次push 到 多个远程仓库

1
git remote set-url --add origin https://xxx.xxx.git

删除添加关联的远程仓库

1
git remote set-url --delete origin https://xxx.xx.git

提交代码

本地

1
2
git add .	#新增, ” . “ 表示全部
git commit -m "*****" #描述

将本地代码提交至服务器

1
2
3
#git push <远程主机名> <本地分支名>:<远程分支名>

git push origin master #master 主分支

参数 -u
将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push,这叫做simple方式,默认只推送当前分支
此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。
Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式

强制提交覆盖

会被枪杀的

1
git push -u origin master -f

删除远程仓库分支

1
git push origin --delete 分支名

下载代码

1
2
3
#git clone <项目链接> 

git clone https://******.git

指定分支

1
git clone -b 分支名 https://xxxx.git

部分下载文件

1
2
3
4
5
git init
git remote add -f orgin https://xxxx.git
git config core.sparseCheckout true
echo '文件名' >> .git/info/sparse-checkout #(在.git/info/创建个sparse-checkout文件)
git pull orgin master

更新代码

服务器 → 本地

简洁版

1
2
3
#git pull <远程主机名> <远程分支名>:<本地分支名>

git pull origin master

严谨版

1
2
3
4
5
6
7
8
#在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
git fetch origin master:temp
#把当前分支与刚下载temp分支的比较下区别
git diff temp
#将当前分支与刚下载temp分支合并
git merge temp
#删除temp分支(想保留可以不删)
git branch -d temp

强制覆盖本地

1
2
3
git fetch --all
git reset --hard origin/master
git pull

拉取远程分支(本地不存在)

跳转

查看状态

1
git status

查看当前分支

1
git branch

查看历史版本

全部

1
git log

显示记录和差异

1
git log -p

查看最近n次数

1
2
3
4
git log -n 参数

#e.g 最近10次记录
git log -n 10

单行简略、图形显示

1
git log --onelie --graph

版本回滚

1
2
3
4
git reset --hard HEAD^  #上一个版本就是HEAD^,上上一个版本就是HEAD^^

#e.g
git reset --hard 3628164

清除缓存

1
git rm -r --cached .

创建/切换分支

创建分支

  • abc 分支名
1
git branch abc

创建并切换分支

1
git checkout -b abc

切换分支

1
git checkout abc

创建本地不存在,服务器存在的分支

  • 若报fail,请先执行 pull更新下
1
git checkout -b abc orgin/abc

严瑾版(推荐)

1
2
3
4
#在本地新建一个分支,并将远程origin仓库的分支代码下载到本地分支
git fetch origin 远程分支名:本地分支名
#切换分支
git checkout 本地分支名

合并分支

将abc分支合并到当前分支

1
git merge abc

合并指定分支文件

将abc分支上的d.doc合并到当前分支

1
git checkout abc d.doc

删除分支

1
2
3
4
5
#删除abc分支
git branch -d abc

#强制删除abc分支
git branch -D abc

比较不同分支

详细差异

1
git diff branch1 branch2

简要

1
git diff branch1 branch2 --stat

指定文件差异

1
git diff branch1 branch2 文件路径

标签

新建标签

1
git tag -a 标签名 -m '描述'

删除标签

本地

1
git tag -d 标签名

远程

1
2
3
git push origin --delete 标签名

#git push origin :refs/tags/标签名

查看本地标签

1
2
3
4
git tag

#详情
git show 标签名

上传标签至远程服务器

1
git push origin 标签名

创建一个空分支

常规创建分支会包含当前的提交历史记录,下面方法创建的分支

  • 不继承任务提交记录
  • 无父节点
1
2
3
4
5
6
7
8
9
10
11
12
#生成(新分支会有当前的所有文件,但记录为空)
git checkout --orphan 分支名

#删除全部内容(手动删除也可行)
git rm -rf .

#首次提交(无内容无法提交)
git add .
git commit -m '描述'

#查看分支,现在可以看到新建的分支
git branch