Git学习笔记(4)----基本操作及命令(本地仓库篇)

来源:互联网 发布:淘宝5.9.5版本下载 编辑:程序博客网 时间:2024/05/22 03:49

       本篇介绍Git的基本操作及命令,学习后本篇需要达到的效果:满足日常工作使用,对每个命令及其作用有一定的了解。文章通过模拟工作流程的方式,帮助读者更好的理解每个命令的使用场景和作用,但不会单独列出每个命令的功能及作用,建议读者边看动手尝试一下。

一、自己创建仓库操作文件,并提交到本地仓库

       创建新仓库

     创建、进入想作为Git仓库使用的文件夹目录,输入命令“git init”以创建新的 git 仓库,成功后文件夹出现一个名称为.git隐藏文件夹(需要显示隐藏文件夹才可以看到),如图:

     在目录下新建文件“test.txt”并输入内容(当然是Holle World!啦),保存后关闭文件。

     添加文件到仓库

     使用命令“git add test.txt”把新创建的test.txt添加到仓库,此时test.txt图片左下角,会出现一个蓝色的加号,证明已经添加成功,这步操作就是告诉Git,提交文件的时候带上test.txt,如果不加,提交文件的时候是不会有它的,add操作如图所示(没有提示就是最好的提示):


     为了更直观的体现“git add”的作用,我创建了一个文档“testNoAdd.txt”,不执行“git add”操作,稍后提交的时候用来做对比。此时可使用命令“git status”查看两个文件的状态,如图所示:

此时test.txt的状态为“已暂存”,testNoAdd.txt无状态。

把文件提交到仓库

将文件添加到仓库后,下一步是将文件提交到仓库,使用命令“git commit”将文件提交到仓库中,而testNoAdd.txt没有进行“git add”操作,执行提交命令时就不会提交它,如图所示:ps:1个文件状态更改(test.txt状态修改为已提交,相应文件左下角图标也变成绿色对号),此时查看状态,testNoAdd.txt并没有被提交到仓库。


     commit命令中 -m 后面输入的是本次提交的说明,可以输入任意内容,实际使用中,尽量输入有意义的说明,方便自己和别人查看。

     至此,test.txt文件已经提交至本地仓库中,一个从创建新仓库到提交文件至本地仓库的流程已结束。

二、修改本地仓库中的文件,并提交到本地仓库

     由于目前的本地仓库暂没有涉及到多人协作问题,故本地仓库的文件始终都是最新的,不需要更新,直接修改即可,流程和上一种流程介绍类似,下面对test.txt文件进行修改、提交的流程:

     打开test.txt文件,随便添加或删除一些内容,保存后文档左下角状态图标变成如图所示

     在文件经过修改后,可使用命令“git diff 文件名”查看文件修改的内容,此命令会将当前本间与本地库中最新版本的文档进行比较,列出更改的地方,如图所示(可看出文档添加了一行内容‘你好,世界!’):


      提交到仓库的流程同上,先add再commit,如图所示(习惯性提交完成后使用git status查看当前状态):


      此处留个疑问,当修改完文件test.txt(第一次修改),并将其add到缓存区后,再次修改test.txt文件(第二次修改),然后直接commit到本地仓库,那么commit到仓库中的文件,是第一次修改的还是第二次修改的呢?亲自动手试一试吧!

      文件修改上传的流程,至此已结束,以上两种流程,已经可以基本满足本地日常工作使用。

三、版本回退

     写到这个功能时候,突然想到了仙剑奇侠传(小时候玩的单机),它的存档系统,不正是一种版本管理系统么大笑,曾经无数次迷失在迷宫中,一个读档回到迷宫门口重新开始(当然要先在迷宫门口存个档了)。同理,当我们日常工作中,发现修改的文件并不合适,需要换个思路重新修改时,很希望能够回到最近的正确的版本中,既然git仓库中记录了每次修改的版本,那么肯定可以回到你需要的那个存档:

     首先我们来使用“git log (文件路径/文件名)”来查看当前仓库中的提交记录,可以在log后加上文件路径(如果是当前目录则不需要加)和文件名,表示只查看该文件的提交记录,如图所示:

   

     现在,我们把test.txt回退到第一次提交的版本,先介绍一下版本回退的命令:git reset [--soft | --mixed | --hard] 和 git revert,二者区别稍后介绍,我们先用git reset --hard+commit id 来回退,输入命令行输入“git reset --hard 213c1624ef5038a”,其中commit id 并不需要完全输入,前几位即可,结果如图所示:

     查看log显示:

    

     查看test.txt文件,发现文件已回退至第一个版本的内容,回退成功。

     在使用本地仓库,没有push到远程仓库的情况下,可能你add ,commit 以后发现有点问题,准备取消提交,此时使用命令:

     git reset [--soft | --mixed | --hard]
     --mixed 会保留源码,只是将git commit和index 信息回退到了某个版本.
     --soft 保留源码,只回退到commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
     --hard 源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码).   

     当文件已push至远程仓库,则使用git revert 命令,将在远程仓库使用部分的教程中详细介绍。

四、文件还原(撤销修改)

     事实上这个功能用的不是特别多(废话..谁愿意把自己辛辛苦苦写的代码给还原掉..),当然,也不排除偶尔有脑袋抽风的时候偷笑 回归正题,当你发现你的改动不能提交或者一些其他的原因,需要撤销所有的改动,将文件还原到当前仓库中最新版本的时候,使用命令“git checkout -- <filename>”来还原。比如说我午休的时候不小心脸滚键盘,打出了下面一段奇怪的文字:


     睡醒的时候惊讶于这是什么鬼的同时,默默地用“git checkout -- text.txt”还原了文档(当然,在这么简单、明显的错误下,用命令还原确实有点儿小题大做了...),结果如图所示:还是那句话:没有提示就是最好的提示,还原已成功。

     注意:当你的改动已经添加到缓存区,或者是你新建的文件,那么此命令是无效的

     最后友情提示一下:此功能慎用...修改的内容,还原后找不回来的...而且使用命令行还原的话,是直接执行操作,不会有确认提醒(有的界面操作工具有确认提醒)。

五、删除文件

     当需要删除某些无用的文件时,使用命令“git rm”+文件名即可,为进行演示,我创建了“testForRM.txt”文件,并将其提交至本地仓库中,如图所示:


     执行命令“git rm testForRM.txt”,删除文件后如图所示:


     查看当前状态显示文件已被删除:


     此时在本地将文件删除,如果想将版本库中的文件也删除,只需要commit当前本地环境到本地仓库即可;当然,如果是误删了本地文件,只需要checkout还原一下即可。

     OK,本篇介绍了单机环境下的增删改查等一些日常工作使用的命令,希望对读者有所帮助,有疑问和建议可以在下方评论,下篇见~