Git大法好——2.Git本地操作指令详解

Git大法好——2.Git本地操作指令详解

标签: Git


引言

上节给大家讲解了有关于Git的一些概念,Git的引入,Git的四个组成部分,Git文件的状态,以及
Git的下载安装;前面也讲过Git和SVN有个明显的差别就是,Git可以不需要网络就可以进行版本
控制,这是因为Git中每个电脑都拥有一个本地的版本库,而远程的仓库仅仅是作为我们交换修改
的一个工具!即使失去这个工具,我们也可以干活,只是交换修改不方便罢了,假如是SVN,远程
服务器挂了...所以,我们使用Git的时候大部分时间都是在进行Git的一些本地操作,当然还有
远程服务器分支合并的一些问题等,本节我们就先来熟悉一波本地操作的一些常用指令!本节
讲解的内容概要如下:

  • 1.设置您的身份信息(git config)
  • 2.获取帮助(git help)
  • 3.创建本地的代码仓库(git init)
  • 4.将文件放入暂存区(git add)
  • 5.将暂存区的内容提交到本地仓库(git commit)
  • 6.查看当前工作区与暂存区的状态(git status)
  • 7.查看工作区与暂存区的差异(git diff)
  • 8.查看提交更改的记录(git log)
  • 9.文件恢复——未add(git checkout)
  • 10.文件恢复——已add未commit(git reset)
  • 11.文件恢复(已commit)——版本回退(git reset HEAD^)
  • 12.查看输入的每一条指令(git reflog)
  • 13.Git命令别名(git config --xxx alias.xxx xxx)
  • 14.Git命令的自动补全(按两次Tab键)

好的,开始本节内容(要先安装好Git哦!)~


1.设置您的身份信息

安装完Git,我们第一件要做的事情是先配置我们的身份信息,作为自己参与团队协作的
一个身份标记,比如谁对某个文件进行了修改,键入下述命令:

git config --global user.name "coder-pig"
git config --global user.email "779878443@qq.com"

配置完后,把""部分信息去掉,输多一次上面的指令,可以看到是否配置成功

也可以键入下述指令来查看所有的Git设置:

git config --list

另外,上面设置的配置信息是全局的,一般我们在公司上班,基本协作的都是公司
的项目,这里可以设置全局的配置,用global,可能你有自己私人的项目,那么
你可以单独的为这个项目设置一个局部的配置,键入下述命令:

git config --local user.name "coder-pig"
git config --local user.email "779878443@qq.com"

仅仅只需要把global改成local即可~此时这个仓库的git配置就不会和全局的相同,
从而可以避免一些不必要的麻烦!


2.获取帮助

和其他的命令行一样,Git同样是带有help指令的,当我们遇到没见过,又或者忘记用法的
指令,我们可以键入:

git help init

把init改成你要查询的那个指令即可!比如git help add

win下会打开一个Git的Manual(手册)的页面,可以在之类查看指令的一些用法
而Ubuntu下则会直接在命令行输出:

当然你也可以到Git官方手册中查找对应的指令!


3.创建本地的代码仓库

你可以直接键入下述指令创建一个新的带Git仓库的项目:

git init GitForTest

把GitForTest改成你想创建的工程名即可!接着我们可以来到新创建的工程的
目录下,这里需要 修改下让隐藏文件可见,就可以看到.git的文件夹里,里面
东东就是我们git仓库的东东了,切记 别随意去改或者删除里面的东西!(你也
可以键入:ls -ah来查看隐藏文件)

当然假如你已经有项目了,想在之前项目的基础上添加Git仓库,那么通

过命令行或者git bash来到当前工程的文件夹目录下,键入下述指令即可
为你的项目添加本地Git仓库:

git init

4.将文件放入暂存区

前面Git文件状态我们讲过假如文件未加入版本控制,那么该文件处于Untracked
(未跟踪)的状态,我们可以通过git add指令将文件添加到暂存区中此时文件会变
Tracked(已跟踪)状态!我们可以使用下面的指令,将文件一个个添加到暂存区中:

git add README.md

假如要添加的文件很多的话,这样一个个添加显得有些麻烦,我们可以一次性的添加多个:

1)将所有tracked文件中被修改或已删除的文件信息添加到Git暂存区,不会处理untracked的文件!

git add -u

2)将所有tracked文件中被修改或已删除的文件信息添加到Git仓库,会把理untracked的文件信息
也加入Git暂存区

git add -A

3)把当前工作区的所有文件全加入到Git暂存区

git add .

除了上面三种外,git其实还为我们提供了交互界面模式,我们可以键入:

git add -i

上图的流程是这样的

1.我先在GitForTest的文件夹里创建了两个文件
2.键入git add -i,进入后,键入4,选择添加untracked的文件
3.他给我们列出了untracked的文件,然后我们根据序号来添加文件
4.输入?会弹出相关提示,然后直接回车,结束选择!
5.然后再次输入git add -i,输入4,可以看到已不存在untacked的文件了!

当然还有其他几个指令,限于篇幅,有兴趣的可以自己研究研究!


5.将暂存区的内容提交到本地仓库

我们可以通过git commit -m “xxx”指令将暂存区的内容提交到仓库中

git commit -m "修改了xxx"

后面的-m是对本次提交的说明,"xxx"是说明内容,不该偷懒省去,假如你这里不
输入,-m "xxx" 的话,也会让你进入Vi/Vim来编写声明信息的~所以建议还是在这
里进行提交内容的说明吧!

另外,我们的项目可能存在一些几百年不变的或者自动生成的文件,比如lib,
gen,bin文件夹等,我们没必要每次都把这些都commit,我们可以在.git同级
的目录下创建一个名为.gitignore的文件,然后编辑内容,把不需要提交的文
件写上,那么commit的时候就会自动忽略这些文件的了~:


6.查看当前工作区与暂存区的状态

我们可以用git status指令来查看工作区与暂存区的当前情况,比如工作区有什么
文件和暂存区的文件 对比,发生了改变,要不要add下?又比如暂存区里有东西add
了,但是还没提交等等,直接键入下述指令:

git status

比如我这里修改了下README.md文件,只是改了还没add:

add文件后:

commit提交暂存区内容

恩,很简单,另外,你还可以用下述指令,让结果以简短的形式输出~

git status -s

7.查看工作区与暂存区的差异

上面我们可以通过git status获取当前工作区与缓存区的状态,仅仅是状态,
假如我们需要查看发生改变的内容,那么你需要键入下述指令:

git diff

这样就可以看到当前的工作区与暂存区中对比,做了哪些修改!
PS:上面是我们在README.md文件里添加了一条语句,然后再键入git diff


8.查看提交更改的记录

还记得之前的网购的例子吗,我们可以在我的订单中找到自己的订单记录,
同样,在Git中,我们也可以查看所有commit的记录!可以键入下述指令:

git log

当然,你也可以调用下述指令获得更精简的结果

git log --oneline

如果上面还满足不了你的话,可以参考:Viewing the Commit History
对log进行定制,比如:


9.文件恢复——未add

我们可以直接右键删除一个文件,又或者进入命令行,键入rm xxx.xxx将文件删除,
但是删除的仅仅是 当前工作区里的文件,暂存区里还是存在着该文件的,所以此时
你键入git status的话,你会看到这样的结果:

Git告诉你工作区的文件被删除了,然后你有两种选择:

1)把暂存区里的文件也删了,那么键入:

git rm "xxx.xxx"
git commit -m "xxx"

2)误删了,将暂存区的文件恢复到工作区,那么可以键入:

git checkout -- xxx.xxx

duang!被删除的文件又回来了~
当然,上面的checkout不止适用于误删文件,当你把一个文件改得面目全非的时候,
你突然后悔了,但是你已经ctrl+s保存了很多次代码了,你可以用用上述指令回到
这个文件的最初样子!(前提是你还没add!)


10.文件恢复——已add未commit

假如你已经把文件用git add到了暂存区,那么此时你直接用checkout文件是没有
作用的!我们需要通过git reset指令来废除此次修改记录(版本回退),让当前文件
回到上一次提交时的状态!键入:

git reset HEAD xxx.xxx

此时再调用:

git checkout -- xxx.xxx

文件即可恢复原样!


11.文件恢复(已commit)——版本回退

假如,我们的文件修改已经commit了,而你无端端的又后悔了,想恢复成上一次
commit时的文件,又或者上上次的,这时候你可能开始方了,不过Git为我们提
供了时光机(版本回退),我们可以通过下述指令回退到上一个版本:

git reset HEAD^

恩,我们键入git log后可以看到版本已经回退到上一个版本了!
如果是上上个版本,你只需加多,再上一个版本继续加,如此类推!
当然,除了上面的形式,你还可以根据版本号来回退,比如这里我退到第一个版本

git reset --hard 8c3f91f

嘿嘿,无压力,你突然又后悔了,想回到新的那个版本,嗯...好吧,同样是上面
的指令:不过版本号改成最新那次commit的版本号就可以了!

git reset --hard cf2d155

12.查看输入的每一条指令

你可能会支支吾吾的过来对我说:"恩,那个我刚刚把命令行关了,那个最新的版
本号找不着了,git log也找不到那个最新的版本号,那我是不是不能回未来了?
"幸运的是,Git时光机会记录你输入的每一条指令,你只需键入下述指令:

git reflog

拿到版本号,git reset即可~
另外有一点要注意的是:git reflog并不会永远保存,
Git会定期清理“用不到的对象”,所以别指望还能找到几个月前的提交!


13.Git命令别名

如果想偷懒,想少敲几个字母,可以为命令设置别名,然后键入别名就调用对应指令,
比如将status设置成st:


14.Git命令的自动补全

输入Git命令的时候按两次Tab就可以了!


小结:

本节给大家详细地讲解了一波Git的本地命令,应该可以满足日常的需要了,学习这一节,建议
自己建一个仓库,按着一步步走一遍指令,相信你会获益匪浅,敲得多就熟悉了!下节我们来
讲解分支相关的概念以及指令!谢谢~


参考文献

——作者:coder-pig,本教程不收取任何费用,欢迎转载,转载请注明出处,尊重作者
劳动成果,请勿用于商业用途,侵权必究!

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

推荐阅读更多精彩内容

  • 来源:Git由浅入深之操作与指令作者:惊鸿三世(转载已获得原作者许可,如需转载请与原作者联系) 本篇正式开始介绍G...
    极乐君阅读 1,625评论 9 67
  • Git大法好——3.Git分支本地操作详解 标签: Git 引言 在上一节中我们对Git的常用本地操作的命令进行详...
    coder_pig阅读 5,540评论 11 72
  • 感赏!谢谢宇宙!又中奖了!招财猫! 本来中了5块钱,结果搞活动,给我10块!哈哈哈哈哈! 没啥事儿就感赏!感赏!感赏!
    猫公主喵阅读 63评论 0 1
  • This people who I like, even you waste my time, I still l...
    角落蜷缩阅读 143评论 0 0
  • 简直太难找了,这里自己收藏起来,以备不时之需! https://b.alipay.com/order/produc...
    iplaycodex阅读 2,427评论 0 5