写在前面
对于一个程序员来说,Git现在无疑是一项必须要掌握的技能了,一开始并没有觉得它的作用,可是随着代码记录越来越多,自己想要把自己的代码都做个备份,这才想到是要学一下了,当然,git的功能远远不是备个份这么简单。今天在网上跟着廖雪峰老师的教程以及某些优秀的博客,对git算是有个简单的了解,于是想整理一下。
首先,我是一个纯纯的小白,以前从来没有使用过类似git的工具,甚至连windows的cmd指令都没用过几次,所以整理的东西会特别基础,并且内容不一定完全正确,所以如果有错误的地方请大佬能够指点一下,万分感谢!
正文开始
1.安装git
这没什么好说的,按照廖老师的教程来就可以。
源地址:各系统平台Git安装教程
2.使用Git bash的一些基础操作
-
cd : change directory的简写,改变目录的意思,就是切换到哪个目录下, 如
cd e:fff
或cd e:
+cd fff
切换 E 盘下面的fff 目录。注意:如果从主目录下开始切换时使用冒号进入第一个子目录(如上),之后要使用反斜杠来进入子目录(如cd e:blog/m1/m2)
当我们用cd 进入文件夹时,我们可以使用 通配符*, cd f* , 如果E盘下只有一个f开头的文件夹,它就会进入到这个文件夹.
-
cd .. 回退到上一个目录。我们在写js,或css时,我们引入文件时,.. 表示的就是上一个目录, 所以 cd ..回退到上一个目录就很好理解了。
注意:- cd 和两个点点..之间有一个空格, .
- 往上一层用cd .. ,往上两层用cd ../..**
-
pwd : print working directory, 打印工作目录,它会显示我们当前所在的目录路径。
-
ls: list, 列出当前目录中的所有文件, 只不过ll(两个ll)列出的内容更为详细。
-
mkdir : 新建一个目录,就是新建一个文件夹. 如mkdir src 新建src 文件夹.
-
touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。
-
rm: 删除一个文件, rm index.js 就会把index.js文件删除.
-
rm -r : 删除一个文件夹, r (recusive 是递归的意思), 删除用的就是递归,先删除文件夹里面的内容,再删除文件夹。 rm -r src 删除src目录。
-
mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下.
-
reset 清屏,把git bash命令窗口中的所有内容清空。
3.创建版本库
首先无论你是使用手动方式还是使用git命令,你都要建一个文件夹用来当做本地的版本库。在此我使用git命令:
mkdir startgit
cd startgit
现在,我打算将startgit文件夹作为我的本地仓库,接下来就是初始化
好了,大功告成,现在我们创建了git版本仓库。
文件的提交
创建了版本库肯定是要用来放文件的,我在仓库文件夹下创建一个txt文件(此处需要注意不要用windows的记事本和word等文本来编辑文件内容,可以下载一个编辑器并将编码格式改为utf-8),我现在建立一个名为index.txt的文件。
接下来,有必要给大家说一下git库的工作区与暂存区:如图,
其中工作区是我们所能看到的文件目录,而版本库分未stage区和master区,而stage成为暂存区,意思就是说此区的内容并不算是提交,只是放在这里供修改和提交。
那么提交文件到仓库的操作就好理解多了;
添加文件到仓库
第一步: git add添加文件到暂存区,如(git add index.txt);
注意:此处添加的文件readme.txt要在git可以管理的仓库目录或子目录下。
第二步:git commit -m’更改内容记录’告诉git,把文件提交仓库;
注意:此处的不要遗漏了-m后的内容,不然会跳入一个让你输入commit message的页面,如果不小心按到了,百度一下,很简单就能跳出来
到此,就算是将一个文件提交到的本地仓库。此时,你出生在2017年!
不同版本的修改与提交
现在,你10岁了,时间到了2027年。(对文件进行了修改)
现在输入git status
来查看工作区的状态(看看是不是再做梦);
从图中可以看出index.txt文件为红色,并且根据提示是修改没有添加至暂存区以进行提交。(真他妈10是十岁了,叹气);
而且此时,我们可以看看我们着10年有什么变化;git大仙给了你一个口令:
git diff
一看,发现就是长了十岁,大概更帅了!
好,现在我们就去把自己的年龄建档上交国家!
还记得方法吧:git add index.txt
再进行一次查看:
此时可以看到,文件颜色变为绿色,修改已经暂存(档案已经建立好了),等待提交(给国家)。
接着就提交,此时我们是第二次提交了;git commit -m’2027年’
再次查看;
告诉我们,已经在master库里了,工作区很干净!
但是问题来了,你现在觉得上学好痛苦啊,很想回到刚出生那年,不用上学,整天吃睡玩,方法有两种,第一种,重新投胎,也就是我直接拉出来源文件把修改的部分删掉再重新提交,因为我知道自己修改了哪里,并且要修改的地方就一行,十分简单。但是,投胎学问太深了,万一投错胎可就麻烦大了!所以你想着要是能穿梭时空就好了,来,默念,git大法好!
事实上,git会记录下我们的每一次提交,并给每次提交赋一个唯一的id值,这个id值在每次commit时就能看到,如上面’2027年’提交的界面就能看到[master 222019c],masert 字母后面的数字字母组合(其实是一个16进制的数字)就是那次提交的id.
只要有id,我们就能任性的穿梭时光!
穿梭时光前,首先需要知道你想要回到哪一年,也就是你想要退回的版本id号。
git log 查看我们提交的历史记录
当然,你也可以这样*git log –pretty=oneline,让信息一行行的显示:
此图中黄色的数字字母串就是当次提交版本的id.也就是你当时存档的年龄。
接下来,系好安全带,准备穿越了。而进入时空穿梭机的git口令为:
git reset –hard commitId ,上图:
恭喜你,穿越成功,你现在是一个嗷嗷待哺的婴儿啦!细心的小伙伴可能已经发现,第一,在上两次操作中,有个HEAD,其实,在git中,它就是一个指向当前文档的指针,所以在穿梭前它指向2027年,但现在它指向了2017年;第二,我们看到窗口里每个版本的id那么老长,为啥我输入的那么短,当然,不是我短,是因为这么短就足够识别不同的id了,也就是说,够用就行啦!
当然,你虽然没记住要返回的年号,但是你要是知道你在此之前存档了几次,仍然是可以返回的!
假如你想返回上一个年代:git reset –hard HEAD^;可以完成同样的事情,假如你要返回上两个年代呢?git reset –hard HEAD^^;有同学一看就明白了,就是返回上几个就HEAD后面加几个^符号,那我有人想返回到上100个年份怎么办来,什么?加一百个^,我只能说你们对git一无所知!使用*git reset –hard HEAD~100才是正解,当然,返回上一个你你把100改成1,同样好使!
不过:使用git reset --hard HEAD^
可以回到上一个版本,但是在windows下有可能会失效,解决办法:
1.使用通用的git reset --hard HEAD~1
2.使用git reset --hard "HEAD^"
可是,现在返回后你发现自己既不会说话,也不会走路,最过分的是你看着美食你也没法吃,十分后悔!如果你运气好,还记得你十岁时的年号,还是可以重返未来的:
但很不幸,你当时穿梭时空的时候太激动,忘了!
这时候,对,默念git大法好!,看到你可怜不已的样子,git忍不住给你丢了一个口令:
git reflog 查看命令历史
从这里你可以看到你对版本的各种骚操作,也会显示每个版本的id,此时,老司机,上车吧!
git reset –hard 222019c
兜兜转转,还是回到了远点!
本节到此结束
送大家一张图,慢慢看!