熬夜整理小白入门与提升分布式版本管理软件:Git,图文并茂(建议收藏)
@
什么是Git
- Git是目前世界上最先进的分布式版本控制系统(没有之一)。
- Git有什么特点?简单来说就是:高端大气上档次!
SVN VS Git
- Git是分布式的版本控制系统,而SVN是集中式的版本控制系统,下面画个图来讲解它们的区别:

什么是版本控制
- 我们今天上班敲了一天代码,然后关机下班。明天来的时候,可能因为某个原因要修改代码。修改之后发现,怎么比之前的还差。于是又得修改,一直一直修改下去,最后不知道修改了多少次,到头来可能觉得还是最初的代码写的好,最直接的方法就是手动敲代码恢复到最初的代码
- 这个过程实在是难受,于是Git就被广泛使用了。因为Git是版本控制系统,只要我们把代码交给了Git,我们就相当于拥有的后悔药,可以把代码恢复到任意的版本。Git还有一个特性就是分布式(这个接下来就会讲到),由于这个特性,SVN逐渐被Git取代了
- 下图就叫版本控制,可以查收提交的作者和提交的相关信息

安装Git
- Git官网下载地址:https://git-scm.com/
- Windows版本的Git安装除了安装路径需要修改一下,其他的地方都可以默认,然后一直next就安装完成了。
- 安装完之后,我们在Windows任意位置右键,如果出现下面红色框中的选项,就说明Git安装成功了。

- 右键空白处,如图显示刚安装成功

- 配置窗口字体

- 按住ctrl+ 鼠标滚轮也可以放大窗口,但下一次打开又是默认字体大小
谁在操作?
- 在代码的推送和拉取的时候,Git要知道你是谁,也就是能标识你身份的信息。
- 这些信息就是用户名和邮箱
设置全局身份信息,也就是对所有本地仓库有效。
git config --global user.name = 用户名
git config --global user.email = 邮箱
设置本地仓库身份信息,也就是只对改本地仓库起效。
git config user.name = 用户名
git config user.email = 邮箱
查看全局身份信息,查看本地仓库身份信息去掉–global即可。
git config --global user.name
git config --global user.email

一般设置全局身份信息
Git本地仓库
- 我们需要创建Git本地仓库,然后把代码交给Git管理,这样才能让Git控制我们的代码版本,我们才算拥有了后悔药。
- 在Windows上,任意的Git命令都是在Git Bash Here中执行,我们通过git init命令来创建本地仓库。执行命令后会创建.git文件夹,该文件夹默认是隐藏的。不能手动对该文件夹做其他操作,否则会破坏本地仓库。

- 在Windows上,任意的Git命令都是在Git Bash Here中执行,我们通过git init命令来创建本地仓库。执行命令后会创建.git文件夹,该文件夹默认是隐藏的。不能手动对该文件夹做其他操作,否则会破坏本地仓库。
- 如果你非要看隐藏文件在哪里,请看下标

- 查看--勾选隐藏项目,即可以显示隐藏的文件.git

- 虽然我们是安装Windows版本的Git,但是Git一开始是为合并Linux代码被诞生的,所以Git命令兼容Linux命令,
- 我们右键可以看到Git Bash Here,点击它出现控制台,可以看成是精简版的Linux终端,可以执行Git命令,也可以执行Linux命令。
本地仓库构造

- 了解了Git本地仓库构造,接下来我们就真正行动起来,让Git控制我们任意文件的版本
- 这里只是以简单的.txt文件来讲解Git是如何控制版本的
重点
摘自廖雪峰Git教程
- 所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。
- 版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。
- 图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。
- 不幸的是,Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,如果要真正使用版本控制系统,就要以纯文本方式编写文件。
- 因为文本是有编码的,比如中文有常用的GBK编码,日文有Shift_JIS编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。
如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。
使用Windows的童鞋要特别注意:
- 千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载Visual Studio Code代替记事本,不但功能强大,而且免费!
Git常用基本操作
- 千百年咱不用的命令咱就不说它了。就讲些常用的。一起来
git add
第一步:
- pwd是打印所处的的目录路径
$ pwd
/d/Study
第二步:
在该目录中新建文件study.txt,任一输入内容

第三步:文件添加到暂存区git add 文件名

好了,接下来我们就把工作区中的文件添加到暂存区中,添加的方式有多种,如下命令:添加单个文件到暂存区
git add 文件名称
- 添加多个文件到暂存区
git add 文件名称 文件名称 ...
- 添加该目录下所有文件到暂存区
git add .
第4步:查看文件状态
git status
- 文件名颜色变成了绿色,说明该文件已处于暂存区,也符合我们上面说的暂存区中所有的文件都会显示为绿色。

git commit
- 虽然我们把文件添加到暂存区了,但是Git还不能真正管理我们的文件
- 只有我们把文件提交到版本库,Git才算真正管理我们的文件
- 因为我们每一次提交,都会产生一个版本号,我们就是通过版本号来任意切换不同的版本

- 简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。这时我们再输入git status命令,如下图,发现什么都没有了。说明工作区和暂存区没有要提交的文件了。

git diff
git diff 顾名思义就是查看difference,中文意思就是不同,即然是要看不同,我们就要先修改文件
修改文件内容为:day day up
再使用git status 查看文件状态

说明文件被修改,但暂时没有提提交到版本
要记住点:修改后就还要走两个步骤:
- 先添加到暂存区
- 再提交到版本库
那我们查看两次提交文件的区别呢?或者说文件被修改哪些内容了,这时我们就用到git diff 文件名称命令。

画个图来回顾我们上面的操作

git log
说个笑话,我们可能明天起床后,就忘记了昨天我们往版本库提交过多少次了。
哎,别担心,Git就知道我们会出现这种情况,它很贴心,为我们准备了git log命令,该命令显示从最近到最远的提交日志。

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数:

温馨提示:
我们看到的一大串类似c617e68cad9e378…的就是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,每个人的commit id肯定是不一样的。
为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。每提交一个新版本,实际上Git就会把它们自动串成一条时间线。
知道了每一次提交的版本号之后,我们就可以使用时光穿梭机,在多个版本中任意切换。
知道了每一次提交的版本号之后,我们就可以使用时光穿梭机,在多个版本中任意切换。
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交41ec51f8324d…(每个人提交的版本号肯定是不一样的),上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个不现实,所以写成HEAD~100。
git reset
- 我们已经知道怎么查看提交日志,以及了解什么是版本号了。接下来就开始使用时光穿梭机。git reset命令就是版本回退的命令。
- 在回退之前我们先看看当前Git.txt的内容,cat 文件名称命令是打印指定文件内容
- cat 文件名

git reset --hard head^:回退到上一个版本

git mv
- 用于移动或重命名一个文件、目录或软连接
# 将文件从暂存区和工作区中删除:
git mv file newfile
# 如果新但文件名已经存在,但还是要重命名它,可以使用 -f 参数:
git mv -f file newfile
checkout
- 想检出指定版本,比如回退版本,将代码检出到老代码
- git log查看版本提交的记录
- 通过commit提交的版本号进行切换
- 切换后效果展示 - git log再查看

git tag
- 作用:
- 我们想为我们的xx项目发布一个"1.0"版本。 我们可以用 git tag -a v1.0
- -a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。 推荐一直创建带注解的标签。
- 命令:
git tag -a v1.0
- 完整:
git tag -a v1.0 -m "submit"
再通过git log 查看

clear
- 清除屏幕内容
- 清除前

- 清除后

Github使用教程
什么是Github
- GitHub作为免费的远程仓库
- 如果是个人的开源项目,放到GitHub上是完全没有问题的。
- GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。
安装Github
- 点击“Create your account”,进入GitHub注册页面
- 标注 1:Sign in,登录;
- 标注 2:Sign up,注册---点击

- 输入注册信息
输入账户名、邮箱地址、密码,点击验证,(注意:账户名、邮箱地址、密码必须符合规则,且邮箱地址真实有效)

- 验证

- 输入邮箱验证码

添加远程仓库
- 由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的
- 所以我们需要配置验证信息:使用以下命令生成 SSH Key:
ssh-keygen -t rsa -C "3228373734@qq.com"

找到key

- 复制key

打开Github官网设置

开始创建远程仓库
- 如图所示操作

创建后

push
- 操作示意图


- 上传后效果

pull
- pull 则是将远程主机的master分支最新内容拉下来后与当前本地分支直接合并 fetch(获取)+merge(合并)
- git pull origin master
注:使用场景,A开发人员将代码放至Github,B开发修改代码后,A用户pull仓库代码至本地仓库,这样A开发人员就显示了B开发者修改后的代码

clone
- 要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆
git clone git@github.com:YF223/good.git- Git支持多种协议,包括https(速度慢),SSH(默认)

如果对软件测试、接口测试、自动化测试、技术同行、持续集成、面试经验交流。感兴趣可以进到893694563,群内会有不定期的分享测试资料。
如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。
熬夜整理小白入门与提升分布式版本管理软件:Git,图文并茂(建议收藏)的更多相关文章
- ❤️❤️爆肝3万字整理小白快速入门分布式版本管理软件:Git,图文并茂(建议收藏)--已码一万字❤️❤️
@ 目录 什么是Git SVN VS Git 什么是版本控制 安装Git 谁在操作? Git本地仓库 本地仓库构造 重点 Git基本操作 git add git commit git diff git ...
- 谈谈分布式版本管理工具Git
一.主流的版本管理工具 目前在企业中比较主流的版本管理工具有:GIT.SVN.CVS等等. 二.什么是Git? Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.是 L ...
- 分布式版本管理工具 git常用命令
Git global setup git config --global user.name "joey" git config --global user.email " ...
- DeepFaceLab小白入门(3):软件使用!
换脸程序执行步骤,大部分程序都是类似.DeepFaceLab 虽然没有可视化界面,但是将整个过程分成了8个步骤,每个步骤只需点击BAT文件即可执行.只要看着序号,一个个点过去就可以了,这样的操作应该不 ...
- DeepFaceLab小白入门(2):软件安装!
严格上来说这个软件本身并不需要安装,他唯一需要的就是对应版本的显卡驱动,CUDA和CuDNN都非必须.下面我说一下如何安装正确的驱动版本.我尽量写得简洁清晰,希望大家都能看懂,但是,如果你连基本的电脑 ...
- DeepFaceLab小白入门(1):软件简介!
简介 DeepFaceLab是一种利用深度学习识别和交换图片和视频中的人脸的工具 这是一个github上的开源项目,所有人都可以查看源代码也能免费使用.个人认为这个项目的最大优点就是安装超级简单,几乎 ...
- 分布式版本管理git学习资料整理推荐
一.什么是git? Git is a free and open source distributed version control system designed to handle everyt ...
- gitlab版本管理小白入门
在新公司入职已经一周了,由于刚好在版本空档期,没有什么开发任务,就自己熟悉熟悉代码什么的. 目前公司用的是git,原来公司用的是svn,今天就记录下从小白入门. gitlab分布式版本管理,理论介绍就 ...
- 【网络爬虫入门05】分布式文件存储数据库MongoDB的基本操作与爬虫应用
[网络爬虫入门05]分布式文件存储数据库MongoDB的基本操作与爬虫应用 广东职业技术学院 欧浩源 1.引言 网络爬虫往往需要将大量的数据存储到数据库中,常用的有MySQL.MongoDB和Red ...
随机推荐
- .NET Core:在ASP.NET Core WebApi中使用Cookie
一.Cookie的作用 Cookie通常用来存储有关用户信息的一条数据,可以用来标识登录用户,Cookie存储在客户端的浏览器上.在大多数浏览器中,每个Cookie都存储为一个小文件.Cookie表示 ...
- .Net 5 新特性之--支持字典在迭代中进行修改
我们都知道以前字典迭代中是不支持动态修改的[否则会报错::"Collection was modified; enumeration operation may not execute.&q ...
- dataTemplate 之 ContentTemplate 的使用
<Window x:Class="WpfApplication1.Window38" xmlns="http://schemas.microsoft.com/win ...
- 多线程编程<三>
1 /** 2 * 线程的暂停.恢复和停止 3 * @author Administrator 4 * 5 */ 6 public class ThreadControlDemo { 7 public ...
- Java HdAcm1174
空间一般直线的方程是:(x-x0)/a=(y-y0)/b=(z-z0)/c,这是一条过(x0,y0,z0),方向矢量为{a,b,c}的直线.假设已知点的坐标是A(e,f,g),过A点,且与{a,b,c ...
- 单片机学习(九)定时器扫描按钮和数码管与PWM的使用
目录 一.使用定时器扫描按钮和数码管 1. 使用定时器进行扫描的缘由 2. 定时器扫描独立按钮 3. 定时器扫描数码管 二.PWM的使用 1. PWM简介 2. LED呼吸灯 实现一 实现二 3. 按 ...
- 3k+2形式的素数相关的两个命题的证明
- 24点游戏(24 game)的C++编程求解实现
什么是24点游戏 24点游戏,英文叫做24 game,是对给定的4个非负整数进行加减乘除运算,要求每个数都要被用到且仅用到一次,并得到最终的运算结果为24.比如3.8.3.8这四个数,可以找出唯一的一 ...
- 【曹工杂谈】Maven和Tomcat能有啥联系呢,都穿打补丁的衣服吗
Maven和Tomcat能有啥联系呢,都穿打补丁的衣服吗 前奏 我们上篇文章,跟大家说了下,怎么调试maven插件的代码,注意,是插件的代码.插件,是要让主框架来执行的,主框架是谁呢,就是maven ...
- 将数据保存到excel文件(纯前端实现)
// 导出excel文件 /** * 依赖: import XLSX from 'xlsx' */ let obj = { '学生信息表': [ ['姓名', '性别', '年龄', '分数'], [ ...