一、Git初识
Git的作用就是为了代码的版本控制,说白了就是每次更改了代码之后,方便我们管理,知道什么时候改了什么代码,什么内容,以便我们追溯、备份或者恢复代码版本。(当然早期不知道Git之前,我都是把整个项目文件夹拷贝一份进行备份 =_=!) 实际上,Git的作用的很简单,对应能实现这个功能的不仅仅有Git,还有一些像SVN等工具(其他的也没用过,也不敢瞎比比 =_=),但是Git是属于分布式的版本控制,而SVN是集中式的版本控制,Git还是免费而且开源的(所以谁会不喜欢免费的东西呢=_=!)
文章来源地址https://uudwc.com/A/Zgox
二、配置Git
1. 安装Git
直接在Git官网Git下载安装即可,全部选默认就行。安装完之后,在任何地方鼠标右键,可以看到 Git GUI Here 和 Git Bash Here就是安装成功了。Git GUI Here顾名思义GUI就是图形用户界面形式下使用Git,Git Bash Here则就是使用Bash命令行操作Git了。当然是选择Bash了,这才快乐哈哈哈哈
2.全局配置
安装完成后要进行全局配置(就跟初始化一样),这样全局配置一次,以后操作Git时它就不用每次询问一些信息了。具体的全局配置有两项:用户名和email地址。分别通过下面两句语句设定用户名和邮箱,引号内的参数是自己想填的内容。
git config --global user.name "Icarus***"
git config --global user.email "Icarus@qq.com"
设置完之后,可以查看是否设置成功:
方法1:在Git bash窗口中输入命令git config --list查看信息
方法2:直接打开git的全局配置文件,默认路径在 C:\Users\你的电脑用户名\.gitconfig
这里的.gitconfig文件是一个文本文件(如果看不到是因为你没有显示隐藏文件,在windows资源管理器的【查看】里选择【显示隐藏的项目】即可),既然是文本文件,那么直接用记事本或其他软件打开就可以看到刚刚设定的用户名和email信息。
3.设置远程仓库的公钥
我们想把本地仓库的代码同步到远程的代码仓库,就需要本地和远程之间”通信“,如果每次通信都让你输入一些询问的信息,那一定很麻烦,所以需要设置一些公钥(说白了就是打造一把钥匙,让远程仓库也有这把钥匙,每次把代码从本地打包,”锁上“之后,发给远程仓库,它不用再询问了,直接用给他的钥匙打开包裹就行)。这里配置SSH连接的公钥,具体操作是在默认路径C:\Users\你的电脑用户名\.ssh 路径下,右键打开Git Bash,输入下面的命令:
ssh-keygen -t rsa -C "****@qq.com"
(ssh-keygen命令用于生成”generate“ ssh的密钥”key", -t参数是指定密钥的加密类型,一般选择rsa就行, -C参数指定注释文字,可以给个邮箱啥的,还有-f参数可以指定密钥文件的存储文件名,但是一般默认就行,所以这个参数这里省略了)
执行完上述命令,可以看到C:\Users\你的电脑用户名\.ssh路径下有了两个新的文件,其中后缀pub的文件就是公钥(public key),另一个则是私钥。
本地生成公钥和私钥之后,就要在远程仓库里配置一下(相当于你把你的钥匙给远程仓库管理员也陪了一把)。
这里暂停一下,说一下远程仓库,以及Git和Github的区别。
*远程仓库
Github、Gitee、Gitlab这些都是远程代码托管平台,即不同类型的远程仓库,简单理解就是这里面有些仓库例如Github国外,有些在国内Gitee,不同类型的仓库之间功能有一些差别,但是最基本的远程代码托管和版本控制的功能,都是具备的。看到这里,还把Git和Github混为一谈的话,立马起立面壁十分钟(别问,问就是第一次我也面壁了10分钟)。这里就要理解,Git是一个代码版本控制工具,而Github是一个远程代码托管仓库,这俩玩意处理名字像,其他哪里都不像。至于远程仓库怎么选,看个人,如果你能 稳定 地连接Github并且想用Github,那么推荐使用Github,因为很多开源项目都是在Github上的。如果不能,那么也没关系,选择国内的Gitee(码云)就行,可以在Gitee - 基于 Git 的代码托管和研发协作平台免费注册一个账号。注册完后可以新建一个自己的仓库,注意这里仓库设置选择【公开】还是【私有】等,根据个人需求即可。
好,回到公钥配置。当确定了远程仓库之后,就要把刚刚我们本地生成的公钥给仓库管理员一把。下面以Gitee为例,首先在Gitee自己的登录界面点击头像,进入【设置】,找到并点击【ssh公钥】,可以看到当前公钥数是为0的,这里把刚刚本地生成的公钥(即后缀为pub的文件)用文本编辑器打开,复制里面的内容到SSH公钥提示的文本框里,然后点击确定即可。一般会提示你输入密码,你添加完成后,对应的邮箱里也会收到添加公钥的消息邮件。如果是Github,那么原理也是一样的,找到User-Setting-SSH Keys进行add即可,这里不再掩饰了。
到这里,所有的准备工作都做好了!
三、Git操作
1. Git所理解的四种文件类型
Git是一个版本控制工具,所谓控制,就是它知道仓库里哪个文件是什么状态!那么,对应的Git管理的文件它分为四种状态:
未跟踪(Untracked):即Git说我从来没见过的文件,比如刚刚创建或者移动、拷贝进来的文件。
已修改(Modified):即Git说我发现这个文件的内容被修改过了的文件。
暂存的(Staged):即Git说这个文件已经准备好提交了,就等你一声令下。
已提交的(committed):即Git说这个文件我已经提交到本地仓库了!
2. Git所理解的四种区域
Git中有3+1中区域,三个本地区域,包括
工作目录(Working Directory):本地存放代码文件的目录
文件暂存区(Stage):存放你准备提交的文件信息的地方,这个实际上是一个文件,在本地目录的.git隐藏文件夹里
本地仓库(Local Repository):本地仓库,包括你提交的所有文件
一个远程区域,即
远程的代码仓库(Remote Repository):远程托管你上传的代码的地方
3. Git的操作流程
从下面一张图可以比较清晰地看出整个流程:
从左往右:首先,本地的代码文件通过git add添加到暂存区,然后通过git commit提交到本地仓库,最后通过git push上传到远程仓库。
从右往左:远程仓库可以通过git clone将整个仓库克隆到本地仓库,也可以通过git pull直接把文件拉取到本地目录。本地仓库的文件可以通过git checkout切换不同的分支(例如mater分支切换到dev分支等等)
4. Git常用的命令
git status 【显示当前目录的文件状态】
git config --list 【显示配置信息】
git remote -v 【显示当前可用的远程仓库】
git remote add 远程仓库名 远程仓库网址 【建立与远程仓库的连接】
git add 文件 【把文件添加到暂存区】
git commit -m "添加的备注信息" 【把暂存区中的文件提交到本地仓库】
git push origin master 远程仓库网址 【把本地仓库上传到远程仓库origin 的master 分支】
git clone 远程仓库网址 【把远程仓库的文件克隆到本地】
git pull orogin master 【把远程仓库origin 的master 分支拉取到本地仓库】
......
5. Git第一次push可能会出现的问题
第一次push可能会失败,首先先看本地是否初始化了仓库,初始化有两种方法,一种是在当前目录 git init命令初始化,另一种是先去远程仓库git clone一个到本地;
第二种情况是文件夹权限,可以在文件夹属性里修改权限;
第三种是没有建立与远程仓库的联系,这种情况可以通过git remote add命令建立联系,或者先去远程仓库git clone一下。要查看是否建立了联系,使用git remote -v命令即可;
第四种情况是提示 ! [remote rejected] master -> master (hook declined),主要是本地分支和远程仓库分支不一致,一种方法是先pull下来,再强制上传git push -f; 另一种方法是创建远程仓库时,创建空仓库,什么都不要勾选,再上传就可以;
还有些情况是会提示你remote: error: GE007: Your push would publish a private email address. 很明显了,说我的邮箱不公开...这个需要在码云账号设置里,把邮箱那里的【不公开邮箱】的选项去掉,再上传就成功了...
还有很多情况无法一一列举,但是网上肯定有很多解决办法,慢慢搜吧。。。
四、小结
git是目前使用最广泛的分布式版本控制工具,github是一种远程代码托管平台,这两者有着本质的差异。国内无法 稳定 访问github的同学可以选择gitee码云,个人使用完全够了。然后最常用的就是git的4-6个命令,主要是要理解git对文件类型的识别和四种区域的分类,以及彼此之间的关系。
“教堂里举行着婚礼
我路过感到甜蜜
也让我想到
我和你”
——《海鸥》 Escape Plan文章来源:https://uudwc.com/A/Zgox