Git是一种开源的分布式版本控制系统,最早在上世纪90年代由Linux之父Linus Torvalds开发。GitHub是最早的用于代码版本控制与管理的软件,现已成为国际IT行业里的一大开源项目交流平台。到目前为止,基于git而搭建的版本控制系统已经多如牛毛,国内的Gitee(码云)、CODING,以及本平台所在的GitChat,都是国内各大业内人士所推荐的版本控制平台。本篇博客主要讲述如何在Linux系统上建立Git并提交自己的代码。
本地仓库repository的建立
所有的操作开始前,自己先必须有一个码云账号,没有码云账号的读者,可点击此链接注册账号:
码云账号注册
成功登陆码云之后,会看到如下的类似界面:
点击其中的“+”号,就进入了建立新仓库的界面,开始设置仓库中项目的属性:
Git中的仓库(repository)可以简单地理解为一个代码项目,提交到仓库里的代码共同实现这个项目的全部功能。gitignore是一个配置文件,对gitignore进行设置后,系统会过滤掉每一次用户提交的代码中用户不希望出现的文件,便于git的管理。
在这里简要地介绍一下一个仓库里的基本属性:
- 分支
分支可以简单地理解为仓库中项目的分流。项目开发实战中,讲究分工协作,即不同的人干不同的事。不同的人在干自己事的时候,有着自己独立的办公地点,这个办公地点就是自己的一个分支。一个仓库有且只有一个主分支,这个分支不能删除,而且固定了名称,所有子分支的派生都来自于此,这个分支就叫master,master的地位就好比一个项目的项目经理一样,master主分支确定了整个项目系统的开发架构,项目的各个模块均开发完成后,各个分支就要进行汇流,此时分支就要进行合并或删除。 - 版本
版本指的是一个分支里面不同代码的版本,一个分支的版本也决定了整个项目的版本。
填写完上述仓库的基本内容之后,点击“创建”按钮,会出现下面的界面:
出现这样的界面,就代表你的本地仓库建立好了,接下来就可以在上面提交代码了。
提交代码到码云
在Linux下提交代码前,先保证自己的Linux主机上已安装git命令(sudo apt-get install git(debian)或sudo yum install git(redHat))。
点击上图中“克隆/下载”的按钮,此时会弹出两个链接,点击其中的HTTPS链接,复制得到这个仓库在码云上的链接。
在自己的Linux主机上,输入如下命令:
git clone [HTTPS]
其中HTTPS就是之前复制的HTTPS链接,在Linux主机上直接粘贴即可,命令输入完成,执行之后,查看当前的路径下的所有文件,会显示出如下结果:
出现了上述情况,表示码云上的项目仓库已经成功拷贝到了你的Linux主机上,今后与此项目相关的代码的编写与提交,都必须在这个路径下进行。
写好一个项目的代码之后,接下来就要进行提交操作了:
- 第一步,先执行git中的add命令:
git add ./*
git中代码的提交可以简单地理解为快递的运输,上面的步骤等同于把你想要邮寄的快递放入运载的货车里。“./*”表示的就是提交的是这个文件夹底下所有的文件(不包含隐藏文件)。执行完这一步,代码文件仍然在本地的系统里,而未进入远程git仓库,此步骤做的事是将即将提交的代码文件进行集中存储和压缩。
- 第二步,执行git中的commit命令,给此次提交添加一个备注:
git commit -m "XXX"
m选项,表示“message”,就是给此次提交添加信息,“XXX”的内容就是你要输入的信息,一般此内容都是输入你在代码中做出的修改,或是你在代码中做出的优化。此步骤在每一次提交中都必须执行,否则后续的步骤就会不成功。这一步就好比给你将要寄出的快递贴上标签,或是写上重要的信息。
若得到上面这种结果,就说明执行此命令成功了。
- 第三步,执行git中的push操作
git push [HTTPS] [Branch Name]
此步骤才算真正意义上的提交代码了,参数Branch Name就是指分支名称,由于此次提交的代码并没有产生新的分支,所以此命令直接执行为“git push [HTTPS] master”即可。执行此命令成功的话,会出现下面的情形:
以上就算把整个代码提交的过程讲完了,成功执行上面所有步骤的话,代开自己的码云账号,进入自己的仓库目录下,就会看到以下情况:
可以发现,仓库目录里面多了一个test.c的文件和之前commit时的添加信息“This is a test”,test.c的内容则为:
正好就是之前写的代码的内容,提交代码大功告成!
可能出现的问题
- 执行完commit操作之后,也许会弹出下面的一大堆东西:
图中已经告诉了你解决的方法,执行下面的命令即可:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
可以知道,这是因为你还未在你自己的Linux主机上提交过代码,远程git未能识别提交者的身份而造成的。
-
执行完最终的push命令,没有出现之前提到的结果,反倒出现以下情况:
此情况产生的原因有两种,一种是因为本地的仓库文件夹下的文件并没有得到修改,所以push是不成功的,还有一种,就是未执行commit操作,就直接执行了push。 -
commit不成功,出现以下错误:
错误提示“未产生分支”,说白了,就是提交的代码与上一次相比并没有产生不同,所以提交是无效的。 -
push出错
这是由于缺少了HTTPS和Branch Name两个参数而导致的错误。
git进阶操作
1. 设置remote
git remote add [Name] [HTTPS]
git remote remove [Name]
前者是给远程的某一个代码仓库的链接取一个别名,后者是删除这个别名,执行过这样的操作之后,那么pull和push的命令书写就简单了,有参数HTTPS的地方都可以用你取得这个别名代替,就像这样:
git pull [Name]
git push [Name] [Branch Name]
2.查看提交日志log
git log
执行结果与下面的类似:
此命令执行之后,显示的是你在本地的Linux主机上push的所有记录,以及你修改代码,产生新分支的所有信息。
3.本地代码恢复checkout
git checkout .
如果你一不小心把代码全部删了,可以通过此命令把代码全部找回来,就像这样:
有了此命令,就不会出现“从删库到跑路”的狼狈难堪之况了,这个是git中非常重要的一个命令,此命令能够有效地保护代码和管理代码。此命令与log操作联用,可以有效地保证代码不会丢失,以及找到删除代码的“元凶”。
4. 查看当前本地的代码相对于远端Git仓库中的代码有何改变(diff)
git diff .
5. 多人协同开发时,从远端服务器更新代码(pull)
git pull
以上便是基于本地git的所有操作,并未涉及到远程服务器git操作。有关远程的git操作,必须在有网络的条件下进行,本人会在今后的时间里逐一讲述,敬请期待。