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