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,本教程不收取任何费用,欢迎转载,转载请注明出处,尊重作者
劳动成果,请勿用于商业用途,侵权必究!

推荐阅读更多精彩内容

  • 来源:Git由浅入深之操作与指令作者:惊鸿三世(转载已获得原作者许可,如需转载请与原作者联系) 本篇正式开始介绍G...
    极乐君阅读 1,173评论 9 67
  • Git大法好——3.Git分支本地操作详解 标签: Git 引言 在上一节中我们对Git的常用本地操作的命令进行详...
    coder_pig阅读 3,731评论 11 70
  • (众通社讯)“酿酒学”真正的“入门”是从“制曲”开始的。 非常玄妙的是,“酒”的形成也是从“曲”开始的。所以,“曲...
    程序传媒阅读 385评论 0 0
  • 感赏!谢谢宇宙!又中奖了!招财猫! 本来中了5块钱,结果搞活动,给我10块!哈哈哈哈哈! 没啥事儿就感赏!感赏!感赏!
    猫公主喵阅读 18评论 0 1
  • This people who I like, even you waste my time, I still l...
    角落蜷缩阅读 20评论 0 0