Git

作者: 覇王 | 来源:发表于2018-12-13 11:58 被阅读0次

其实在很早的时候就知道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

相关文章

网友评论

      本文标题:Git

      本文链接:https://www.haomeiwen.com/subject/ynfvhqtx.html