众所周知,Git是程序员必备技能之一,作为目前最主流的分布式版本控制系统,在多人(程序员)项目开发中有着不可或缺的战略地位。有了Git,我们才不会在项目开发中,因为各个开发人员的代码版本问题而手忙脚乱,分身乏术。按照惯例,先来看看此篇帖子的思维导图(部分内容参考哔哩哔哩up主:遇见狂神说)。
思维导图
可以看出Git入门的东西还是比较简单的,其实熟悉了这些就差不多了,剩下的自己可以在工作中慢慢学习。
1.基本命令
在入门指令之前,还有重要的两点需要提醒:
- 若要改变界面的字体大小,直接用Ctrl+鼠标滚轮即可。
- 粘贴复制需要用鼠标操作,千万别用Ctrl+C和Ctrl+V。
- 如果想继续输入刚才输过的命令,可直接通过键盘上的上下方向键进行查找,然后直接回车即可。
首先是几个修改当前路径的指令,cd
和cd ..
这个很简单。就是改变当前的工作路径。
比方说如从远程仓库克隆下来一个工程,名为first,如下图所示:
那么如果想进入下一层,可直接通过cd
进行,操作,同样是cd,但是需要注意cd
与..
中间有空格。
ls很简单,就是列举出当前目录下的文件,如下图所示。
erhu@LAPTOP-0IH383JB MINGW64 ~/Desktop/Gitcode/first (master) $ ls LICENSE README.en.md README.md qwer.txt
clear
是清屏操作,熟悉matlab编程的同学,肯定会对这个命令非常熟悉,就是简单的清屏而已,没有实际的任何操作。clear+回车之后的视觉效果如下图所示。
history
这个命令可以查到你最近使用过哪些命令,一一列举出来,因为有时候我们会忘掉某些近期操作过的命令。如下图所示(局部):
还有一些常见的指令,比方说help
可以查看帮助信息,等等等等。
2.Git配置
配置信息可以直接用git config -l
命令进行查看。其中配置文件又分为系统配置文件和用户配置文件。查看的时候可采用如下的命令。
#查看系统config git config --system --list #查看当前用户(global)配置 git config --global --list
一般我们配置的个人信息是在如下的路径下(erhu就是我们的用户名,每个人应该不一样),配置文件就是我们在Git中的一个用户识别信息,就像身份证一样。
配置完了就会生成这个文件,配置方法也很简单就是用思维导图中的方法进行配置。
git config --global user.name +"姓名" #名称 git config --global user.email +"邮箱" #邮箱
其中邮箱也可以不用双引号。
其他的信息一般都是默认配置好的,若有缺失,大家可以自行解决。
3.Git工作原理
Git可以分成四个工作区域,其中本地工作区域有三个,分别是工作区(Workspace),暂存区(Index)和仓库区(Repository),为了区分远程仓库,下图中采用了Local Repository的名称,下图展示了这四个工作区域以及文件在各个仓库之间的转交关系(方法)。
其中
- 工作区就是我们平时存放代码的地方。
- 暂存区临时存放我们代码的改动,或者叫待提交更新区。
- 本地仓库,安全存放我们提交的所有改动,其中HEAD指向最新放入仓库的版本。
- 远程仓库,托管代码的服务器,也就是项目开发中开发人员的公共区域和最终存放代码的地方。
因此,Git管理的文件有三种状态:已修改,已暂存,已提交。具体地说提交分成提交到本地仓库和远程仓库两种。
4.项目搭建和克隆
工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是我们项目的目录,也可以是一个
空目录,建议不要有中文。
创建本地仓库有两种方法,一种是搭建本次仓库,另一种是直接克隆远程仓库。这取决于项目或者自己的需求。
常见的代码托管平台有两个GitHub
和Gitee
,GitHub
是世界上最大的代码托管平台,而Gitee
是国内比较常用的代码托管平台。二者的操作大同小异(本文中采用Gitee)。
4.1 本地项目搭建
本地项目搭建很方便,只需要在本地新建一个文件夹,然后在当前路径下打开Git Bash,然后执行git init指令即可,如下所示:
执行完之后,在当前路径下就多了一个.get文件夹。
然后就可以在当前路径下愉快地开发了。
4.2 克隆远程仓库
下面我们就以一个远程仓库的克隆开发为例,按照克隆,修改,提交这三个步骤完整地走一遍。
远程仓库的搭建,还有公钥的配置等,大家可自行学习,在此不再展开。
4.2.1 克隆远程仓库
打开我们的远程仓库,然后找到克隆/下载按钮,然后点击,就会出现当前仓库所在的地址,直接复制。
然后在想要开发的本地路径下,打开Git Bash,然后输入命令git clone + 链接地址
这个链接地址就是刚才复制的内容。
稍等片刻,就会将该项目克隆到本地。
然后就可以开发了,要只是单纯为了学习,可以修改readme文档。打开文档,写入下面的内容,并保存。
在本地新建一个分支,我新建了一个名为practice
的分支。
$ git branch practice
切换到当前的分支
git checkout practice
然后我们可以查看本地的代码哪些被修改了(这步可忽略)。
git status
可以看到,我们刚才修改的的README.md有了记录。
然后添加修改代码到缓存。
git add .
并添加修改的备注。
git commit -m "modify readme"
然后就是最后一步,提交到指定的仓库,在本文中,我们提交到了新建的practice
分支中。
git push origin practice
自此,我们就把本地的项目push到了远程仓库。我们一起去远程仓库看看吧!
可以看到,我们已经顺利地把文件push到了远程仓库。打开看看。
确实对我们的修改记录非常清晰。
5.文件状态
所谓的版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,才能做到有的放矢,以免出现文件漏交,或者其他情况发生。
一般文件分为四种状态:
- Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制 。通过
git add
状态变为
Staged 。 - Unmodify: 文件已入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致 。这种类型的文件有两种去处,如果它被修改,而变为 Modified。 如果使用
git rm
移出版本库, 则成为 Untracked 文件 。 - Modified:文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过
git add
可进入暂存 staged 状态, 使用git checkout
则丢弃修改过, 返回到 unmodify 状态, 这个git checkout
即从库中取出文件,覆盖当前修改 ! - Staged: 暂存状态。执行
git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为
Unmodify 状态。执行git reset HEAD filename
取消暂存, 文件状态为 Modified。
这四种状态重在理解,不需要死记硬背,只需要将其状态及转化方法记住就行,如果记不住,就不妨再来一个上面的那种转化图。我自己画了一个,如下图所示:
还有剩下的一小部分内容,也十分重要,就是Git的分支管理,以后若有时间,我都会更新出来,感谢大家的理解和支持,当然作为Git的初学者,文中也有很多不到位的地方,欢迎各位大佬指出!!!
本篇文章很多内容借鉴了哔哩哔哩up主遇见狂神说的内容,但自己均做了实践,并未以盈利为目的,仅仅作为相互学习之用,特此声明!
结束语
《人生海海》中说:“世上只有一种英雄主义,就是在认清了生活真相后仍然热爱生活。”尤其是今年(2022)在疫情的影响下,我们的生活都遇到了多多少少的坎坷与波折,但生活还是要继续的,不是吗?
愿我们都在相关领域有所收获,有所成就!!!
------------------------------------------------------------------------END-------------------------------------------------------