其实在很早的时候就知道git的存在了,但是因为某些原因一直都没有去真正的深入了解过这个东西。然后今天因为之后的工作需要与别人一起合作,所以用git与github会比较方便,所以我昨天就去学习了一下git的使用。今天来把总结写到这里,方便以后查阅。
1.了解git到底是什么?
如果我们要了解git是什么?那我们就要先了解分布式的版本控制系统。在我们的现实工作中,往往有可能是好几个人分工合作,然后再进行整理合并。这个时候我们最通常用到的工具就是git。有了这个工具之后你可以在回到每次你修改的版本,就算你误删了什么文件。也可以通过git把它找回,可以说是非常非常高效的软件了。
2.git的使用。
想要使用git,那我们就应该先去下载git然后安装。这里我贴一个git的官网:https://git-scm.com/ 可以在这里下载git。
git的使用最大的bug就是系统文件null的问题。我就是因为这个问题。打开git-bash之后老是闪退。至于如何解决,这个教程网上也有很多,我在这里就不浪费时间了。
好了,那我们现在正式进入正题:我们要如何使用git呢?
A.注册。
在我们安装完之后,我们需要注册。找到一个空的文件夹,然后右键打开git-bash页面:
他会默认在每行的代码前面加$,所以你只要注意代码就好了怎么注册呢?我们需要注册用户名,还有邮箱:
这样我们就算是注册成功了B.创建版本库。
我之前提到了额,git是一个版本控制系统,那我们现在开始就要触摸到这个版本控制了。我们首先要在我们自己的电脑中,本地创建一个版本库。如下图:
我打算在jianshu的文件夹中建一个版本库在我们创建版本库的时候,有一个地方我们是要注意的,就是我们的文件夹的名字最好都是英文,而不是中文,避免报错。
在这个文件夹中,同样的右键打开git-bash:
我们看到它显示的位置就是我们文件夹的位置然后我们就要用我们创建库的指令:
$git init;
我们在bash中输入这个指令:
这样的话,我们就是创建成功了,因为我们的文件夹中没有文件,所以git给我们的提示是:初始化的空Git存储库C.往库中添加文件。
当我们创建完库之后,我们要做的就是把我们的文件添加到我们创建的库中,当然我们文件得真实存在在我们的这个文件夹下:
我在库的文件夹下,创建一个txt文件。为了了解git的工作原理,在这里我们又要用到一个经常的指令:
git status
至于这个指令有什么用,我们试试看就好了:
git提示我们,我们不仅还没提交,而且我们还没有办法追踪到这个文件。所以我们就知道了,我们上面的指令到底有什么用了。没错,这个指令会告诉我们当前我们整个git的状态。那我们按照指令 <git add filename> 先把文件添加:
添加是不会返回指令的D.上传文件到版本库。
可能有的人觉得很奇怪了,为什么我又要添加文件,又要上传文件呢。这个就涉及到了git的内部处理机制了。我们在后面在讲。我们现在用简单点的话说,因为你不上传别人就看不到你的这个文件,你还是只能自己看到。但是如果我们的同事需要我们的文件呢?所以我们必须上传我们添加的文件。
但是在这之前,我们还是来看看我们目前版本库的状态:
可以看到在我们添加文件后,我们的状态就变成了未提交了。我们使用 git commit -m"对这个提交的描述",如下图:
提交成功!然后我们再看看我们现在的状态:
提示我们没有东西可以提交,工作树干净
3.版本控制。
接下来就是我们激动人心的环节了,版本控制。那你可能要好奇了,什么算一个版本呢?其实很简单,一次commit对应一个commitID,也就是对应一个版本。
我把jianshu.txt再做修改:如下
然后我们再次添加,提交文件:
那么我们现在就相当是在版本2的时间轴上。git提供一个指令,让我们查看历史的commit :git log
在有HEAD指针指向的,就是我们现在所处的版本。如果我们要返回之前的版本怎么办呢?简单:
$git reset --hard HEAD^ ^代表上一个版本,如果数字太大,可以用~num代替
加入我们想要回到上个描述是:“简书”的版本,我们就:
现在我们可以看到HEAD指针现在指向的是“简书的版本”那我们如何确定到底有没有变化呢?看看我们的txt文件就知道了:
可以看到,空空如也,我们的版本2不见了,说明我们回到了之前的版本。假如我们回到以前的版本了又后悔了怎么办?之前我们说过了每个版本对应一个commitID,我们可以通过commitID来让我们回到未来的版本。我们可以使用 $git reflog 再查看我们的历史操作:
可以看到,我们提交的第二个版本的commitID是:0c479b1我们还是用上面的指令,只不过HEAD的部分改成commitID:
我们再去看看我们的jianshu.txt:
可以看到,我们的版本2又出现了。说明我们真的回到了之前的版本4.git的基本概念。
我们带着我们的疑惑来到了这个章节,我们要搞清楚git的基本概念,这样在使用git的时候,你就会知道你的每一个指令下,git到底在做什么?
首先,git有两个大区:一个是工作区,一个就是版本库。可能要问了,工作区是什么?版本库又是什么?工作区,就是我们当下在修改的文件夹。拿我这个例子来说的话,我们的jianshu文件夹就是我的工作区,因为我对任何文件的修改,添加,删除都是在这里。那么版本库又是什么呢?我在菜鸟教程上找到了一张图:
图上的标示就已经相当清楚了,我们每次add之后,都不会立马提交,而是放在index区(也叫做暂存区);我们可以看到reset HEAD在git中的工作流程:暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
A.管理修改。
git追踪管理的是修改,而非文件。假如我修改我们的简书txt:
如果我们在工作时,一不小心就写错了东西咋办?或者在你还没添加文件之前,老板突然和你说,我要改需求。我们在未将文件提交到暂存区的时候,可以直接用$git checkout --file 直接放弃工作区的修改。而是直接用暂存区的文件代替工作区。我们试试:
然后我们再打开我们的jianshu.txt文件!如下:
可以看到,回退到了之前的版本。如果已经提交到暂存区,那么就要先用 git reset HEAD file回到之前的版本,然后再用git checkout -- jianshu.txt就可以完成上述一样的操作。
B.删除文件。
很简单的一个指令:git rm -- filename
如下:
然后我们再打开我们的文件夹看看还有没有这个文件:
然而并没有4.远程仓库。
在我们使用远程仓库之前我们要先找到我们的密钥,
然后我们打开pub的文件,把里面的密钥复制接下来我们用github为例子:
注册登录之后,我们在个人设置中找到这个SSH然后把你自己本地的SSH.PUB文件里的代码放在SSH的位置,完成之后:
完成了以上的操作,我们就可以开始关联库了A.新建仓库。
我再github上新建一个仓库:
为了方便理解,我直接把名字叫做jianshu 这是我们现在库的样子。所以我们现在要把我们本地的库和这个库相连我们要使用! $git remote add origin git@git帐户名/库的名字.git
我们可以用指令:git remote来查看当前连接了那些远程库:
可以看到我们已经关联到了那个远程的库那我们现在要把文件上传到GitHub的库怎么办呢?首先我们要在本地完成add——commit的操作:
确保我们本地的master分支中有这个文件之后我们要使用的代码就是:git push -u origin master
可以看到我们的远程数据库也有我们本地数据库的文件了B.克隆别人的仓库。
使用git clone git@github:名字/库的名字。
5.分支管理
A.创建分支。$.git checkout -b (分支名称)
分支的存在,可以让我们在不影响主线的内容下工作。列如:
我们创建一个分支 然后我们查看我们目前的分支我再dev分支下,新建了一个文本文件:
然后我们还是根据add——commit 将我们的文件上传到dev分支!
B.合并分支。$.git merge 分支名称
首先我们先切换回主分支:master;使用git checkout master;
之后就是用上述的代码如下
然后我们把dev分支 git branch -d (分支名字) 删掉,看看只留下master分支,我们创建的fenzhi.txt还会不会存在:
可以看到还是在的然后我们把本地的master分支的内容 更新到GitHub上:
可以看到GitHub上出现了我们dev分支的内容,而且也标注了分支。6.标签功能。git tag -a 版本号
可以给你的每个commit添加一个通俗易懂的版本号。
查看你现在拥有的tag:git tag
网友评论