Git的常用操作图文指南

一、安装 git

 本文简单介绍 Git 的基本操作,适合刚接触的 Git 的小伙伴...我会列举一些常见问题以及解决方案,
 
 毕竟我也是从问题堆里一路爬坑来的!反正有问题,找度娘,大部分问题都能在那找到解决方法!

这也是我自己给自己总结的一篇 Git 操作指南,方便随时复习!

 如果想深入学习 Git,建议参阅官方文档 :

Git官方文档: https://git-scm.com/book/en/v2

Git文档

Git的安装
关于 Git 的安装,网上有很多很详细的教程,就不在此赘述,一般来说,新手就默认一路 NEXT 安装即可!

Git官网下载地址:https://git-scm.com/downloads

目前已经更新到 2.37.1 版本

Git下载

安装之后记得配置环境变量:保证在任何地方都能访问到Git

配置环境变量

 配置完之后,我们就可以在命令行或者其他终端访问 Git 了,包括 VScode 内置终端:
 
 使用下面两个命令:
git -v 	# 查看当前 Git 版本 
git 	# 会出现很多 Git 的提示信息
如果上述命令得不到下面的信息,说明你的 Git 安装出问题了...请自行百度解决吧!

在这里插入图片描述

 当然,看似简单的安装不总是一番风顺。可能有小伙伴会在安装的过程中遇到各种问题,还是那句话:
 
 活用百度,大部分问题都可以解决!

 关于 VScode 常见问题:可能有同学配置完之后,在 VScode 终端还是找不到 git ,
 不要慌,检查一下环境变量的路径,如果路径没问题,那一般来说,关机重启之后就有了!
 (我安装的时候就遇到过,折腾了半天,结果只需要重启就OK~~😒)

二、关于 Git 的一些简介

在使用 Git 之前,我们先了解一下 Git 是啥玩意

Git ---- 开源分布式版本控制系统
    对于学习编程的小伙伴来说,咱们使用 Git 就是用来管理代码的一种工具!有了这种工具,
    
    我们可以更方便、高效地进行代码的开发与合并,也能优化多人协作开发的流程!
	
	简单提一下:代码管理分为集中式和分布式,目前分布式比较主流,Git 就是分布式管理方式!

三、Git 常用的基本操作(可以跟着我的操作玩一玩)

1.项目初始化
1.在桌面上新建一个空文件夹 “Git演示”,以它为我们要管理的项目,开启 Git 试炼之旅吧!
2.在该文件夹下打开任意命令行工具,这里为了方便,之后的操作都是在 VScode 终端进行😊
3.VScode ==> 空文件夹 ==> 右键“在集成终端中打开”,输入以下指令:
git init # 项目初始化
成功之后如下图所示,且在空文件夹内会出现一个 .git 文件夹
这是个隐藏文件夹,可以设置开启!

在这里插入图片描述
在这里插入图片描述
注意!这个 .git 文件夹是用来跟踪管理 Git 仓库的,
没事千万别去修改里面的文件!!!不然会破坏 Git 仓库!

当然...你要是非要试一下也无妨,反正练手的项目可以随便丢...多折腾一下说不定会发现什么新大陆呢!
2.开始在本地仓库管理项目吧!

在这之前,先简单了解一下本地仓库的结构:

在这里插入图片描述

工作区: 就是项目的根目录(文件夹)
stage: 本地仓库的一个暂存区 暂时存放的区域 等待提交,可撤回重新编辑...防止用户误操作,给一次后悔的机会!
master: 本地仓库的 master 分支 git init 之后默认创建的分支,也可能会是 main...用来永久保存项目。
		这里存放的是提交之后的项目,可上传到远程分支上...一旦提交,就不可撤回了!

在这里插入图片描述

2.1 把项目添加到本地的暂存区
1.我们在刚才的空目录下新建一个文件 “readme.txt”
2.在新建的文件第一行写点什么...就当我们在进行项目开发了!

在这里插入图片描述

3.假设此时我们写累了,不想写了,想把项目先添加到暂存区保存一下,就使用以下指令:
git add "fileName" # 把某个文件添加到暂存区
当然在此之前,最好先使用指令:
git status # 查看当前项目的更改状态 我们能看到所有发生变动的文件
如果需要添加多个文件,就使用:
git add . # 将所有变动的文件都添加到暂存区
然后再使用 git status 查看一下添加状态

注意!!!git add . “add” 后面一定要先打个空格,再打 “.” 否则会报错!
在这里插入图片描述

2.2 把项目从暂存区提交到本地仓库的master分支:
1.好了,我们不修改了,写完了,然后就把它提交到仓库保管吧!
使用下面指令:
git commit -m "描述信息,我这次提交新增了一个 readme.txt 文件!" # 将项目提交到本地仓库

在这里插入图片描述
注意!!!如果是第一次提交,可能会弹出如下信息:在这里插入图片描述
这个不用着急,第一次提交,你总得告诉人家这个仓库的主人是谁吧!

按照它的提示,注册一下用户邮箱和用户名即可:
git config --global user.email "123456@qq.com"
git config --global user.name "MX扑克猫"
然后再使用:
git commit -m "描述信息..." 
OK 到这 以后提交都不会再有这种问题了! 也恭喜你成为了一个正式的  “本地” 仓库管理员!
别着急,远程的在后面呢!
2.3 试着玩一下 暂存区 的后悔药吧!(刚接触几乎用不到,没兴趣可跳过…)
1.假如,我们在 readme.txt 文件第二行不小心写了某人的坏话!!😅
2.然后又不小心把文件添加到了 暂存区 !😅 但是还好还没提交到仓库...
3.怎么办?被他看到了会被捶的吧...😬

在这里插入图片描述

不要方!暂存区给了一次后悔的机会!
git restore "fileName" # 把指定文件从暂存区打回来
git restore  --staged "fileName" # 把指定文件从暂存区打回来
注意,这操作是让该文件回到上一次提交(也就是上次commit)的状态,只能撤一次,不能连续撤回!

在这里插入图片描述

当然,这个指令不一定会生效,原因多种多样,可能是编辑器的问题,
也可能是指令后面 - - 修饰符的原因亦或者其他原因,目前这不重要,了解一下就OK!

但是千万注意!!!一旦用 commit 提交之后… emmm… 建议删库跑路吧!
这真不是开玩笑,因为你的每次提交都会被记录在案,一旦上传,当众社死!
就算手动改了,或者切换到之前的版本,都会留下不可磨灭的痕迹!

玩闹归玩闹!提交请三思!慎重慎重!

在这里插入图片描述

2.4 提交日志和版本控制(感兴趣可以玩一下,着急学习远程仓库就跳过吧😊)
1.假设我们再给 readme.txt 文件 添加几行字,每加一行就提交一次...

在这里插入图片描述

此时,我们已经提交了好几个版本了!那怎么查看提交的历史记录呢?
git log # 控制台打印 Git 日志

在这里插入图片描述

通过 git log 就可以查看我所有的历史提交记录了;
然后我们可以获取到每一个版本的版本号:比如第一次提交的:0ab5133f0ddbb3d51e44b2b7b0584e647e3a0430
这个版本号是一个哈希值,可以理解为文件的指纹,身份证,是唯一的!
得到这个版本号之后,我们可以通过:
git reset --hard 版本号 # 强行回滚到指定版本 相当于 Ctrl + Z 的撤销操作... 
版本号一般只需要复制前十几位就够了,几乎不可能会重复...

但是! git log 只能查看当前版本之前的提交记录...
如果我们滚回第一版,那后面的2、3、4都看不到了...也就滚不回去了...

在这里插入图片描述

不要方!咱们还有招!
git reflog # 查看所有的历史记录 包括回滚记录
这样 再搭配:
git reset --hard 版本号
咱就可以实现版本切换的奥义! “反复横跳!”

在这里插入图片描述

2.5 查看文件具体的修改信息
1.我们现在再修改一下第三个版本的 readme.txt
2.然后使用以下指令查看修改信息
git diff # 查看文件修改的具体内容

在这里插入图片描述

四、远程仓库

	OK,前三节我们把本地仓库玩了一下,浅显了解了一下仓库管理员的基本工作和仓库管理方式;
	
	接下来咱们就玩点更好玩的!让我们的本地仓库跟某一个远程 Git 仓库通信,能互传文件!
	
	当然,至于底层是怎么实现通信的,那就是计算机网络和通信原理的事了,

	我们只需要知道在应用层怎么操作就 OK! 走起!
1.远程仓库简介:
	远程仓库,诸如 github、Gitee(码云)之类的网站,给我们提供了一个远程代码管理的平台;

	让我们可以将代码上传到远程仓库,也可以从远程仓库抓取代码....

	这就能让多人协同开发同一个项目,优化代码管理,提高开发效率...

	若是开源网站,那更是能让所有技术人员共同交流、相互学习、相互提升...
	
	有句话说得好,技术最好的发展方式就是开源,一个人闭门造车的成效是很低的!
2.注册一个远程仓库的账号
这个不用写教程了吧...注册账号这种事应该都没什么问题!

可以注册一个 GitHub 账号,要是进不去就注册码云账号吧;

我接下来的操作都是以码云为例,GitHub上也是一毛一样的操作!

五、本地仓库和远程仓库的数据通信

1.创建一个自己的远程仓库

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.关联远程仓库
有了远程仓库之后,我们可以通过下面指令关联我们的远程仓库
git add .
git commit -m "首次上传前的最后一次提交"
git remote add origin 远程仓库地址 # 本地仓库关联远程仓库
git remote -v # 查看当前关联的远程仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.实现本地仓库和远程仓库的通信
1.我们虽然关联了仓库,但现在还不能通信;
2.因为我们需要把远程仓库和本地仓库配对,也就是需要一个接头暗号!
3.否则你们之间的通信就是不安全的,别人随时能给你拦截了!
4.暗号:非对称加密,本地有一个秘钥加密,远程需要一个公钥解密,才能实现安全通信!
ssh-keygen -t rsa -C "邮箱账号" # 在本地生成一对秘钥 加密和解密的

一路按 Enter 键就 OK

在这里插入图片描述
此时,我们会在 C 盘/用户/你的用户名/ 下面看到一个 .ssh 文件 是个隐藏文件,可以设置可见!

在这里插入图片描述
然后,在 .ssh 文件 内会有两个文件,也可能三个!
在这里插入图片描述
然后,把 id_rsa.pub 文件内的全部内容复制到 远程仓库的 SSH 公钥里去!

在这里插入图片描述
在这里插入图片描述

4.拉取或者上传项目
OK,现在我们已经把本地和远程建立了安全通信通道了,可以开始数据交互了!
git push origin master # 把本地项目推送到远程 master 分支上

执行命令之后,系统会问你是不是要关联? 输入yes
然后 .ssh 文件夹里面会多一个 .hosts 的关联文件,不要乱动它!!!

但是,这时候坑就来了! 会报错!个人觉得这是个很有意思的报错,所以重点拿来分析一下!

在这里插入图片描述
在这里插入图片描述

分析一下原因:
	1.报错原因:远程仓库拒绝了你的首次推送!
	2.因为远程仓库有几个文件,而本地仓库没有!如果推送上去,会把远程文件覆盖!
	3.所以远程仓库拒绝了!文件有冲突!
解决方法:
	先把远程仓库的文件拿到本地,然后再一起传回去!

在这里插入图片描述

git pull origin master # 从远程分支拉取项目

在这里插入图片描述

然而…还是不行! 它不让你拿!原因是:你之前没来过,我没见过你,所以我不给你拿!😒

什么意思? 就好像:你第一次去找工作,人家说你没有工作经验,所以不要你!

可是我不参加工作,哪来的工作经验?🤨🤨 这个拒绝的理由蛮离谱的!
不要方,还是那句话!活用百度!

git pull origin master --allow-unrelated-histories # 用这一串魔法给它强行拿过来!

相当于开了个许可证,允许没来过的人拿东西!

在这里插入图片描述

OK, 到这,我们的仓库就没有文件冲突了!继续执行 git push origin master 就能把我们的项目上传到远程仓库了!

刷新页面,就能看到我们上传的文件了,甚至能看答所有的提交信息!

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.克隆项目
读书人的事,怎么能叫抄呢?😂😂 克隆这个词用的很好,我们在开源网站上看别人的代码,

感觉很不错,借鉴一下,怎么弄? 克隆!
git clone 仓库 SSH 地址

这样就能把别人的代码 copy 到你本地了! 当然,你只有拿的权限,没有上传的权限!

在这里插入图片描述
在这里插入图片描述

六、分支管理

1.什么是分支?
	简单说就是,在 master 主分支上,新建几个分支 a, b, c...
	然后 可以同时在这些分支上进行不同的开发,最后再合并到 主分支上;
	而且各分支之间相互独立,使得开发效率大大提升!
2.关于分支,我们现在需要知道掌握什么?
分支管理也是一门学问,有很多内容,对于新手来说,只需要知道:
1.创建分支
2.查看当前分支
3.切换分支
4.删除分支
5.简单的合并
6.简单的冲突处理
3.开始尝试吧
git branch -a # 查看当前所有分支

在这里插入图片描述

git branch 分支名 # 新建分支

在这里插入图片描述

git checkout 分支名 # 切换到指定分支

在这里插入图片描述

git checkout -b 分支名 # 新建并切换到指定分支

在这里插入图片描述

到这,我们学会了查看、新建和切换分支,接下来着重讲一下分支合并以及代码冲突的问题:

git checkout a # 切换到 分支 a
git checkout -b b # 在 a 分支新建并切换到 分支 b
然后 b 分支完成了一些开发
git checkout a # 切回到 分支 a
git merge b # 把 分支 b 合并到 分支 a  
业务场景:
	1.我们刚才新建了一个 dev 分支 和 一个 cat 分支;
	2.cat 分支是建立在 dev 上的,所以它的 readme.txt 文件 和 dev 分支一模一样;
	3.现在我们切换到 cat 分支,在  readme.txt 文件内再加一行!假装我在 cat 分支上开发了新功能!
	4.把 cat 合并到 dev 分支,也就会把新功能也添加到 dev 分支上的 readme.txt 里面!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

这就是最基本的分支合并…接下来说说合并过程中的常见问题,代码冲突!

业务场景:
	1. 军同学在 dev  上新建 一个 jun 分支
	2. smiling girl  在 dev 上新建一个 smiling 分支
	3. 现在 军 同学 在 jun dev 上改了 最后一行
	4. smiling girl 也在 smiling 分支上 改了最后一行
	5. 两人改了同一个地方,同时提交了,然后都要合并到 dev 分支上;
	6. 这时候可能会出现冲突...两人都改一个地方...改的还不一样...我该用谁的呢?

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在,小规模代码冲突的解决也OK了…其实还是手动解决…
当遇到一些复杂的冲突的时候,可能就需要依赖更高级的工具了…

最后,把多余的分支删除
git branch -d 分支名 # 删除指定分支

在这里插入图片描述

七、远程分支同步

这个不多说,就是把本地的分支同步推送到远程分支去,
让远程和本地的仓库能保持一致!
具体操作如下,就是一个 push 操作
git push origin 本地分支名:远程分支名 # 分支同步操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
你以为就结束了?等等,小红我又出来了!😊😊

刚刚所说的分支合并,是建立在你对仓库有直接管理权限的基础之上!

换句话说,如果你加入了别人的仓库,想要把自己的分支合并到他的主分支上,
那命令行合并是没有权限的!那咋办?

我们可以先把我们的分支同步到远程仓库,然后在仓库通过 Pull Request 来发起
合并请求,等管理员审核同意之后,才可以合并!

下面就演示一下,把刚刚同步上去的 dev 分支,通过 Pull Request 请求合并:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

好了,到此,相信你已经掌握了 Git 常规操作了…如果想玩的更深,更花…请参阅更多资料…

八、标签管理

前七节够用了,这一节就是几个标签管理,刚开始接触 Git 应该是用不到,了解一下即可;
1.为什么要用标签管理?
1.每一个版本都会有一个很长的 哈希值,也就是版本号;

2.如果提交、回滚的版本很多很多,我们就没法用版本号来管理版本了...这么长 ,谁记得住...

3.如果给每一个版本改个好记的小名呢?是不是方便多了...比如 v1.0版本,v1.1版本....

4.所以,标签的作用就在于给版本号起别名,优化管理!
2.怎么玩呢?
git tag v2.0 # 给当前版本加一个别名 v1.0 版
git tag v1.5 历史版本号  # 给历史任意版本加一个别名
git show v2.0 # 查看某个版本的提交信息
git tag -a v0.9 版本号 -m "版本描述信息" :给指定版本添加一些描述信息 # 甚至可以给历史版本再加点描述
git show v0.9 # 就能看到刚刚 设置的那个版本 干了些什么事了

使用 tag 是不是比版本号更清晰了...

git tag -d v1.5 # 删除指定版本的标签
先用 git log 看一下各个版本 看到一对很长的版本号

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后两个指令:
git log --graph # 将分支信息图形化 只是美化了一下 log 输出样式,除此之外似乎没啥用...就是为了好看
git remote rm origin # 清除与远程仓库的关联

在这里插入图片描述
在这里插入图片描述

九、小结:

这几节内容虽然看起来篇幅很多,很吓人,但其实内容并不算很多...

git 指令,多敲一敲,多玩一玩也就熟悉了....

目前而言:最最常用的几个指令貌似是:
git status
git add .
git commit -m "🤣"
git push origin 😎
git pull origin ✌️
git clone 😀😆🤩😛😜😝🤪😫🤤
git branch 👍
git branch -a
git checkout 🤡
git checkout -b 😱
附录:如果我们加入了某个仓库,怎么参与到其中某个分支的开发呢?(其实就是怎么交作业)
下面全是截图...实测成功!当然,方式很多,可以pull、clone、各种命令搭配都行....

亦或者,直接用VScode内置的 git 按键式操作都行...我下面演示的是我自己常用的方式,

这样我每次提交完作业我甚至可把本地文件都删了...反正随时可以新建个空文件夹跟远程仓库同步.... 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

好了,本次的教程就到此为止了!

篇幅较大,可能存在些许错别字,或者表述不清晰的情况,

亦或者有某个点说明不正确的情况,还请批评指正!

如果能对各位有所帮助,那是十分荣幸!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值