学习git的一天:在vi的坑里躺了一个多小时!

    今天算是初步深入了解git的一天,虽然你现在问我git是什么,我可能也很难用通俗易懂的话答出来。不管怎样,作为今晚在git坑里躺了很久的人,我还是要把git的第一天深入学习记录一下,避免再次掉坑!

    大哈今天在图书馆给我查了学习资料,摸索了一下git,我过来后就直接看着他给我的学习资料网站学习,说实话,网站是挺不错的,目录看着也挺不错的,然而,我在第一关就掉坑了(不好意思,太蠢了---)



用什么软件编写呢?

    网站作者简单介绍了一下git的来源及作用之后便开始进入正题了,什么?进入正题了?创建版本库?一堆代码看着是挺厉害的,问题是,我在哪写代码呢?git,我下载了啊,问题是,它有三个啊,这可咋整?到底是在Git GUI,还是Git CMD或是Git Bash呢?

    机智的我,选择了一个一个去试,终于找到了熟悉的$符号,它就是Git Bash。


建立仓库、修改文件、提交文件

第一步:创建仓库

     什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

    所以,这里我们先来了解一下相关代码。

    mkdir----创立一个子目录

    cd----显示当前目录名(或改变当前目录)

    pwd----显示工作目录。

如下图,我已经在用git在电脑里建立了一个learngit目录空文件夹。

创建仓库--learngit

第二步:获取仓库。

1.git init——在现有项目或目录下导入所有文件到 Git 中。

    该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。

通过git init获取仓库

2.git clone——克隆现有的仓库。

    克隆仓库的命令格式是 git clone [url] 。 比如,要克隆 Git 的可链接库 libgit2,可以用下面的命令:


克隆仓库-1

    这会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹,从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。 如果你进入到这个新建的 libgit2 文件夹,你会发现所有的项目文件已经在里面了,准备就绪等待后续的开发和使用。 如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以使用如下命令:


克隆仓库-2

    这将执行与上一个命令相同的操作,不过在本地创建的仓库名字变为 mylibgit。


添加、修改、提交文件

    首先这里再明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

    不幸的是,Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,前面我们举的例子只是为了演示,如果要真正使用版本控制系统,就要以纯文本方式编写文件。

    因为文本是有编码的,比如中文有常用的GBK编码,日文有Shift_JIS编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

使用Windows的童鞋要特别注意:

    千万不要使用Windows自带的记事本编辑任何文本文件。建议下载Notepad++代替记事本,不但功能强大,而且免费!记得把Notepad++的默认编码设置为UTF-8 without BOM即可。

1.新建文件——如txt

    特别注意,在添加文件夹之前,要先用Notepad++在learngit文件夹下新建一个TXT文本,如我建立的是readme.txt。文本内容随你添加,我添加的内容是:


readme.txt内容


    前面我就是没有新建文件夹,导致一直一直出bug。

2.添加、提交文件

    之后,我们再在Git Bash里继续编写代码。

    git add ——把文件添加到仓库(git add "文件名,如readme.txt")

    git commit——把文件提交到仓库(如git commit -m "wrote a read file")

    git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)。

    注意注意(此处有坑):commit后面一定要空格在家横线,m后面一定要空格再加双引号)!


添加、提交文件至仓库

3.修改文件(此处大坑)

    提交完第一个版本的read.txt文件后,我想再次对它的内容进行修改,这时候怎么做呢?这个时候我们就用到了“vi ”代码了。

    在软件里输入“vi 文件名”(如vi readme.txt)后,软件会自动跳出其内置的文本编辑器。该文本编辑器vi有三种模式,分别是

    (1)一般模式

使用vi 文件名命令打开一个文件即可进入一般模式。这是vi的默认模式。

光标使用上下左右按键来控制;可以删除字符或删除整行;可以复制粘贴。

    (2)编辑模式

在一般模式当中可以进行删除,复制,粘贴等操作,但无法编辑内容。 需要按下“i,I,o,O,a,A,r,R”等字母才会进入编辑模式。按下这些按键之后进入编辑模式,界面左下方出现INSERT或REPLACE,此时才可以编辑。如果想回到“一般模式”,需要按下ESC按键。

    (3)  命令行模式。

在一般模式中输入“:,/,?”就可以将光标移动到移动到最下方的一行。在命令行模式下,即可在这一行输入一些命令进行操作,包括查找,替换,读取,保存,退出,显示行号等。

    好了,问题来了,修改完后怎么退出vi界面呢?这是我一个晚上花了一个多小时栽在这上面的难题(好吧是我傻)!

    在一般模式中输入“:wq”即可保存离开vi 。注意必须在输入法英文模式下输入。



查看仓库状态

    要随时掌握工作区的状态,使用git status命令。

    如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

    假如上面两步执行后,知道了对readme.txt作了什么修改后,再把它提交到仓库就放心多了,提交修改和提交新文件是一样的两步,还是"git add"和"git commit",只不过这次在add和commit这两个命令中间我们要再执行一次"git status",直到它告诉我们"changes to be commited"后我们才能放心提交!

    提交之后,我们还要再次执行一次“git status”命令,直到它告诉我们当前没有需要提交的修改,而且,工作目录是干净(working tree clean)的,那么,修改提交这些工作就到这里结束了。



版本回退

    不断地修改提交,Git里就保存了好几个版本的文件。如果我们需要对以前的版本内容查看,这时候要怎么办呢?

    git log——命令显示从最近到最远的提交日志。

    git log--pretty=oneline——如果嫌输出信息太多,看得眼花缭乱的,可以试试执行这个命令。

    git reset——hard HEAD^(或HEAD~100)——当前版本回退到前面的版本。

    首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

    回到之前的版本之后,再次查看仓库状态,我们会发现该版本之后修改的内容已经不见了,这时候我们可以用“git reset——hard ‘要回退的版本commit ID’”来指定回到未来的某个版本。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 安装Git Git的下载地址:Git官网下载地址 Git本地仓库和命令 配置用户 下载完Git后,右键会有一个Gi...
    TokyoZ阅读 4,676评论 1赞 7
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,917评论 9赞 163
  • 前言 Git使用教程 Git是什么 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 ...
    90后的思维阅读 1,070评论 0赞 0
  • 一、Git是什么? 是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常 大的项目版本管理。 Git ...
    名字谁不会取阅读 1,268评论 0赞 0
  • (预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料) 一:Git是什么? Git是目前世界上最先进的...
    axiaochao阅读 2,024评论 1赞 8

友情链接更多精彩内容