赞
踩
干货、直接、实用是我追求的目标。这篇文章我们一起看Git,主要受众群体是没用过Git的小白。
写这篇文章的初衷其实是源自于我几年前刚接触Git的经历,作为一个小白,其实最想知道的是Git是什么?整体使用框架是怎么样的?最简单的一次提交怎么实现?可是当时网上的文章都是上来就讲概念,操作,搞完我其实还是不知道Git是什么,没有一个形象的理解,和对具体过程的把握感,心里是虚的,所以计划写这么一篇文章,帮助小白更快理解掌握Git,也是对曾经的自己的一个交代。
对于没有接触过版本管理工具的小白同学来说,git是比较神秘的,首先什么是git? 你先这样理解一下,你每一天的生活都是一个属于你自己的记忆,git呢相当于一个神器,可以帮你记得每一天生活的细节,而且还可以帮你回到任意一天,还原任何时刻的现场,让你在某个时间点重新做一些事。再打个不恰当的比喻,你大前天情人节因为没有给女朋友买礼物,女朋友和你大吵一架,你觉得女朋友不懂事,你没有道歉,导致今天女朋友和你果断分手,你一开始毫不在乎,可是过了几个小时,你感觉非常后悔,去求复合,你女朋友果断的拒绝了你,说你们没可能了,怎么办?好牌打成稀烂。这个时候你拿出git直接穿越到大前天,直接买了大礼送给她,开启了另一个完美幸福的版本,你说git重不重要?要不要会?
好了,官方一点,git是我们伟大的开源大神 Linus 发明用来专门管理Linux内核的版本管理工具,据说当时只花了一周就写出来了,难以想象,so crazy. 正式使用命令之前,我们先了解三个概念:多人协同开发、本地仓库、远程仓库。
1 多人协作开发:我们还在学校读书的同学,不太理解这个概念,因为平时可能自己写的代码都是自己一个人写的。社会上的公司,他们的软件绝大部分不可能是一个人完成的,需要各个环节,掌握不同知识的人一起开发,一个软件同时有多人开发。
2 本地仓库:当我们的软件是多人协作开发时,每个人自己的电脑上都需要有一份软件的源码自由修改,不可能很多人使用同一台电脑开发。自己个人电脑上的软件源码就称之为本地仓库。
3 远程仓库:这么多人的修改怎么集合生效呢?就需要有一个公共的远程仓库,用来集合所有人的有效修改,大家把本地仓库的修改都提交到远程仓库上合并,也就实现了协同开发。
而git简单来说就是连接本地仓库和远程仓库的工具。好了,到这里相信你对git已经有了一个基本的概念了。下面我们从最基础使用讲起:电脑环境我们以最常见的windows 、ubantu为例。
我的windows版本:设置查看。
我的ubantu版本:查看命令 lsb_release -a
windows 官网下载,网站:https://git-scm.com/downloads
下载完,运行exe文件,按照提示顺序安装就行。
ubantu很简单 直接命令下载:
sudo apt update
sudo apt install git
git --version
上述命令的意思 :更新软件库——>安装git——>查看git版本。
windows和ubantu在安装上略有不同,但是使用上是一模一样的,创建仓库上略有区别。
windows
电脑上任意位置新建一个文件夹,进入文件夹,鼠标右键,选择git bash 。
接下来在命令行输入命令:git init
会看到一个新的.git文件夹(注:.git默认隐藏,得打开显示隐藏文件夹才能看到)
ubantu上更简单,本来就是命令行环境,执行以下命令就行:
mkdir 目录名
git init
到这里为止,windows和ubantu(Linux)的区别就全部讲完了,后面的操作就是一样的了。
上述的git 初始化操作步骤是固定的,有了.git文件夹,我们就可以进行git管理了。
这一步操作是为了,让远程仓库识别到是谁提交的代码。设置命令如下:
$ git config --global user.name +用户命
$ git config --global user.password +密码
$ git config --global user.email +邮箱
设置完之后用
git config --list
查看配置
密码可以设置,也可以不设置,设置的目的是为了防止除了你之外的人随便操作你的本地仓库做提交操作。这里有一点必须要说明的是,设置了密码之后,即使你配置了ssh密钥,你在提交的时候还是需要输入自己设置的密码。小白不理解这里的说法直接跳过。
tips:这里讲的是 --global全局配置,单仓配置没讲,讲最需要的步骤,防止将小白绕晕了。
这一步我们先说明一下常见的远程仓库。远程仓库不是凭空而来的,要么我们使用知名公开的在线仓库如 github gitee等,要么使用gitlab搭建属于自己的局域网仓库,个人开发者和开源社区项目喜欢放在github gitee上,而私人公司为了更高的安全性、私密性,一般选择采用类似gitlab这种方式,自己搭建一个公司内部私有服务器作为远程仓库使用。简单理解,远程仓库需要你选择一个远程平台在上面创建一个仓库。 为了更全球化,本文远程平台选择世界最大代码托管平台github作为例子给读者说明。
使用这个平台之前,我们需要登录github进行账号注册,相信我,走完这一步,你算是真正加入了程序员的大本营,欢迎你打开新世界的大门,哈哈。
github官网:https://github.com/
tips:访问可能需要墙网。
下面按照提示流程注册就行:
注册完,点击自己的主页,就可以新建仓库了。
下面讲新建仓库的操作:
tips:上图写错了,不是README.txt,是README.md文件。
假设创建了一个名为net的仓库:
查看默认分支为main
OK,到这里远程仓库就已经创建完毕,下一步就是要将本地仓库关联到远程仓库。
这一步,简单来说,就是执行命令给本地仓库配置对应的远程仓库,人话就是让本地仓库知道远程仓库在哪里。
命令按下面顺序执行:
查看远程仓库命令:这个命令第一次执行,没有任何信息打印的,因为还没有配置。
git remote -v
关联远程仓库
git remote add +远程仓库别名(一般常取用origin) +SSH协议地址
上述的SSH协议地址在github上查看:
tips:这里以采用ssh协议为例子,http协议的这里没讲。
tips:origin这个只是你本地对远程仓库的代称,不一定取名origin,可以取名为任意字符如 dog 、ggg、study等,当然最好英文。有一点需要注意的是,一个本地仓库可以关联多个远程仓库,我们只是习惯把第一个关联的远程仓库称为origin,小白不用关注关联多个远程仓库怎么做,先搞关联一个远程仓库的情况,免得混乱。
到这里关联远程仓库的操作已经完成,但是现在还不能提交(本地往github推送文件)、拉取(本地获取远程仓库文件),因为还没有规定通信的密钥,下一步我们要配置一下通信的密钥。
这一步简单形容一下方便读者理解,你(本地仓库)在成都买了个房子(远程仓库),你已经知道房子在哪里,在哪个小区,几栋几层几号(本地仓库关联远程仓库),但是你回家(拉取、推送)不输入密码,电子密码锁会开门吗?这个电子密码是不是我们提前设置的呢?肯定是,这里说的电子密码就类似于我们的ssh公钥,这下你应该理解为啥要配ssh密钥了。
上面是形象的形容,下面官方一点说下概念。其实本地仓库访问远程仓库有两种方式,一种通过http协议访问,一种就是ssh协议访问。两者的区别是什么?http的信息传输不够安全,如果是顶尖黑客,或许可以截获到你的信息,并且破译出来,而ssh协议就不同了,它的数据采用RSA加密算法加密传输,十分安全,这么说吧,用超级计算机去破译也要花无数年。RSA算法这里我们就不细讲,你只需要知道它的大概组成和原理,它有两对密码 :私钥和公钥,私钥加密可以用公钥解密。我们需要把包含我们邮箱、用户本地仓库信息的RSA公钥放到github上,每次我们本地仓库拉取 、推送的信息用本地RSA私钥加密给到github,github用公钥解密,解密成功也就是验证身份成功。http协议方式没有添加密钥这个步骤,但是在每次拉取 推送的时候都需要输入平台密码,这里github http 平台密码怎么设置,读者就自行去了解一下,这里不做过多描述。
生成ssh密钥的命令:
ssh-keygen -t rsa -C “你的邮箱名字”
执行命令之后,一直往下按Enter键就行。
windows上最后会在C盘用户目录生成.ssh目录。
ubantu则会在home用户目录下生成.ssh目录
进入该目录,id_rsa是私钥,id_rsa.pub是公钥。打开公钥:
把里面的内容全部复制,然后打开github ssh密钥设置:
tips:上面图片把一字不差打成一次不差了。
添加完之后,就会出现密钥显示,我这里添加了两个。对,可以添加很多个,对应很多个设备。
好了,到这里,开始实战提交、拉取之前的准备,我们已经做完了,下面就是最重要的一步。
恭喜你,读到这里已经走进git一大步了,下面开始实战。之前我们已经配置了远程仓库,远程仓库上已经有一个我们事先创建好的README.md文件,我们现在尝试将它拉取下来,跟着我操作,一定要动手。
首先切换分支,github上默认main分支,但是本地仓库默认master分支,要先把本地的分支也切换成main。小白先跟着操作,下面我会总结这些命令,列出来,最重要的是理解命令的意思,而不是死记硬背住命令。
切换完分支之后开始拉取远程分支上的文件。
README.md文件已经被我们成功拉取下来了。
上述使用到的命令总结及它们的简单扩展:
切换分支:git checkout + 分支名字
创建并切换到新建的分支:git checkout -b + 分支名字
删除本地分支:git branch -d + 分支名字
拉取远程分支:git pull origin + 分支名字
git branch:查看本地仓库有哪些分支
git branch -r:查看远程仓库有哪些分支
git branch -a:查看所有仓库分支,包括远程仓库和本地仓库
我们新建一个文件提交到远程仓库上去(以ubantu为例子,windows直接新建txt文件即可):
命令vim test.txt
tips:不会vim操作的同学,先学习一下,这里就不教学vim了。
下面就进入最经典的操作部分了:add——>commit——>push
git commit用来填写提交描述:
接下来就可以push提交了。
然后打开github查看:
OK!到这里你已经跨出一大步了,成为了一个合格的git commiter,恭喜。
上述用到的命令解释和简单扩展:
git add + 修改文件名:将修改的特定文件从“工作区”保存到“暂存区”
git add . :一次性将所有修改的文件从“工作区”保存到“暂存区”
git status :查看“工作区”和“暂存区”修改情况,添加情况
git commit :填写提交信息,并把修改文件从“暂存区”合入到“本地仓库”
git push origin main :将修改文件提交到远程仓库origin的main分支
git add ——> git commit ——> git push 这三个命令和它们的使用顺序一定要牢记于心,记住它们你就真入门了。
到这里,我相信你小子已经简单入门和中等理解了,后面就需要,勤加练习,开始进阶了。又到了师傅领进门,修行在个人的时候了。
Wish to see you agian.
2023/8/26 预告:后面会写git 进阶部分的文章 保姆级别教学 (二)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。