git 常用指令

一、总览

    1 git clone

    2 git checkout

    3 git pull

    4 git add

    5 git commit

    6 git push

    7 git fetch

    8 git branch

    9 git merge

    10 git rebase

    11 git diff

       git show

    12 git reset

    13 git stash

    14 git revert

    15 git log

    16 git reflog

    17 git cherry-pick

    18 git remote

    19 git clean

    20 git tag

    21 git help


二、详述

1 git clone

    git clone url: 克隆代码库


2 git checkout


    git checkout branchA :切换到分支A

    git checkout -b branchB origin/master :从master最新记录新建一个分支branchB

    git checkout - - fileA: 把工作区中fileA的修改给撤销掉

    git checkout -b dev2 <branch id>: 基于当前分支的某一个commit号创建分支

3 git fetch

    git fetch:把远程分支的所有改变拉回本地

    git fetch origin master: 把远程主机 origin上 master分支改变拉取到本地    

4 git pull

    git pull = git fetch + git merge

    Git pull: 把当前分支关联的远程分支的最新改变拉倒本地,并进行merge操作

    git pull origin master: 把远程master分支的最新改变拉倒本地,并进行merge操作

5 git add

    git add: 将工作区文件提交到暂存区

git add -A: 提交所有变化

    git add -u: 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)

    git add .: 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

6 git commit

    Git commit -m “ feat: 提交信息信息”:提交一次commit到存储库

    git commit - -amend 修改上一次commit信息/将本次修改amend到上一次commit

7 git push

   HEAD:当前commit的引用,可以使用HEAD代表当前引用

    git push origin local_branch:remote_branch: 将本地分支推送到远程分支

    git push origin: 如果本地分支和远程分支有绑定关系,可以省略分支名

    git push origin :staging <=> git push origin - -delete staging: 省略本地分支,相当于删除远程分支staging

    git push origin HEAD:staging: 将当前commit push到远程origin服务器的staging分支

    git push -f origin HEAD:staging: 暴力推到远程

    git push origin HEAD:refs/for/master: 进行代码review

8 git branch

     git branch -a : 查看本地和远程所有分支

     git branch -d  xx:删除本地xx分支

     git branch -m old new: 重命名分支名字

     git branch -vv: 查看当前分支和关联的远程分支

9 git merge

git merge origin/master :合并origin/master分支到当前分支,自动进行新的提交

    git merge - -no-commit origin/master:合并origin/master分支到当前分支,不自动进行新的提交

10 git rebase

    git rebase origin/master: 合并origin/master到当前分支,以rebase的方式合并过来

    git rebase - -contiue: 在rebase的过程中,如果有冲突会停止合并,解决冲突后,git add, 然后git rebase - -contiue就会继续合并之后的

    git rebase - -abort: 撤销到rebase之前的状态

git rebase -i:合并几次commit为一个连接

      1 git rebase -i commitid:合并最新提交到commitid之前的提交为一次,commitid这次不合并;

         git rebase -i  HEAD~2: 合并最近两次提交为一次commit;

        2 会跳到vim界面,修改被合并的提交指令为:squash;

         指令含义:

         pick:保留该commit(缩写:p)

         reword:保留该commit,但我需要修改该commit的注释(缩写:r)

         edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)

         squash:将该commit和前一个commit合并(缩写:s),两个注释分成两行。

         fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f),只保留前一个commit信息。

         exec:执行shell命令(缩写:x)

         drop:我要丢弃该commit(缩写:d)

        3 如果有冲突解决冲突,修改完成之后,然后:

         Git add .

         git rebase - -contiue

        4 git push -f HEAD:staging(git push -f前再次检查git log)

11 git diff:

      git diff:  不加参数即默认比较工作区与暂存区

    git diff commitid commitid:  比较两次提交之间的差异

    git diff commitid [<path>]:  比较工作区path路径文件和指定提交之间的差异

    git diff HEAD [<path>]:  比较工作区path路径文件和最新本地库之间的差异   

12  git show

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

    git show--name-only[commit]:显示某次提交发生变化的文件

    git show[commit]:[filename]:显示某次提交时,某个文件的内容

13 git log

    git log -p :查看每个更新之间的差异,按F下一页比较

    git log -p -2: 查看最近两个提交之间的差异

    git log - - author=liwenfeng: 查看author是liwenfeng的commit

    git log - - committer=liwenfeng:查看提交者是liwenfeng的commit

    git log - - grep=xx: 查看含关键字的提交

git log--pretty=oneline:只显示commitID和备注消息

14 git stash

    git stash save -u “暂时保存”:-u: 把工作区、暂存区和新建的文件全部暂存起来;

    git stash apply/ git stash apply stash@id: 将堆栈中最近一次改变回复到工作区,堆栈中保留这个stash提交

    git stash pop :  将堆栈中最近一次改变回复到工作区,删除堆栈中内容

    git stash list :   查看堆栈中的提交列表

    git stash show stash@{id}  : 查看某次提交的内容

    git stash drop:  删除堆栈最近一次

    git stash drop stash@{id}:  删除指定id的一次内容

    git stash clear:  清空堆栈列表

15 git revert

    git revert commitid: 生成一个新的commit,这个commit和上一次代码刚好抵消

    git commit —amend

    git push origin HEAD:refs/master

    git revert a^..c:  revert多次提交,按先后顺序提交了a,b,c 想revert掉这三次提交

16 git reset

   git reset HEAD 1.txt:撤销add到暂存区的文件

    如果文件1.TXT已经被提交到缓存区,但是我后悔add这个文件,那么用这个命令撤销对这个文件的add,此时这个文件回到工作区,如果还想回退某些修改,可以继续用上面一条指令

    (两个下划线之间没有空格)

   git reset HEAD^(或commitid):默认使用git reset,不加任何参数就是这个,回退到上一个提交版本(指定提交版本),此时commit和暂存区被回退到和指定的一样;

 git reset - -soft HEAD^(或commitid):回退到上一个提交版本(指定提交版本),此时只是回退了commit的信息,本地的源码和暂存区和回退之前是一样的;

    git reset - -hard HEAD^(或commitid):往前回退到指定版本,源码改变(所以,要慎用,可能回退之前修改的代码会丢失,特使是回退之前没有add和commit过,如果commit过,可以使用:git retlog查看历史操作的

    git reset - -mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息commitid)

 17 git cherry-pick

    git cherry-pick commitA : 把A分支上的commitA cherry到当前分支上来,并且在当前分支形成一个提交

    git cherry-pick commitid -n : 此时这个提交没有自动提交到新分支

    如果产出冲突,解决完冲突后:

    git cherry-pick - -contiue: 处理合并

    git cherry-pick - - abort: 取消cherry

    cherry多个commit,最方便操作是用ide上批量选择

18 git remote

         git remote -v: 查看远程仓库情况「显示:仓库  url」

        git remote show origin : 查看远程仓库origin的详细情况

        git remote add new_originhttps://github.com/xxx:  添加远程仓库,新的仓库名字是new_origin

        git remote rm origin: 移除远程仓库origin

        git branch -vv : 查看远程仓库分支情况

         git push origin - -delelte xx_branch: 删除远程xx_branch分支    

19 git clean

git clean -n  是一次clean的演习, 告诉你哪些文件会被删除. 记住他不会真正的删除文件, 只是一个提醒

     git clean -f  删除当前目录下所有没有track过的文件. 他不会删除.gitignore文件里面指定的文件夹和文件, 不管这些文件有没有被track过

     git clean -f <path> 删除指定路径下的没有被track过的文件

     git clean -df  删除当前目录下没有被track过的文件和文件夹

     git clean -xf 删除当前目录下所有没有track过的文件. 不管他是否是.gitignore文件里面指定的文件夹和文件

20 git tag

    git tag: 查看所有标签(按字母排序)

    git show tag1: 查看tag1的详细信息

    git tag v1.0.0: 给当前commit(HEAD)打一个标签

    git tag v1.0.0 -m “desc": 给当前commit(HEAD)打一个标签,添加描述信息

    git tag v1.0.0 commitId: 给commitId这个commit打一个标签

    git push origin v1.0.0: 把v1.0.0这个标签推送到远端

    git push origin - -tags: 推动本地所有标签

    git tag -d v1.0.0: 删除本地标签

    git push origin :refs/tags/v1.0.0:删除远程标签v1.0.0

21 git reflog

    git reflog:查看本地所有分支的操作

    恢复已经被reset - -hard的代码:git reset - -hard到上一次+git cherry-pick当前

git reflog: 查看记录

https://cloud.tencent.com/developer/article/1413097

22 tig

    1 快速把staged->unstage或是unstage ->staged

        tig进入主界面后,j/k上下移动,选择unstage后,回车,然后输入u,则把所有unstage变为staged, staged->unstage同样

        单个文件的改变,tig进入log页面后,输入s, 查看status, j/k上下选择一个文件,输入u, 即可改变状态

    2 查看commit详情

        tig进入主界面后,j/k上下移动选择commit, 回车即可查看commit详情,j/k上下选择文件

    3 快速查看不同分支代码

        tig进入主界面后, 输入r,即可看到不同的分支列表, 选中分支会回车,即可进入log界面, 选中分支后,shift+c即可切换分支    


Type 规范

type 用于说明 commit 的类别,必须为以下类型的一种:

* feat: 新的功能

* fix: 修复 bug

* docs: 只是文档的更改

* style: 不影响代码含义的更改 (例如空格、格式化、少了分号)

* refactor: 既不是修复 bug 也不是添加新功能的代码更改

* perf: 提高性能的代码更改

* test: 添加或修正测试

* chore: 对构建或者辅助工具的更改,例如生成文档

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