何小豆儿在此 发表于 4 天前

JavaEE从入门到起飞(八) ~ Git

git

概括

Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等)。
学了git能干什么?

代码回溯

查察历史提交记录并规复到之前的某个状态。这在发现错误或必要查察特定版本时非常有用。和Ctrl+Z的区别在于git就算一个月前的代码也可以回退。
   查察提交历史: git log 这个命令会列出全部提交记录,包括提交哈希、作者、日期以及提交信息。
查察精简版的历史:git reflog 这种方便阅读。
查察某次提交的内容: git show \<commit-hash> 利用 <commit-hash> 更换为具体的提交哈希值。
回到某个提交状态: git checkout \<commit-hash> 这会将工作目次规复到指定提交的状态。
https://i-blog.csdnimg.cn/direct/6c568a2947084255949419a76f8f16cd.png
版本切换

版本切换通常指的是在差异的分支之间切换,以便于在差异的功能开发、修复bug或维护版本之间进行切换。
   查察当前分支: git branch 当前分支会用 * 标记。
创建分支:git branch 分支名称
切换分支:git checkout 分支名称
创建新分支并切换: git checkout -b 分支名称
归并分支: git merge 分支名称 切换到目标分支,然后归并另一个分支
推送至长途分支:git push 长途堆栈名称 本地分支的名称
删除分支:git branch -d 分支名称
多人协作

多人协作是指多个开发者共同在一个项目上工作,每个开发者有自己的本地堆栈,并且这些堆栈都与长途堆栈同步。
   拉取长途堆栈的变化: git pull origin master 这个命令的意思是将本地的 master 分支推送到长途堆栈 origin 中对应的 master 分支。
推送本地变化到长途堆栈: git push origin master
解决冲突: 在归并分支时大概会碰到冲突,必要手动解决冲突后再提交。
利用分支: 每个人在自己的分支上工作,完成后归并到主分支。
长途备份

长途备份是指将代码推送到长途服务器或代码托管平台,以防止数据丢失。
   添加长途堆栈: git remote add origin 长途堆栈的 URL。
推送代码到长途堆栈: git push -u origin master -u 参数用于设置长途跟踪分支。
本地电脑生成秘钥对

Git操作流程

创建本地堆栈

本地堆栈可以通过两种方式获取,图形化界面创建
https://i-blog.csdnimg.cn/direct/275cb4ff1d814792816bb68c3041a2f2.png
提交文件

提交操作的作用是将文件放到本地堆栈中进行管理
https://i-blog.csdnimg.cn/direct/7931a3c22e0248588e7952a0c679badc.png
修改文件

https://i-blog.csdnimg.cn/direct/fb48601db51e4d9ea2de3fbdaca85f7b.png
历史版本

https://i-blog.csdnimg.cn/direct/37aae2fa47af48288be7de351f016a50.png
删除文件

删除文件必要做两件事: 1) 删除文件 2) 提交更新到本地堆栈
https://i-blog.csdnimg.cn/direct/a9a2d996943c4a57acbb3a9de9226536.png
命令行操作流程

   除了利用小乌龟进行操作外,还可以直接利用命令完成上面的操作
* 创建本地仓库
                git init

* 查看本地库状态
                git status
               
* 添加到暂存区
                git add 文件名
               
* 提交到本地仓库
                git commit -m '日志信息' 文件名
               
* 查看历史记录
                git reflog精简
                git log   详细
               
* 版本穿梭
                git reset --hard 版本号
               
* 删除工作区文件
                git rm 文件名
               
                git commit -m '日志'
忽略文件

在特定情况下,我们不渴望自己的某些文件被git管理,这时间,我们就要设置git忽略掉此文件
https://i-blog.csdnimg.cn/direct/ebb26578bef44ee881e3d24184150a4b.png
工作流程

https://i-blog.csdnimg.cn/direct/d6d5235bd03d48d4896c3bdbcb7f2f64.png
一样寻常工作流程如下:

[*]得到本地堆栈(手动本地创建或者从长途堆栈中克隆)
[*]从本地堆栈中实验checkout,检出项目到工作目次(自动实验)
[*]在工作目次中编写代码,然后实验add命令将代码添加到暂存区(其实就是将代码添加到git管理)
[*]实验commit代码到本地堆栈,本地堆栈中会生存代码各个历史版本
[*]后面可以对代码进行修改、删除,当必要生存到本地堆栈时,实验commit即可(无需再实验add)
[*]如果必要跟团队其他成员共享文件,可以将代码push(推送)到长途堆栈,也可以通过pull(拉取)得到长途堆栈中的最新代码
创建长途堆栈

https://i-blog.csdnimg.cn/direct/766084c68e804008937d91ca377bb46d.png
堆栈连接协议

git堆栈支持两种连接协议:


[*]HTTPS:是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证包管了传输过程的安全性
[*]SSH:安全外壳协议,通过密钥对方式对传输的数据进行加密,实现免密登录
https://i-blog.csdnimg.cn/direct/77330b140bb24937adcc83d7763ddec5.png
复制git的地址(肯定注意:这个地址是SSH的,以git开头,万万不要复制成HTTPS的)
SSH 密钥:生成的密钥对(包括公钥和私钥)常用于 SSH 连接。SSH 密钥可以让你安全地访问长途 Git 堆栈,好比 GitHub、GitLab 或 Bitbucket,而无需每次都输入用户名和密码。你将公钥添加到长途堆栈的账户设置中,而私钥则生存在本地计算机上,Git 利用它来进行身份验证。
利用cmd命令启动dos窗口,然后输入ssh-keygen -t rsa命令按回车键,然后一起回车,生成秘钥对
https://i-blog.csdnimg.cn/direct/aabda52178e24dc69b6915e1d7b0d764.png
   注意两个坑:

[*] 输入ssh-keygen -t rsa回车的时间,提示ssh-keygen不是内部或外部命令,直接把问题放到百度上就有答案
[*] 由于某些同砚电脑用户名是中文的,就有大概出现创建目次失败的问题(如下图),解决方案参考补充2--秘钥创建问题的解决方案视频
将公钥复制到gitee中

https://i-blog.csdnimg.cn/direct/4d8a5b7717ca451cb8ee35308e393744.pnghttps://i-blog.csdnimg.cn/direct/b963cba8a98e4ac88459c42b617a876c.png
配置小乌龟开启ssh认证协议

https://i-blog.csdnimg.cn/direct/edc6ae1c87dc4bf7822aeb38a8598303.png
操作长途堆栈

克隆长途堆栈到本地

在本地新建一个zhang文件夹,然后在文件夹中右键点击Git克隆...,填写URL(从网页中复制),点击确定
https://i-blog.csdnimg.cn/direct/eab7fd182b804b54b77bdaa3c13b89ad.png
在本地堆栈中添加文件

在文件夹中新建一个hello.txt文件,并实验add–commit操作,将其添加到本地堆栈
将文件推送到长途堆栈

https://i-blog.csdnimg.cn/direct/52e72b438bab4153847eb89257de1e76.png
长途堆栈中查察文件

https://i-blog.csdnimg.cn/direct/48950187eddc4580960bf6c8b14d071d.png
命令操作

* 克隆远程仓库到本地
                git clone远程仓库地址
               
* 拉取远程仓库最新代码合并到本地仓库
                git pull 远程仓库名称 本地分支名
               
* 将本地仓库代码推送到远程仓库
                git push 远程仓库名称 远程分支名称
Idea操作Git

基础操作

在idea中配置Git

https://i-blog.csdnimg.cn/direct/a5aba95288f24f18884d2efb0013bbed.png
利用idea打开要管理的项目

https://i-blog.csdnimg.cn/direct/ad8d15ac4fac47fdbcead572259172e4.png
在idea中配置git管理

https://i-blog.csdnimg.cn/direct/92a21e31f90840a8ab70b64209411d12.png
在idea中配置忽略文件

安装文件忽略插件,重启idea
https://i-blog.csdnimg.cn/direct/f8652f2049dd42338d42ffde14e2efe6.png
   表明:
​ .idea/ 忽略.idea文件夹
​ *.iml 忽略全部的.iml文件
​ out/ 忽略out文件夹
​ target/ 忽略target文件夹
提交接码到本地堆栈

https://i-blog.csdnimg.cn/direct/f33673aaaa564691ad1b6a317a75cb6c.png
创建长途堆栈

https://i-blog.csdnimg.cn/direct/55d67ca4a166464c9ae64c9e6dd28426.png
推送代码到长途堆栈

https://i-blog.csdnimg.cn/direct/2a73016f323a48289597a02a01077d55.png
代码冲突

代码冲突,表示两个人同时改变同一个文件的同一行。git开发,不修改的内容,不会覆盖。
模拟冲突

https://i-blog.csdnimg.cn/direct/838e9b5cc85f4e659138f51facee4f61.png
1)在本地新建一个文件夹,然后将代码克隆一份下来,然后修改下pom.xml
2)通过小乌龟现将本地other文件夹的代码提交到长途堆栈
3)在idea中也对pom.xml文件进行修改操作
4)再通过idea将idea中的代码推送到长途堆栈,再推送的过程中,就会出现下面的错误
https://i-blog.csdnimg.cn/direct/1e5187c20b624d5a8becb072d120731a.png
接下来,我们点击Merge开始归并代码(解决冲突)
解决冲突

https://i-blog.csdnimg.cn/direct/33d3e97493fa4cbea7c4264b60caa02c.png
1)在idea中手动归并代码,解决掉冲突
2)将改好代码再次向长途堆栈推送
分支管理(难点)

切分支肯定要先commit在切分支。
分支操作:分支是Git 利用过程中非常重要的概念。利用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。相当于,你本地有多少分支就有多少套隔离的代码。
同一个堆栈可以有多个分支,各个分支相互独立,互不干扰。比方,你们一起开发
https://i-blog.csdnimg.cn/direct/0bc32bb211c74d0cafd51cf345fbf756.png
通过git init 命令创建本地堆栈时默认会创建一个master分支。分支主要用于版本控制。
https://i-blog.csdnimg.cn/direct/3220c340df7c4eae92c4d0288b0d8ea9.png
创建分支

① 创建新分支,名称为hm
https://i-blog.csdnimg.cn/direct/e3406630565e4391acdec5fb64fd2db9.png
② 在hm新分支上开发代码
https://i-blog.csdnimg.cn/direct/e2b911289a4546e385436bda7ee1bcec.png
归并分支

① 在新分支上开发完代码后,进行提交和推送
https://i-blog.csdnimg.cn/direct/ff7de6e100634dc5a770b164258ac604.png
② 切换到master分支
https://i-blog.csdnimg.cn/direct/5e0dd0c297dc4a66b7fab94338399740.png
③ 将hm分支的代码归并到当前分支(注意:此时的当前分支是master)
先拉取到主分支,然后再归并到主分支,如果在推送到主分支中。
https://i-blog.csdnimg.cn/direct/e55c4cf8d00a42949d97b4cf0b37cbb9.png
   顺序: add-------开发----commit到本地----->pull代码(大概出当代码冲突, 必要merge代码)-------->push代码
https://i-blog.csdnimg.cn/direct/2c7244714c05460fbbb8151beead46d1.png
真正开发的过程。

https://i-blog.csdnimg.cn/direct/a6fbc9ce7e124ca697a2afa03ee505bb.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: JavaEE从入门到起飞(八) ~ Git