Git(代码版本控制系统)

目录

一、介绍

二、安装下载

三、Git操作入门

(一)Git基本工作流程

1.了解本地仓库

2.Git常用命令

3.Git常用命令小试牛刀

四、Git版本管理

(一)历史版本切换

1.命令

2.小试牛刀

(二)分支管理

1.介绍

2.分支工作流程

②命令

3.小试牛刀

五、远程仓库

(一)工作流程

(二)远程仓库平台介绍

1.GitHub

2.码云

(三)安装和配置第一个远程仓库(GitHub)

(四)推送到远程仓库(先有本地仓库)

1.命令

2.小试牛刀

(五)克隆拉取(先有远程仓库)

1.命令

2.小试牛刀

(六)代码冲突

1.冲突情况

2.解决方法

六、IDEA集成Git

(一)创建本地仓库,提交代码

1.idea集成Git

2.创建本地仓库

3.提交代码

(二)实现版本切换

1.会丢失1.2版本以上的所有版本

2.不会丢失任何版本

(三)在IDEA中操作远程仓库

1.推送项目文件到远程仓库

2.克隆远程仓库的项目代码到IDEA

七、GitHub使用的小知识点

(一)如何删除GitHub仓库的文件(GitHub只能删除仓库,不能删除仓库中的文件)如何删除GitHub仓库的文件(GitHub只能删除仓库,不能删除仓库中的文件))

(二)清空GitHub仓库的文件后,想将本地的文件推送到GitHub仓库(要先在本地拉取远程仓库文件后才能推送)

1.所遇到的问题

2.解决方法


一、介绍

SVN:集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所以要首先从中央服务器下载最新的版本,然后开发,开发完后需要把自己开发的代码提交到中央服务器。

Git: 是一种分布式版本控制系统,分为本地仓库和远程仓库,每个客户端都;保存了完整的历史记录。

二、安装下载

可在CSDN或哔哩哔哩等网站搜索安装下载教程。操作较简单,博主已经按照成功。

三、Git操作入门

(一)Git基本工作流程

1.了解本地仓库

工作目录:代码的存放位置

暂存区:代码提交到仓库之前的临时存储空间

本地历史仓库:存放不同版本的代码

2.Git常用命令

命令 作用
git init 初始化,创建git仓库
git status 查看git状态(文件是否进行了添加、提交操作)
git add + 文件名 添加,将指定文件添加到暂存区
git commit -m '备注' 提交,将暂存区文件提交到历史仓库
git log 查看日志(git提交的历史日志)

3.Git常用命令小试牛刀

①创建一个新的空文件夹打开文件夹 --右键 --点击"Open Git Bash here" (如图1)--**执行"git init"**命令创建本地仓库(如图2)
图1
图2

②创建一个test.txt文件执行"git status"命令查看test.txt文件的状态(如图3)
图3

执行"git add + 文件名"命令 将test.txt文件存入暂存区,执行"git status"命令再次查看test.txt文件的状态(如图4)
图4

执行"git commit -m '备注'"命令 将test.txt文件存入本地历史仓库,执行"git status"命令再次查看test.txt文件的状态(如图5)
图5

执行"git log"命令 查看日志,修改test..txt文件的内容 ,执行添加、提交、查看状态和查看日志的操作 (如图6),"git log"命令的结果中"commit"后面接着的一串黄色符号是该文件的唯一标识号
图6

四、Git版本管理

(一)历史版本切换

1.命令

命令 作用
git reflog 可以查看所有分支的所有操作记录(包括已经被删除的commit记录的操作)
git reset --hard 唯一索引值 回退到索引值所代表的文件内容

2.小试牛刀

执行"git reflog"命令 ,查看修改的次数和版本的唯一索引值(如图7)(红框内的是唯一标识的后7位)
图7

执行"git reset --hard 唯一索引值"命令,回退到第一个版本(如图8),可以查看test.txt文件的内容来确定是否回退到第一个版本。
图8

(二)分支管理

1.介绍

①分支:由每次提交的代码,串成的一条时间线

②使用场景 :周期较长的模块开发;尝试性的模块开发

③意义 :可以把工作从开发主线上分离开,以免影响开发主线

2.分支工作流程

①指针:Master--代表主线Head--代表当前所使用的分支(路线选择就改变Head指针所指线路)

②命令
命令 作用
git branch 查看分支
git branch 分支名 创建分支
git checkout 分支名 切换分支
ls 列出该分支下的所有文件
git --help 列出所有git的命令
git branch 查看分支列表
git merge 分支名 合并分支命令
git branch -d 分支名 删除分支

3.小试牛刀

执行"git branch 分支名"命令 ,建立一个新的分支,执行"git checkout 分支名"命令,切换到新建的分支(如图9)

②查看是否正确切换分支的两种方法(如图9)
图9

③在文件夹下新建一个新文件test2.txt执行添加、提交、和查看状态的操作执行"ls"命令 查看该分支下的文件(如图10),可以发现在div这个分支下,"ls"命令结果有两个文件(包含了主线的文件)
图10

执行"git checkout 分支名"命令 切换回主线"Master"下,执行"ls"命令 查看该分支下的文件(如图11),可以发现只有一个主线内的文件,并且文件夹内只显示一个主线内的文件
图11

在"Master"分支下执行"git merge 分支名"命令 将"div"这个分支合并到"Master"分支下(如图12),执行"ls"命令 查看"Master"分支下的文件,可以发现有两个文件,已经完成合并
图12

执行"git branch -d 分支名"命令 删除多余的"div"分支,执行"git branch"命令 查看现在存在的分支(如图13),可以发现只剩下"Master"一个分支了
图13

五、远程仓库

(一)工作流程

(二)远程仓库平台介绍

1.GitHub

域名:https://github.com

介绍:GitHub是全球最大的开源项目托管平台

2.码云

域名:https://gitee.com

介绍:码云是全国最大的开源项目托管平台

(三)安装和配置第一个远程仓库(GitHub)

可查看下面链接的博文安装配置

【2025版】最新GitHub新手用法详解(适合新手入门)零基础入门到精通,收藏这篇就够了_github使用详解https://blog.csdn.net/bdfcfff77fa/article/details/145791820?fromshare=blogdetail&sharetype=blogdetail&sharerId=145791820&sharerefer=PC&sharesource=2401_88065518&sharefrom=from_link

(四)推送到远程仓库(先有本地仓库)

1.命令

命令 作用
git remote add 远程名称 远程仓库URL 为远程仓库的URL自定义仓库名称
git push -u 仓库名称 分支名 推送

2.小试牛刀

执行"git remote add 远程名称 远程仓库URL"命令 自定义仓库名称,执行"git push -u 仓库名称 分支名"命令 推送本地文件或文件夹到远程仓库,执行"git log"命令可以查看推送的文件(如图14)

黄色框内容: 第一次推送需要**先完成身份验证,**Git 会弹出一个浏览器窗口或直接在终端提示你输入

绿色框内容: 因为网络问题,推送失败。在身份验证的那个浏览器中成功打开GitHub就能解决

**红色框内容:**成功推送的信息
图14

(五)克隆拉取(先有远程仓库)

1.命令

命令 作用
git clone 仓库地址 将远程仓库的代码克隆到本地仓库
git pull 远程仓库名 分支名 项目拉取更新

2.小试牛刀

①新建一个新文件夹打开文件夹 --右键 --点击"Open Git Bash here",执行"git clone 仓库地址"命令将远程仓库的代码克隆到本地仓库(如图15)
图15

打开克隆的文件夹, 创建新文件夹/文件右键 --点击"Open Git Bash here"添加、提交 到本地仓库,推送到远程仓库(如图16)

黄色框内容: Git 无法找到或访问该远程仓库。我们每一次推送都要执行"git remote add 远程名称 远程仓库URL"命令为远程仓库的URL自定义仓库名称。

**红色框内容:**推送成功。
图16

③打开原本的文件夹执行"git pull 远程仓库名 分支名"命令拉取更新项目(如图17)
图17

(六)代码冲突

1.冲突情况

即多人拉取同一份代码后修改,第一个人修改并推送到远程仓库后,第二个人仍使用之前的拉取的代码修改并推送,此时第一个人和第二个人推送的文件会发生冲突。(远程仓库会阻止第二个人提交,并报错)

2.解决方法

执行"git pull 远程仓库名 分支名"命令拉取最新的文件

执行"cat 文件名"命令 查看冲突部分(<<<<<<<和>>>>>>>中间的内容是冲突部分)(如图17),修改、保存,即可解决冲突
图17

③再次添加、提交到本地仓库,推送到远程仓库

六、IDEA集成Git

(一)创建本地仓库,提交代码

1.idea集成Git

idea打开一个项目点击"file"--"settings"--左侧栏"Version Control"--"Git" ,此时idea会自动检测到git.exe,点击"Text" 后下方出现版本号即git能正常运行,点击"OK"

2.创建本地仓库

点击File那一栏的"VCS"--"Create Git Repository" ,选择要管理的项目,点击"OK" ,此时顶栏左侧会出现"master"这个工具

3.提交代码

点击"master"--"commit" ,在黄色框1中选择要提交的代码文件,黄色框2中写上代码备注,点击"commit"

完成提交后会出现下图的信息

点击左下角最后的图标即可查看该项目的日志

(二)实现版本切换

当我们有多个版本时,想从1.4版本回退到1.2版本,有两种方法

1.会丢失1.2版本以上的所有版本

①在1.2版本上右键点击"Reset Current Branch to Here..." ,在弹出的对话框中直接点击"Reset"

②此时会发现,1.4版本中修改的代码还是存在,并且1.2版本以上的版本已经丢失,无法再次回退到1.3或1.4版本,想要还原会1.2版本的代码需要按下图步骤实现

2.不会丢失任何版本

①在1.2版本上右键点击"Revert Commit",会弹出对话框说代码冲突(如下图)

  • 接受您的更改:2号黄色框,保留当前分支的代码,丢弃被还原提交的更改。
  • 接受他们的更改:3号黄色,框接受被还原提交的原始代码,覆盖当前分支的代码。
  • 合并 (M)...:4号黄色框,手动合并代码(推荐)。或者双击1号黄色框

②推荐点击"Merge..." ,之后会弹出当前版本、想要还原到的版本和服务器上原本版本的代码对比,按下图点击❌号 修改代码冲突,最后**点击"Apply"**应用

③点击"Apply"应用后,会弹出提交版本的对话框,可以修改一些备注后直接点击"Commit"提交此次还原的版本

④此时我们可以看到,所有的版本都在,代码都自动还原了并多了一个还原之后的版本

(三)在IDEA中操作远程仓库

1.推送项目文件到远程仓库

①**点击"Git"--"Push"**后会弹出对话框

填写远程仓库名和URL地址,点击"OK"

③选择好文件后**点击"Push"**即可

2.克隆远程仓库的项目代码到IDEA

①关闭IDEA中的项目,点击右上角的"Get from VCS"

②在弹出的对话框中点击"Repository URL"填写右侧的远程仓库URL信息和Directory目录地址,点击"Clone"即可

七、GitHub使用的小知识点

(一)如何删除GitHub仓库的文件(GitHub只能删除仓库,不能删除仓库中的文件)

git如何删除github上的文件,亲测有效https://xat-suda.blog.csdn.net/article/details/127810043?fromshare=blogdetail&sharetype=blogdetail&sharerId=127810043&sharerefer=PC&sharesource=2401_88065518&sharefrom=from_link

(二)清空GitHub仓库的文件后,想将本地的文件推送到GitHub仓库(要先在本地拉取远程仓库文件后才能推送)

1.所遇到的问题

①按(一)清空GitHub仓库的文件后,如果直接推送 本地文件到远程仓库,会报代码冲突错误,并且如果想修改冲突的代码,此时远程仓库又没文件,无法解决冲突代码

②如果在idea中先拉取再推送 ,第一步的拉取就无法进行,因为远程仓库此时没有文件,idea无法识别有效文件拉取

2.解决方法

①按(一)清空GitHub仓库的文件后,在想推送的项目文件夹下右键 点击**"Open Git Bash here"**

②在弹出的对话框中,执行新建本地仓库<git init>拉取远程仓库的内容<git pull 远程仓库名 分支名>

③成功拉取后,就可以在对话框或者idea中推送项目

相关推荐
北风toto2 小时前
java进制转换方法
java·开发语言·python
2301_792674862 小时前
java学习day27(算法)
java·学习·算法
好家伙VCC2 小时前
**基于Colab的高效Python深度学习开发流程:从环境配置到模型部署全流程实战**在当前人工智
java·开发语言·python·深度学习
身如柳絮随风扬2 小时前
Tomcat 体系结构
java·tomcat
jaysee-sjc2 小时前
十七、Java 高级技术入门全解:JUnit、反射、注解、动态代理
java·开发语言·算法·junit·intellij-idea
卓怡学长2 小时前
w1基于springboot高校学生评教系统
java·spring boot·tomcat·maven·intellij-idea
ruan1145142 小时前
关于HashMap--个人学习记录
java·jvm·servlet
lvyuanj2 小时前
Java AI开发实战:Spring AI完全指南
java·人工智能·spring
lifallen2 小时前
如何保证 Kafka 的消息顺序性?
java·大数据·分布式·kafka