Git常用操作

整理Git的常用命令,方便以后查找。

配置用户信息

Git的设置文件为 .gitconfig ,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。

设置用户名称和邮箱地址,--global 表示全局设置,本机上所有的Git仓库通用该配置

$ git config --global user.name "[name]"
$ git config --global user.email "[email address]"

查看配置文件

# 查看[仓库级|全局级|系统级]的 config
$ git config [--local|--global|--system] -l

# 查看当前生效的配置
$ git config -l

编辑配置文件

# 查看仓库级的config
$ git config --local -e
$ git config -e 

# 查看全局级的config
$ git config --global -e

# 查看系统级的config
$ git config --system -e

添加

# 添加指定文件到暂存区,可指定多个文件
$ git add [file1] [dir/file2] ...

# 添加指定文件到暂存区,可指定通配符;如 *.txt,匹配所有txt文件
$ git add [file-pattern]

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

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

提交

# 提交暂存区所有文件到仓库区,一定要记得添加提交信息(message)
$ git commit -m [message]

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

# 提交工作区自上次commit之后的变化,直接到仓库区 (省略 git add 那一步)
$ git commit -a 

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

删除文件

# 删除工作区文件(已被追踪的文件),并将这次删除放入暂存区
$ git rm [file1] [file2] ...

# 停止追踪指定文件(在暂存区中删除),但该文件会保留在工作区
$ git rm --cached [file]

# 文件改名(工作区),并将这个改名放入暂存区
$ git mv [file-oldname] [file-newname]

查看信息

# 检查当前文件状态
$ git status

# 显示当前分支的版本历史(按提交时间排序)
$ git log

# 简洁模式,每个提交只显示一行信息,包括 commit id(版本号)和 提交说明
$ git log --pretty=oneline

# 显示暂存区和工作区的差异
$ git diff

# 显示暂存区和上一个commit的差异
$ git diff --cached [file]

# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD

# 显示两次提交之间的差异
$ git diff [first-commit]..[second-commit]

# 显示某次提交的元数据和内容变化
$ git show [commit-id]

# 显示当前分支的最近几次操作(操作历史)
$ git reflog

分支

# 列出所有的分支,"*" 标识的是当前分支
$ git branch 

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

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

# 新建分支,但仍停留在当前分支
$ git branch [branch-name]

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

# 切换到指定分支,并更新工作区
$ git checkout [branch-name]

# 合并指定分支到当前分支
$ git merge [branch-name]

# 删除分支
$ git branch -d [branch-name]


标签

# 列出所有tag
$ git tag

# 新建一个tag在当前commit
$ git tag [tag-name]

# 新建一个tag在指定commit
$ git tag [tag-name] [commit-id]

# 新建一个tag,并指定标签注释说明
$ git tag -a [tag-name] -m "message"

# 提交指定tag到指定远程仓库( git push 默认不提交标签到远程仓库)
$ git push [remote-name] [tag-name]

# 提交所有的tag到指定远程仓库
$ git push [remote-name] --tags

# 查看tag信息
$ git show [tag-name]

# 删除本地tag
$ git tag -d [tag-name]

# 删除指定远程仓库的tag
$ git push [remote-name] :refs/tags/[tag-name]

远程同步

默认远程仓库名:origin
默认分支:master

# 抓取指定远程仓库的所有变动,不做合并,不影响工作区
$ git fetch [remote]

# 显示所有远程仓库(显示仓库地址)
$ git remote -v

# 显示指定远程仓库的信息(仓库地址、HEAD指向分支、所有分支等)
$ git remote show [remote-name]

# 增加一个新的远程仓库,并命名
$ git remote add [remote-name] [url]

# 删除指定的远程仓库
$ git remote remove [remote-name]

# 取回指定远程仓库的变化,并与本地分支合并
$ git pull [remote-name] [branch-name]

# 上传本地指定分支到指定远程仓库
$ git push [remote-name] [branch-name]

# 推送所有分支到指定远程仓库
$ git push [remote-name] --all

# 强行推送当前分支到指定远程仓库,即使有冲突
$ git push [remote-name] --force

撤销修改

# 恢复暂存区指定文件到工作区( 没"--",就变成切换分支了 )
$ git checkout -- [file]

# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit-id] [file]

# 恢复暂存区的所有文件到工作区
$ git checkout .

# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]

# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard

# 暂时将未提交的变化移到堆栈中(工作区变干净)
# 从堆栈中恢复最新的存储,--index 重新应用之前被暂存的变更
$ git stash
$ git stash pop [--index]

版本回退

# 新建一个commit,用来撤销指定的commit(commit历史会保留)
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit-id]

# 回滚到commit-id,将该commit-id之后的commit都删除。(commit历史会被删掉)
# --hard 重设暂存区和工作区
$ git reset --hard [commit-id]

抄自阮一峰老师的博文:常用 Git 命令清单

基本没啥自己整理的,该篇博文权当自己备忘用。

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

推荐阅读更多精彩内容