git 命令(摘抄)

一、Git学习笔记01--初始化设置

1、查看git版本

$ git --version

2、设置用户姓名和邮箱

$ git config --global user.name “Craftor”

$ git config --global usrer.email “craftor0924@gmail.com”

3、设置命令别名

$ git config --system alias.st status

$ git config --system alias.ci commit

$ git config --system alias.co checkout

$ git config --system alias.br branch

--system也可以换成--global,只针对当前用户。

4、开启颜色显示

$ git config --system color.ui true

5、项目初始化

$ mkdir demo

$ cd demo

$ git init

二、Git学习笔记02--git config


1、执行下面的命令,将打开./demo/.git/config文件进行编辑

$ cd demo

$ git config -e


2、执行下面命令,将打开用户目录下的.gitconfig文件进行编辑

$ git config -e --global


3、执行下面命令,将打开git安装目录下的gitconfig文件进行编辑

$ git config -e --system


4、git config 命令可以用于读取和更改INI文件的内容。

读取[core]小节的bare的属性值

1)$ git config core.bare

false

2)如果想更改或者设置INI文件中某个属性的值

$ git config a.b something

$ git config x.y.z others

打开.git/config文件,会看到如下内容:

[a]

b = something

[x “y”]

z = others

3)git config命令也可以操作任意INI文件

$ GIT_CONFIG=test.ini git config a.b.c.d “Hello, world”

$ GIT_CONFIG=test.ini git config a.b.c.d

Hello, world

三、Git学习笔记03--git reset


Git reset 是Git最常用的命令之一,也是最危险最容易误用的命令。

用法一:git reset [-q] [] [--] ...

用法二:git reset [--soft --mixed | --hard | --merge | --keep] [-q] []

以上两种用法,都是可选项,可以使用下引用或提交ID,如果省略则相当于使用了HEAD的指向作为提交ID。

上面的两种用法的区别在于,第一种在命令中包含路径。为了避免路径和引用(或者提交ID)同名而发生冲突,可以在前用两个连续的短线(减号)作为做分隔。

第一种用法(包含了路径的用法)不会重置引用,更不会改变工作区,而是用指定提交状态()下的文件()替换掉暂存区中的文件。例如命令git reset HEAD 相当于取消之前执行的git add 命令时改变的暂存区。

第二种用法(不使用路径的用法)则会重置引用。根据不同的选项,可以对暂存区或工作区进行重置。参照下面的版本库模型图,来看一看不同的参数对第二种重置语法的影响。

命令格式:git reset [--soft | --mixed | --hard] []

1)使用参数--hard,如git reset --hard

会执行上图中的全部动作①、②、③,即:

①替换引用的指向。引用指向新的提交ID。

②替换暂存区。替换后,暂存区的内容和引用指向的目录树一致。

③替换工作区。替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的目录树内容相同。

2)使用参数--soft,如 git reset --soft

会执行上图中的操作①。即只更改引用的指向,不改变暂存区和工作区。

3)使用参数--mixed或者不使用参数(默认为--mixed),如 git reset

会执行上图中的操作①和②。即更改引用的指向及重置暂存区,但是不改变工作区。





下面通过一些示例,看一下重置命令的不同用法。


$ git reset

仅用HEAD指向的目录树重置暂存区,工作区不会受到影响,相当于将之前用git add 命 令更新到暂存区的内容撤出暂存区。引用也未改变,因为引用重置到HEAD相当于没 有重置。

$ git reset HEAD

同上

$ git reset -- filename

仅将文件filename 的改动撤出暂存区,暂存区中其他文件不改变。相当于命令git add filename 的反射操作。

$ git reset HEAD filename

同上。

$ git reset --soft HEAD^

工作区和暂存区不改变,但是引用向前回退一次。当对最新的提交说明或者提交的更改不满意时,撤销最新的提交以便重新提交。

之前提到过修补提交命令git commit --amend,用于对最新的提交进行重新提交以修补错误的提交说明或者错误的提交文件。修补提交命令实际上相当于执行了下面两条命令。(注:文件.git/COMMIT_EDITMSG保存了上次的提交日志)

$ git reset --soft HEAD^$ git commit -e -F .git/COMMIT_EDITMSG


$ git reset HEAD^

工作不改变,但是暂存区会回退到上一次提交之前,引用也会回退一次。

$ git reset --mixed HEAD^

同上

$ git reset --hard HEAD^

彻底撤销最近的提交。引用回退到前一次,而且工作区和暂存区都会回退到上一次提交的状态。自上一次以来的提交全部丢失。

四、Git学习笔记04--git checkout

检出命令git checkout是git最常用的命令之一,同时也是一个很危险的命令,因为这条命令会重写工作区。检出命令的用法如下:

用法一:git checkout [-q] [] [--] ...

用法二:git checkout []

用法三:git checkout [-m] [[-b]--orphan] ] []

上面列出的第一种用法和第二种用法的区别在于,第一种用法在命令中包含路径。为了避免路径和引用(或者提交ID)同名而发生冲突,可以在前用两个连续的短线(短号)作为分隔。

第一种用法的是可选项,如果省略则相当于从暂存区(index)进行检出。这和上一章的重置命令大不相同:重置的默认值是HEAD,而检出的默认值是暂存区。因此重置一般用于重置暂存区(除非使用--hard参数,否则不会重置工作区),而检出命令主要是覆盖工作区(如果不省略,也会替换暂存区中相应的文件)。

第一种用法(包含了路径的用法)不会改变HEAD头指针,主要是用于指定版本的文件覆盖工作区中对应的文件。如果省略,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区中和工作区中对应的文件。

第二种用法(不使用路径的用法)则会改变HEAD头指针。之所以后面的参数会写作,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入“分离头指针”的状态。在“分离头指针”状态下的提交不能被引用关联到,从而可能丢失。所以用法二最主要的作用就是切换到分支。如果省略则相当于对工作区进行状态检查。

第三种用法主要是创建和切换到新的分支(),新的分支从指定的提交开始创建。新分支和我们熟悉的master分支没有什么实质的不同,都是在refs/heads命名空间下的引用。

下图所示的版本库模型图描述了git checkout实际完成的操作。

下面通过一些示例具体看一下检出命令的不同用法。

$ git checkout branch

检出branch分支。要完成图中的三个步骤,更新HEAD以指向branch分支,以及用branch 指向的树更新暂存区和工作区。

$ git checkout

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

$ git checkout HEAD

同上

$ git checkout -- filename

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

$ git checkout branch -- filename

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

$ git checkout -- . 或写作 git checkout .

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

五、Git学习笔记05--git stash


git stash用于保存和恢复工作进度。


git stash

保存当前的工作进度。会分别对暂存区和工作区的状态进行保存。

git stash list

显示进度列表。此命令显然暗示了git stash 可以多次保存工作进度,并用在恢复时候 选择。

git stash pop [--index] []

如果不使用任何参数,会恢复最新保存的工作进度,并将恢复的工作进度从存储的工作 进度列表中清除。

如果提供参数(来自git stash list显示的列表),则从该中恢复。恢复完毕 也将从进度列表中删除。

选项--index除了恢复工作区的文件外,还尝试恢复暂存区。这也就是为什么在本章一 开始恢复进度的时候显示的状态和保存进度前的略有不同。

git stash [save [--patch] [-k|--[no]keep-index] [-q|--quiet] []]

这条命令实际上是第一条git stash命令的完整版。即如果需要在保存工作进度的时候使 用指定的说明,必须使用如下格式:

git stash save “message...”

使用参数--patch会显示工作区和HEAD的差异,通过对差异文件的编辑决定在进度中 最终要保存的工作区的内容,通过编辑差异文件可以在进度中排除无关内容。

使用-k或者--keep-index参数,在保存进度后不会将暂存区重置。默认会将暂存区和工 作区强制重置。

git stash apply [--index] []

除了不删除恢复的进度之外,其余和git stash pop 命令一样。

git stash drop []

删除一个存储的进度。默认删除最新的进度。

git stash clear

删除所有存储的进度。

git stash branch

基于进度创建分支。

参考文献:http://www.cnblogs.com/craftor/archive/2012/11/04/2754135.html

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

推荐阅读更多精彩内容

  • 因为听说过节我没有给女友送礼物,女友的朋友竟然让她和我分手,仿佛我犯了十恶不赦的大罪,实在令我油然而生满腔怒火! ...
    木龙阅读 601评论 0 2
  • 梅,“花中四君子”之一,“生于”那拥有茫茫白雪的冬天,在这个季节里,一个个小生命正含苞待放。 梅花有...
    王乐凝阅读 381评论 0 0
  • 不同 你说: 你想遇见梨花雨, 我说: 我想遇见山水心语。 走过一段路, 柳丝里有绵密的梦, 黄色...
    青庐阅读 252评论 0 0