Git常用命令

本篇是根据ProGit整理的常用Git命令,注释比较简单,如需详细了解Git,请阅读ProGit。

  • 状态检查
git status  (查看git状态报告)
git status -s  (以紧凑的格式输出git状态)
git diff  (查看修改后还没暂存起来的内容)
git diff --cached  (查看已暂存的将要添加到下次提交里的内容)
git diff branchA branchB  (查看具体的不同内容,branchB多提交哪些内容)
git difftool  (使用图形化的界面查看文件差异)
git reflog  (查看命令历史)
git remote  (查看已配置的远程仓库名字 -v显示对应的URL)
git remote show <remote-name>  (查看远程仓库的具体信息)
git branch  (查看当前所有的分支)
git branch -v  (查看每个分支的最后一次提交)
git branch --no-merged  (查看所有未合并到当前分支的分支 --merged是已合并的分支)
  • 标签管理
git tag  (以字母顺序列出已有tag)
git tag -a <version> -m "message"  (创建一个附注标签,推荐)
git tag -a <version> -m "message" <commitId>  (后期打标签)
git tag <version>  (创建一个轻量标签)
git tag -d <version>  (删除标签)
git push origin <tagName>  (推送标签到远程仓库,因为默认不会推送标签到远程仓库,需显示推送)
git push origin --tags  (将所有不在远程仓库的标签全部推送上去)
  • 远端与本地的交互
//使用Git管理项目
git init (在现有目录中初始化仓库,对现有项目进行管理)
git clone https://github.GreenBeanD/project [newName]  (克隆一个Git仓库,[]内容为可选,意为重命名仓库的名字)
git remote add <name> <url>  (添加一个新的远程仓库并指定引用名称例如origin)
git fetch <remote-name>  (从远程仓库获取数据,不会自动合并)
git pull  (从远程仓库获取数据,自动合并到当前所在分支,这是在只有一个追踪分支时的省略参数指令)
git pull <remote-name> <remoteBranch-name>:<localBranch-Name>  (将远程仓库的指定分支合并到本地的指定分支,不带冒号后的内容意味合并到当前分支)

//添加远程仓库分支到本地
//git pull默认不会将远程仓库的所有分支同步到本地,所以我们需要手动的添加一些需要的远程仓库的分支,主要过程是:
//在本地新建一个分支并将此与远程分支关联
git branch -r //查看远程分支,假设我们要添加远程仓库的dev分支`origin/dev`
git branch dev origin/dev //新建分支并关联,这里最好保持本地分支和远程分支名称一致,可以避免pull的时候需要指定本地分支的名字
git pull origin dev //将远程分支dev数据同步到本地dev分支
// 本地分支已存在想直接关联线上的分支
git fetch origin 分支名(然后就可以push到线上了)

git push <remote-name> <branch-name>  (将本地分支推到远程主分支)
git remote rename <oldname> <newname>  (重命名远程仓库)
git remote rm <remote-name>  (删除远程仓库)
  • 提交与修改
//使用Git提交
git add <file>  (开始跟踪文件或将已跟踪文件放入暂存区,添加当前全部文件: git add .)
git commit -m "提交"  (提交修改)
git commit -a -m "提交"  (跳过add步骤直接提交,只会自动添加跟踪过但未暂存的文件,未跟踪的文件不会自动跟踪)
//移除文件
git rm <file>  (从工作目录中删除文件,文件真的就没有了哦)
git rm -f <file>  (对于之前修改过并已放入暂存区域的文件,必须强制删除)
git rm --cached <file>  (从仓库中移除,但在工作目录中保留,换句话说移除跟踪,文件保留)
//文件重命名
git mv <oldName> <NewName> 
//撤销操作
git commit --amend  (重新提交,所以在此操作之前应该补全漏掉的操作)
git reset <file>  (取消文件暂存操作)(reset操作可用于版本回退)
git reset --hard  (取消某个提交之后的所有修改)
          --hard 表示取消某个提交之后的所有修改并且不保留被修改的部分
          --mixed 表示取消某个提交之后的所有修改但是保留被修改的部分,reset默认是mixed
git checkout -- <file>  (撤销指定文件当前的所有修改到暂存状态或最初状态,视文件为已暂存还是未暂存决定)
//不得不说的reset和revert
//git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留
//git reset 是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区 --hard是直接放弃所有修改,不会保留
git revert commitId
  • 分支模型部分
git branch <branchName>  (创建新分支)
git checkout <branchName>  (切换到指定分支)
git checkout -b <branchName>  (创建并切换到指定分支)
git branch -d <branchName>  (删除指定分支 -D强制删除)
git merge <branchName>  (将指定分支合并到当前分支)
git rebase <branchName>  (将指定分支以rebase的方式合并到当前分支,这种方式合并后的分支是一条直线,强迫症患者的福音)
git mergetool  (使用图形化工具来解决冲突)

简单说明下rebase:


rebase-origin.png

rebase-end.png

上边两图分表代表了rebase之前和之后的分支路线,可见,当前分支topic分支中的修改被依次添加到master分支新增内容之后,这样合并后的分支不会分叉。
如果在rebase过程中发生了冲突,在命令行中会提示在哪一个文件中发生了冲突,到对应文件中修改之后执行git add 然后继续rebase --continue即可。

  • Log部分
git log  (按提交时间列出所有更新)
git log -p -2  (-p用来显示每次提交的内容差异 -2用来限定显示数量,数字可以任意填写,当然数量这个参数也可不指定,Git会自动分页)
git log --stat  (查看每次提交的简略统计信息,如修改数量 --shortstat 简短的显示)
git log --name-only  (仅在提交信息后显示已修改的文件清单)
git log --name-status   (显示新增、修改、删除的文件清单)
git log --graph  (带有分支合并历史的展示方式)
git log --pretty=oneline  (将每个提交放在一行显示,除了online还有short、full、fuller等)
git log --pretty=format:"%h - %s"  (按指定格式输出记录format后可以自定义任意的输出格式)
`  %H  (提交对象(commit)的完整哈希字串)  %h  (提交对象的简短哈希字串)
`  %T  (树对象(tree)的完整哈希字串)  %t  (树对象的简短哈希字串)
`  %P  (父对象(parent)的完整哈希字串)  %p  (父对象的简短哈希字串)
`  %an (作者(author)的名字)  %ae (作者的电子邮件地址)  
`  %ad (作者修订日期(可以用 -date= 选项定制格式))  %ar (作者修订日期,按多久以前的方式显示)
`  %cn (提交者(committer)的名字)  %ce (提交者的电子邮件地址)
`  %cd (提交日期(可以用 -date= 选项定制格式))  %cr (提交日期,按多久以前的方式显示)
`  %s  (提交说明)
git log --left-right branch1...branch2   (只查看不同的提交,该指令会列出两个分支不同的提交,branchA的提交用<标识,branchB的提交用>标识)
     例如:commit > 9f9b4f383c521b3598c008c1a0 (HEAD -> branchA)
     commit < 3598c008c1a03598c008c1a0 (HEAD -> branchB)
git log branchA..branchB  (查看branchB比branchA多的提交)
git log --oneline --decorate  (查看各个分支当前所指对象 --oneline可省略,仅用来指明在一行显示)
git log --oneline --decorate --graph --all  (查看提交历史,各个分支的指向以及项目的分支分叉情况)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • git config —global user.name “Nshen” //必须git config —glob...
    困卡阅读 361评论 1 9
  • 一、基本操作 用 git init 来在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是...
    千山万水迷了鹿阅读 416评论 0 0
  • 分布式版本管理工具 git属于分布式 svn集中式 git安装 git初始化一个仓库 其实就是创建了一个.git隐...
    SnowDragonYY阅读 1,499评论 0 0
  • 查看分支:$ git branch 该命令会类出当先项目中的所有分支信息,其中以*开头的表示当前所在的分支。...
    Yasin27878阅读 255评论 0 0
  • 早上醒来,透过窗帘的薄纱看到天气阴沉沉的,昨晚的雾霾还没消失。 曾经最怕没有星星和月亮的深夜,黑漆漆的...
    0eac9291b341阅读 334评论 1 3