为什么要有 git
你很可能遇到过这种情况,在写项目的时候,要我不符合 leader 的要求,因而修改了很多个版本,但是修改到最后一版的时候,leader 有觉得当前这版还没有之前 某一版好,现在又要求你在 之前的那一版上进行一些修改然后就提交;但是 , 对于leader需要的那一版的具体细节你也记得不是很清楚,也不好直接修改回去。
所以,你就在电脑当中创建了一个文件夹,里面存放的都是你修改过的代码不同版本的文件,我们把这个文件夹叫做本地仓库。这个本地仓库的使用者,就可对修改的不同版本的代码或者是其他文件 进行 版本隔离管理。
但是,这个项目你修改了这么多版本,怎么可能每一版都存储在在电脑当中,当这个项目很大,我们更不可能存储了。而且,在本地当中存储的 文件,很有可能会丢失,比如电脑损坏等等原因。
这时候,就有了 又有了服务器端,在服务器当中存储,我们把这种仓库称之为 远端仓库。
所以,此时,就可以让用户选择,是否要让 本地仓库当中的 文件 上传到 服务器当中。
而 现在我们所使用的 远端仓库,基本上都是 一些 大型企业 在进行管理的 服务器,一般来说是很难出现问题的,就算出现问题,也就很快进行解决。
而且,关于远端仓库不只有存储本地文件的作用,我们开发的一个大型项目,很多时候都不是我们自己一个人在开发,可能有很多人在一起开发,一个人完成一部分内容,然后,每一个把自己完成的那一部分内容上传到 远端仓库,供别人参考使用,来创建其他人自己要实现的一部分。这就是多人协作。
当然,不只有git 一个软件,还有像类似 svn 这样的软件,但是,绝大数的软件是要收费的,但是 git 是开源免费的。
而所谓 git 就是一个 具有网络功能的控制器。git 既可以充当 client(服务端),又可以做 server (服务端)。所以,我们既可以把自己代码推送上去,又可以把 别人的代码拉取下来。我自己也可以搭建一个远端仓库,让别人拉取我的代码。
专业一点说,git 是一个 去中心化的分布式的版本管理器。
git 的发展
在早期linux开源之后,linux 是一个操作系统,操作系统的软件规模要大得多,那么就注定了参与这个项目的人非常多,有大量的人提交代码,比如通过邮件等等的方式提交自己实现的软件代码文件,linux 的管理者,要审核这些代码的作用和问题,没问题就会把这些代码合并到 linux 代码当中。随着linux的开源,那么提交的代码量就大大增多,linux 当中暴露的问题也就更多了。
这时就有人想,有没有一款软件,能够实现自动合并 代码,然后实现版本隔离,刚开始肯定不是linux 的人自己写,肯定是先去网上寻找,看有没有现成的。但是,当时市面上的版本控制器是要收费的,那么linux 又是开源的,这就不符合了,开源的操作系统需要用一款闭源的版本控制器。
而且,收费不是谁都愿意缴费来使用这个版本控制器的,用户想从服务器当中拉取一段代码,还要话钱,用户肯定会不满意,毕竟这是开源的操作系统。那么对于开源的社区体量就有了一个限制了,不利于linux 的传播,这肯定不是 linux 开发者想看到的。
在当时有一个 比较情怀的公司,专门做版本隔离软件的,也是靠这个软件存活的公司,就了解到 linux 有版本隔离软件这个需求,就免费给 linux 提供这个版本隔离的软件。但是,这个版本隔离软件,经过linux 内部人员 和 公司的进行加密的。
但是,毕竟 linux 是开源的,人才济济,有人就对 这个 版本隔离软件 进行 破解查看,此时就被 公司当中的人发现了,公司人就认为,免费给linux 用的软件,现在又被破解,心里就不舒服,就把 这个软件给回收 了。
至此,linux又一夜回到解放前。
所以,Linus Torvalds 就自己写了一个版本隔离软件,叫做 git。
但是 git 有只是一个软件,对于 服务器 还是要自己搭建,所以,就基于 git 搞了商业化的网站 --- github 和 gitee。
同时,还基于 linux 内核 搞了一些 商业化的 OS 比如 :Centos,ubuntu等等
安装 git
可以直接使用 yum 应用商店来安装:
yum install git
git 的使用
把远端仓库拉取到本地
在 linux 当中使用 git 把 gitee 当中的 远端仓库拉取到 本地,于本地仓库进行连接:
在 gitee 当中选择你想链接的远端仓库,然后点击 "克隆/下载" ,选择 你想要 链接的协议,这里我们就选择 HTTPS,在公司当中可能更多会使用自己搭建的 比如 SVN 服务器。
复制上述链接。
打开你的linux 操作系统。
在链接之前,请确保你的 linux 操作系统当中已经安装了 git :
或者使用 git --version git --help 查看:
如果是和上述类似的,说明此时已经安装好了。
此时我们在 用户目录当中新创建一个 test_git_code 目录,用于上传文件到 gitee。
然后使用如下命令来搭建 远端仓库和 本地仓库连接:
git clone 远端仓库链接
在输入上述指令之后,就会让你输入用户名和用户密码,输入之后就配置成功了。
此时查看本目录下,就会发现一个新建的和 远端仓库同名的 本地文件夹。
在git 首次使用的时候,可能会让你设置一些 个人信息:
只需要按照它的提示,输入 一下命令, 设置一下就行:
git config --global user.email "" 和 git config --global user.name ""
设置这个个人信息,主要是:当自己上传的项目出现问题之后,被使用的用户发现了,后者是用户对于你的项目的使用等等的方面有各种各样的问题,需要用过这个练习方式来找到你。
或者是在公司当中,写的项目,被 leader 发现了问题,那么leader 也可以通过这个方式来找到你。
使用git 三板斧 从本地 提交文件到远端仓库
我们 cd 到这个目录的当中去,使用 -al 查看当前目录下的全部文件,就会发现一个 .git 目录,这个目录就我们可以进行传输的目录了。
这还是一个 隐藏目录,这里面有你写入文件等等一些日志,之所以设置成隐藏文件,就是不想让你看到,不想让你做修改,所以我们千万不要对.git 目录当中的内容进行修改。
假设现在我们想把 text_git_code 这个文件上述传到 gitee 当中的话,就只需要直接把 这个文件 cp (移动)到 本地的于gitee仓库同名的文件当中,注意不是 .git 当中。
然后使用 git add . 这个命名,表示把仓库当中 没有添加到 远端仓库的文件添加到,先暂时添加到 仓库的缓存区当中。
然后使用 git commit -m "" 命令。注意:其中 "-m" 是必须写的,"" 当中的内容就是提交这个文件的日志,这个日志也是要写的,而且不能胡写,要写这个文件当中做了什么。
上述两步其实都还是在本地目录当中,要上传到远端仓库当中还需要最后一步是:git push 把仓库缓存区当中文件推送到 远端仓库当中,这一步需要输入 用户名和密码。
注意:如果在使用 git add . 之后,又对要上传的文件进行了修改的话,一定要再次使用 git add . 命令,以为 add 命令不是上传 文件本身全部代码,而是上述你 增删查改文件的那一部分代码。
自己的提交记录,别人是可以查看的,使用 git log 命令就可以查看历史提交记录:
查看别人的仓库 提交日志也是一样的,和上述一样,找到 仓库链接,然后使用这个链接 把仓库文件夹 clone 到本地,然后,cd 到这个仓库当中去使用 git log 就可以查看这个仓库当中的提交日志。
git status 命令
我们还可以使用 git status 命令来查看当前的本地作业环境下,有没有没有提交的文件,也就是在 从远端拉取到本地的目录当中,有没有 没有提交的文件,或者是修改文件的之后没有提交的文件。
如果没有就会提示:
有就会提示,当前有几个文件没有提交进去,对应文件名也会显示。
如你愿意尝试的话,上述提到的三板斧,你的文件提交 三板斧 的 哪一步了,他都是会有提示的,而且会提示你当前这个文件应该怎样操作。
指定某后缀 文件不添加到 仓库当中
如果你已经拉取 远端仓库 到本地,那么cd 打开在本地拉取的 文件夹,你会发现一个 .gitignore
的隐藏文件:
这个文件当中就包含了 你不想要添加的 文件名后缀,和一些日志信息,调试信息,调试文件等等,后面的都不用管,我们可以直接 使用 vim 编辑这个文件,在这个文件当中 手动写上不想要 上传的文件名后缀:
注意:上述 后缀名之前的 "*" 不能遗漏。
此时,我们 在本地拉取的 库文件当中创建 这两个后缀的 文件,然后使用 git status 命令,发现给出提示,这些文件是不能上传的,已经被识别出来了:
git提交 免密 提交代码
git本地免密码和账号pull、push_没有git账号怎么拉代码-CSDN博客
git 当中交提交代码本来是要输入密码的,但是可以进行免密操作,具体请看上述博客。