常用GIT命令

新建代码库

初始化项目所在目录,初始化后会在当前目录下出现一个名为 .git 的目录。

# 初始化本地仓库,在当前目录下生成 .git 文件夹
$ git init

配置

## 查看配置信息
// --local:仓库级,--global:全局级,--system:系统级
$ git config --local/--global/--system -l

## 修改配置信息
$ git config --local/--global/--system -e

## 查看当前生效的配置信息
$ git config -lg

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

## 配置长期存储密码
$ git config --global credential.helper store

克隆

## 默认在当前目录下创建和版本库名相同的文件夹并下载版本到该文件夹下
$ git clone <远程仓库的网址>

## 指定本地仓库的目录
$ git clone <远程仓库的网址> <本地目录>

## -b 指定要克隆的分支,默认是master分支
$ git clone <远程仓库的网址> -b <分支名称> <本地目录>

添加删除

## 添加指定文件到暂存区
$ git add [file1] [file2] ...

## 添加指定目录到暂存区,包括子目录
$ git add [dir]

## 添加所有修改、已删除的文件到暂存区中
$ git add -u [<文件路径>]
$ git add --update [<文件路径>]

## 添加所有修改、已删除、新增的文件到暂存区中,省略 <文件路径> 即为当前目录
$ git add -A [<文件路径>]
$ git add --all [<文件路径>]

## 添加当前目录的所有文件到暂存区
$ git add .

## 添加每个变化前,都会要求确认
## 对于同一个文件的多处变化,可以实现分次提交
$ git add -p

## 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...

## 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]

## 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

提交

## 把暂存区中的文件提交到本地仓库,调用文本编辑器输入该次提交的描述信息
$ git commit

## 把暂存区中的文件提交到本地仓库中并添加描述信息
$ git commit -m "<提交的描述信息>"

## 提交暂存区的指定文件到本地仓库
$ git commit [file1] [file2] ... -m [message]

## 把所有修改、已删除的文件提交到本地仓库中
## 不包括未被版本库跟踪的文件,等同于先调用了 "git add -u"
$ git commit -a -m "<提交的描述信息>"

## 修改上次提交的描述信息
$ git commit --amend

## 把本地仓库的分支推送到远程仓库的指定分支
$ git push <远程仓库的别名> <本地分支名>:<远程分支名>

## 删除指定的远程仓库的分支
$ git push <远程仓库的别名> :<远程分支名>
$ git push <远程仓库的别名> --delete <远程分支名>

比较差异

## 比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
$ git diff

## 比较暂存区中的文件和上次提交时的差异
$ git diff --cached
$ git diff --staged

## 比较当前文件和上次提交时的差异
$ git diff HEAD

## 查看从指定的版本之后改动的内容
$ git diff <commit ID>

## 比较两个分支之间的差异
$ git diff <分支名称> <分支名称>

## 查看两个分支分开后各自的改动内容
$ git diff <分支名称>...<分支名称>

拉取

从远程仓库获取最新版本并合并到本地。
首先会执行 git fetch,然后执行 git merge,把获取的分支的 HEAD 合并到当前分支。

## 将远程仓库所有分支的最新版本全部取回到本地
$ git fetch <远程仓库的别名>

## 将远程仓库指定分支的最新版本取回到本地
$ git fetch <远程主机名> <分支名>

## 把指定的分支合并到当前所在的分支下
$ git merge <分支名称>

## 从远程仓库获取最新版本。
$ git pull

查看

## 查看本地仓库的状态
$ git status

## 以简短模式查看本地仓库的状态
## 会显示两列,第一列是文件的状态,第二列是对应的文件
## 文件状态:A 新增,M 修改,D 删除,?? 未添加到Git中
$ git status -s

## 打印所有的提交记录
$ git log

## 打印从第一次提交到指定的提交的记录
$ git log <commit ID>

## 打印指定数量的最新提交的记录
$ git log -<指定的数量>

## 显示commit历史,以及每次commit发生变更的文件
$ git log --stat

## 搜索提交历史,根据关键词
$ git log -S [keyword]

远程库

## 列出已经存在的远程仓库
$ git remote

## 列出远程仓库的详细信息,在别名后面列出URL地址
$ git remote -v
$ git remote --verbose

## 添加远程仓库
$ git remote add <远程仓库的别名> <远程仓库的URL地址>

## 修改远程仓库的别名
$ git remote rename <原远程仓库的别名> <新的别名>

## 删除指定名称的远程仓库
$ git remote remove <远程仓库的别名>

## 修改远程仓库的 URL 地址
$ git remote set-url <远程仓库的别名> <新的远程仓库URL地址>

分支

## 列出本地的所有分支,当前所在分支以 "*" 标出
$ git branch

## 列出所有远程分支
$ git branch -r

## 列出所有本地分支和远程分支
$ git branch -a

## 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]

## 新建一个分支,并切换到该分支
$ git checkout -b [branch]

## 列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出
$ git branch -v

## 创建新分支,新的分支基于上一次提交建立
$ git branch <分支名>

## 修改分支名称
## 如果不指定原分支名称则为当前所在分支
$ git branch -m [<原分支名称>] <新的分支名称>
## 强制修改分支名称
$ git branch -M [<原分支名称>] <新的分支名称>

## 删除指定的本地分支
$ git branch -d <分支名称>

## 强制删除指定的本地分支
$ git branch -D <分支名称>

## 切换到已存在的指定分支
$ git checkout <分支名称>

## 创建并切换到指定的分支,保留所有的提交记录
## 等同于 "git branch" 和 "git checkout" 两个命令合并
$ git checkout -b <分支名称>

## 创建并切换到指定的分支,删除所有的提交记录
$ git checkout --orphan <分支名称>

## 替换掉本地的改动,新增的文件和已经添加到暂存区的内容不受影响
$ git checkout <文件路径>

## 把已经提交的记录合并到当前分支
$ git cherry-pick <commit ID>

撤销

## 重置暂存区,但文件不受影响
## 相当于将用 "git add" 命令更新到暂存区的内容撤出暂存区,可以指定文件
## 没有指定 commit ID 则默认为当前 HEAD
$ git reset [<文件路径>]
$ git reset --mixed [<文件路径>]

## 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
$ git reset <commit ID>
$ git reset --mixed <commit ID>

## 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
## 相当于调用 "git reset --mixed" 命令后又做了一次 "git add"
$ git reset --soft <commit ID>

## 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
$ git reset --hard <commit ID>

## 生成一个新的提交来撤销某次提交
$ git revert <commit ID>

## 暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop

标签

## 打印所有的标签
$ git tag

## 添加轻量标签,指向提交对象的引用,可以指定之前的提交记录
$ git tag <标签名称> [<commit ID>]

## 添加带有描述信息的附注标签,可以指定之前的提交记录
$ git tag -a <标签名称> -m <标签描述信息> [<commit ID>]

## 切换到指定的标签
$ git checkout <标签名称>

## 查看标签的信息
$ git show <标签名称>

## 删除指定的标签
$ git tag -d <标签名称>

## 将指定的标签提交到远程仓库
$ git push <远程仓库的别名> <标签名称>

## 将本地所有的标签全部提交到远程仓库
$ git push <远程仓库的别名> –tags

分支合并

## 切换到dev开发分支
git checkout dev           
git pull

## 切换到master开发分支
git checkout master

## 合并dev分支到master上
git merge dev  
    
## 将代码推到master上        
git push origin master     
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351