git常用命令汇总

参考git详细教程:一小时学会git

1. git的分区

工作区(Working Directory)---->暂存区(Staging area)---->本地仓库(Repository)---->远程仓库(Remote Directory)

2. git设置用户名和邮箱

2.1. 全局

  • 配置文件位置:C:\Users\gobaio/.gitconfig
    git config --global user.name "gobaio"
    git config --global user.email "gobaio@163.com"

2.2. 局部

  • 配置文件位置:项目路径\.git\config
    git config --local user.name "gobaio"
    git config --local user.email "gobaio@qq.com"

3. git移除配置

git config --global --unset user.emal

4. git设置别名

  • 将commit设置别名为ci
    git config --global alias.ci commit

5.查看git的用户名和邮箱

git config user.name
git config user.email

6.查看git的所有的配置

git config -l

7.创建git仓库

7.1. 创建全新的git仓库

  1. 将当前文件夹创建为git仓库
    git init
  2. 将当前文件夹下面的子文件夹创建为git仓库
    git init project1

7.2 克隆远程仓库

git clone [url]

8.将工作区的文件添加到暂存区

8.1. 提交单个文件或文件夹

git add test.java/entity

8.2. 提交所有文件和文件夹

git add -a
git add .

9. 将暂存区的文件提交到本地仓库

9.1. 提交单个文件或文件夹

git commit test.java/entity -m “提交记录的描述”

9.2. 提交所有的文件或文件夹

git commit -am "提交记录的描述"

9.3 提交时显示所有的diff信息

git commit -v

9.4 使用一次新的commit,代替上一次提交,如果代码没有任何新变化,则用来改写上一次提交的message

git commit --amend -m [message]

9.5 重做上一次commit,并包括指定文件的新变化

**git commit --amend [file1] [file2] ... **

9.6 commit message的编写规则

9.6.1 commit message按规则编写的好处

  1. 提供更多可查询的信息
  2. 过滤重要的内容
  3. 生成changelog

9.6.2 标准的commit message的组成部分

  1. header :type(scope):subject
  2. body
  3. footer

9.6.3 commit message 中 header的type几种常用的类型、scope的规则,及subject的规则

  1. feat:新功能
  2. fix:修复bug
  3. style:格式
  4. refactor:代码重构
  5. chore:项目构建
    scope:一般填写的是模块名
    subject:一般是提交的描述

9.6.4 安装commit Message插件commitizen

  1. 安装:npm install -g commitizen
  2. 当前项目-nmp的初始化:nmp init
  3. 当前项目下-设置为angular格式的commit message:commitizen init cz-conventional-changelog --save-exact
  4. 使用:git cz,然后选择type,填写scope,填写subject,其他的不填写。

9.7 生成changelog的插件

9.7.1 安装生成changelog的工具

npm install -g conventional-changelog

9.7.2 生成所有的changelog

conventional-changelog -p angular -i CHANGELOG.md -s -r 0

9.7.3 使用changelog的注意事项

  1. feat(scope): 某些信息 :subject与前面的冒号之间需要有一个空格
  2. scope必须使用小括号包裹

9.8 撤销上一次提交

git reset --hard HEAD~1

10 查看文件状态

10.1 查看所有文件详细状态信息

git status

10.2 查看单个文件详细状态信息

git status test.java

10.3 查看所有文件的简要信息

git status -s

11.将文件从暂存区删除文件,工作区不做改变(撤销git add 操作)

11.1 只从stage中删除,保留物理文件

git rm --cached readme.txt

11.2不但从stage中删除,同时删除物理文件

git rm readme.txt

11.3 把a.txt改名为b.txt

git mv a.txt b.txt

12. 签出 -checkout

12.1.检出branch分支。更新HEAD以指向branch分支,以及用branch 指向的树更新暂存区和工作区。

git checkout branch

12.2.汇总显示工作区、暂存区与HEAD的差异。

git checkout
git checkout HEAD

12.3.用暂存区中filename文件来覆盖工作区中的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改。

git checkout -- filename

12.4.维持HEAD的指向不变。用branch所指向的提交中filename替换暂存区和工作区中相 应的文件。注意会将暂存区和工作区中的filename文件直接覆盖。

git checkout branch -- filename

12.5.注意git checkout 命令后的参数为一个点(“.”)。这条命令最危险!会取消所有本地的 #修改(相对于暂存区)。相当于用暂存区的所有文件直接覆盖本地文件,不给用户任何确认的机会!

git checkout -- . 或写作 git checkout .

12.6.如果不加commit_id,那么git checkout -- file_name 表示恢复文件到本地版本库中最新的状态。

git checkout commit_id -- file_name

12.7 新建一个分支 执行指定的提交(commit)

git branch [分支名] [commit id]

13 日志

13.1 查看详细日志

git log

13.2 查看有格式的日志

git log --oneline

13.3 查看n行日志

git log -n
git log -n --oneline

13.4 查看所有日志

git reflog

13.5 日志过滤

git log --oneline | grep [message]

14 远程仓库和远程分支

14.1 克隆master分支(当不指定分支名的时候,默认就是克隆master分支)

git clone [url]

14.2 克隆指定分支

git clone -b [branch name] [url]

14.3 指定远程仓库名克隆(不使用默认的origin名字)

git clone -o [自定义分支名] [url]

14.4 删除远程分支

  1. 常规命令
    git push [远程仓库名(一般为origin)] --delete [远程分支名]
    git branch -dr [远程仓库名]/[远程分支名]
  2. push时省略本地分支名(推送一个空分支到远程的某个分支上)
    git push [远程仓库名] :[远程分支名]

14.5 推送到远程仓库

git push [远程仓库名(一般为origin)] [远程仓库中的分支名]

14.6 查看远程仓库的信息

git remote -v

14.7 查看某个远程仓库的信息

git remote show [远程仓库名(一般为origin)]

14.8 将本地分支提交到远程的仓库

git remote add [远程仓库名(默认是origin,可以修改为任意哦)] [url(远程仓库地址)]

14.9 删除与本地仓库关联的远程仓库

git remote remove [远程仓库名(默认是origin)]

14.10 新建远程仓库

git remote add [分支名] [url(远程仓库的地址)]

14.11 取回远程仓库的变化,与本地分支合并

  1. 完整写法:
    git pull [远程仓库名] [远程分支名]:[本地分支名]
  2. 简介写法(表示与当前分支合并):
    git pull [远程仓库名] [远程分支名]
  3. 合并(如果其他人将远程仓库中删除了某个分支,git pull的时候会删除对应的本地分支,为了防止这个操作)
    git pull rebase [远程仓库名] [远程分支名]:[本地分支名]
  4. 在本地删除远程仓库中已经删除的分支
    git pull -p

14.12 上传本地指定分支到远程仓库

  1. 完整写法:
    git push [远程仓库名] [本地分支名]:[远程分支名]
  2. 简介写法:(省略远程分支名,将本地分支推送到与之存在追踪关系的远程分支--通常两者同名。如果远程分支不存在,则会被新建)
    git push [远程仓库名] [本地仓库的分支名(一般和本地分支名一致)]
  3. 如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略
    git push [远程仓库名]

14.13 强行推送当前分支到远程仓库,即使有冲突

git push [远程仓库名] --force

14.14 如果当前分支只有一个追踪的分支,主机名可以省略

git push

14.15 如果当前分支与多个主机存在追踪关系,则使用-u指定一个默认主机

git push -u [远程仓库名] [本地仓库的分支名]

14.16 不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机

git push --all [远程仓库名]

14.17 推送标签到远程分支(默认是不推送标签的)

git push [远程分支名] --tag

14.18 第一次push到远程仓库,当远程仓库有文件时,应该先执行如下命令pull远程仓库的内容,再进行push

git pull [远程仓库名] [远程仓库分支名] --allow-unrelated-histories
git push -u [远程仓库名] [本地仓库分支名]

14.19 新建一个分支,与指定的远程分支简历追踪关系

git branch --track [本地分支名] [远程分支名]

15 标签tag

15.1 查看所有的标签

git tag

15.2 给当前分支打标签

git tag -a [tag name] -m [message]

15.3 向远程分支推送标签

git push --tag

15.4 为之前的某次提交打标签

git tag -a [tag name] [branch hash id] -m [message]

16. 修改的文件内容的查看

16.1 查看所有的修改过的文件的内容

git diff

16.2 查看添加到暂存区的修改的文件的内容

git diff --staged

17 分支

17.1 查看本地分支

git branch:带*号的为当前分支

17.2 查看远程分支

git branch -r

17.3 查看所有分支(本地分支+远程分支)

git branch -a

17.4 创建分支

git branch [分支名]

17.5 切换分支

git checkout [分支名]

17.6 创建并切换分支

git checkout -b [分支名]

17.7 删除分支

git branch -d [分支名]:-D(大写):强制删除

17.8 合并分支

git merge [要合并到当前分支的分支名]
如:当前在a分支,b分支上有添加的内容,需要将b分支中添加的内容合并到a分支git merge b

18 撤销

18.1 未添加到暂存区的撤销(没有git add 操作),撤销到最近的一次提交

  1. 单个文件的撤销
    git checkout --[fileName]
  2. 所有文件的撤销
    git checkout -- .

18.2 添加到暂存区的撤销(执行过git add 操作),撤销到执行过add命令之前的状态

  1. 对单个add过的,但没有commit过的文件进行撤销
    git reset HEAD [fileName]
  2. 对所有的add过的,但没有commit过的文件进行撤销
    git reset HEAD

18.3 已经提交的撤销操作(执行过git commit操作)

  1. 撤销某次commit---生成一个新的提交,当再次revert的时候,就会回到上一个版本,且再生成一个提交
    git revert [某次提交的ID]
  2. 回滚,---回退到某次提交,该提交以后的提交都会回退,且不会产生新的提交
    git reset --hard [某次提交的ID]

18.4 移除所有未被跟踪的文件(没有执行girt add操作的文件,删除物理文件)

git clean [options]:options:-df:-d:表示包含目录,-f:表示强制删除

18.5 只从暂存区中删除,保留物理文件

git rm --cached files

18.6 不但从stage中删除,同事删除物理文件

git rm files

19. 储藏(Stashing)

当在当前分支开发到中途的时候,需要切换到其他分支,当前的分支会丢失,可以使用stash命令

19.1 储藏当前修改

  1. 不添加message的
    git stash:git stash是本地的,不会通过git push命令上传到远程仓库
  2. 添加message(推荐,用于记录版本)
    git stash save [message]:给stash添加message

19.2 查看储藏列表

git stash list

19.2 重新应用缓存的stash

19.2.1 将储藏堆栈中的第一个stash删除,并将对应的修改应用到当前的工作目录下

git stash pop

19.2.2 应用指定的储藏,但不删除s堆栈中的stash

git stash apply [stashName]:如果不加stashName默认应用上一次的储藏

19.3 移除stash

  1. 删除指定名字的储藏
    git stash drop [stashName]:删除指定的stashName的储藏
  2. 删除所有的储藏
    git stash clear

19.4 取消储藏

git stash show -p [stashName] | git apply -R:如果没有指定名字,则会自动选择最近的一次储藏

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

推荐阅读更多精彩内容