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