[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5eNPuzHj-1663922326773)(Pictures/logo.jpg)] everything-is-local
Author:Exchanges
Version:9.0.2
文章目录
- 一、引言
- 二、介绍
- 三、Git安装
- 四、工作区,暂存区,版本库
- 五、基本操作
- 六、远程仓库
- 七、Idea推送项目到Gitee
- 7.1 关联Git
- 7.2 在IDEA安装Gitee插件
- 7.3 登录Gitee
- 7.4 第一种方式,创建项目编写代码,直接分享到Gitee并创建远程仓库
- 7.5 设置Gitee远程仓库名称
- 7.6 推送项目
- 7.7 多人协作时,推送时的注意事项【重点】
- 7.8 推送成功后在Gitee中查看
- 7.9 修改内容(模拟另一个人推送当前代码)
- 7.10 在IDEA中更新代码
- 7.11 在IDEA中更新代码
- 7.12 更新成功
- 7.13 第二种方式,先创建Gitee远程仓库(使用裸库)
- 7.14 在IDEA中创建git仓库
- 7.15 选择要推送的目录
- 7.16 添加到暂存区
- 7.17 添加到本地仓库
- 7.18 编写注释内容,然后提交
- 7.19 修改代码,再次add,再次commit,然后切换版本测试
- 7.20 选择分支
- 7.21 创建分支
- 7.22 命名并切换分支
- 7.23 在分支下编写代码并提交
- 7.24 切换到主线
- 7.25 合并分支
- 7.26 推送到Gitee
- 八、Idea克隆项目以及分支冲突
- 九、多人协同开发
一、引言
在单人开发过程中,需要进行版本管理,以利于开发进度的控制。
在多人开发过程中,不仅需要版本管理,还需要进行多人协同控制。
二、介绍
- Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
- Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
- Git可以使用本地创建仓库与网络仓库,解决了集中管理型版本控制软件存在的一些问题(例如:SVN)。
- 官网:https://git-scm.com/
三、Git安装
3.1 下载Git
下载git |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sajUz9b3-1663922327272)(Pictures/install1.jpg)] |
3.2 安装
安装,除了安装位置外,其他一直下一步即可
安装完成后,在任意的文件目录下,右键都可以开打Git的命令行窗口。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pVj3EFSb-1663922326774)(Pictures\1.png)]
3.3 基本配置
Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识,–global 表示全局属性,所有的git项目都会共用属性。
配置用户名
$ git config --global user.name “yangl7299”
配置邮箱
$ git config --global user.email “729953102@qq.com”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lGudBwHb-1663922326784)(Pictures\2.png)]
此时在C:\Users\Administrator.gitconfig文件可以查看到我们的配置信息。
四、工作区,暂存区,版本库
工作区(Working Directory):电脑上的本地硬盘目录,平时存放项目代码的地方。
暂存区(stage):用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息,一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库(Repository):工作区有个隐藏目录.git,它就是Git的本地仓库。
存储顺序:工作区 -->> 暂存区 -->> 版本库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F3qGR4zq-1663922326785)(Pictures\3.png)]
五、基本操作
git的工作流程:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
使用步骤:(首先设置电脑可以查看隐藏文件)
1.在任意位置创建空文件夹,作为项目目录,例如:在G盘右键创建git_repository文件夹
2.在项目文件夹内右键打开git bash窗口,输入命令: git init
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6gHkYZX8-1663922326786)(Pictures\4.png)]
此时git_repository目录下会生成一个隐藏的 .git 目录。
3.新建一个文件,例如:a.txt
4.输入命令:git add 文件名,此时是将文件添加到暂存区当中
5.输入命令:git status,查看暂存区状态
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3FABnoov-1663922326786)(Pictures\5.png)]
6.如需删除,可以输入命令:git rm --cached 文件名,此时是从暂存区中删除了,工作目录中还会存在该文件,删除之后再次查看,该文件名颜色已经发生变化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ehgU9YHo-1663922326787)(Pictures\6.png)]
7.如需提交文件到本地库,输入命令:git commit ,提交完成后,会提示在文件中写一些备注(可写可不写),如需写可以使用i/a/o编辑文本(和Linux命令一样),然后保存并退出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i79MgTah-1663922326787)(Pictures\7.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3xiCb4or-1663922326788)(Pictures\8.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hdHEP5zT-1663922326788)(Pictures\9.png)]
另一种方式:使用git commit –m “注释内容”, 直接带注释提交
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EUVE9cQN-1663922326788)(Pictures\10.png)]
8.输入命令:git log 查看所有历史记录,输入命令:git log 文件名,查看该文件的历史记录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MsxBQi6c-1663922326788)(Pictures\11.png)]
9.输入命令:git log --pretty=oneline 查看所有文件历史记录简易信息,输入命令:git log --pretty=oneline 文件名 查看该文件历史记录简易信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sWLeA09i-1663922326789)(Pictures\12.png)]
输入命令:git reset --hard HEAD^ ,回退到上一次提交
输入命令:git reset --hard HEAD~n,回退n次操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SvpDjaRl-1663922326789)(Pictures\13.png)]
11.输入命令:git reflog,查看历史记录的版本号,也可使用:git reflog 文件名,查看某个文件的版本号
输入命令: git reset --hard 版本号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TW7OfD4K-1663922326789)(Pictures\14.png)]
12.手动删除工作目录中的文件,然后输入命令:git checkout 文件名,可以恢复工作目录中已经删除的文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bJxjWkQx-1663922326790)(Pictures\15.png)]
13.手动删除工作目录中的文件,然后输入命令:git add 文件名 (此时该命令表示提交当前删除文件的操作)
然后输入命令:git commit -m “删除文件” (此时才是真正删除了该文件,但是此次删除只是这一次操作的版本号没有了,其他的都可以恢复)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z6qeBrG7-1663922326790)(Pictures\16.png)]
恢复文件某个版本,可指定之前的版本号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gQBM7eFO-1663922326790)(Pictures\17.png)]
5.分支相关操作
创建分支
输入命令:git branch <分支名>
输入命令:git branch –v,查看分支
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yEosyj74-1663922326791)(Pictures\18.png)]
切换分支
输入命令:git checkout <分支名>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Rhpnw5D-1663922326791)(Pictures\19.png)]
切换到分支后,在分支下的操作,master(主线)不会有任何变化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IsPhB4fG-1663922326791)(Pictures\20.png)]
此时在工作目录中可以查看到c.txt文件,但是当切换到master时,再去查看工作目录已经没有c.txt文件了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TFLl3I8I-1663922326792)(Pictures\21.png)]
输入命令:git checkout –b <分支名>,将创建分支,切换分支一起完成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p0uNfBgi-1663922326792)(Pictures\22.png)]
合并分支
输入命令:git checkout master,切换到主干
输入命令:git merge <分支名>,合并分支
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YaEd8umL-1663922326792)(Pictures\23.png)]
此时在工作目录中又可以查看到c.txt文件了
冲突问题:当主线和分支合并之后,分支和主线都会有相同的文件,此时在主线中修改该文件内容并提交,在分支中也修改该文件内容并提交,再次合并时就会出现冲突,此时文件中会显示冲突内容,我们需要手动解决再合并了。
六、远程仓库
当多人协同开发时,每人都在自己的本地仓库维护版本。
但很重要的一点是,多人之间需要共享代码、合并代码,此时就需要一个远程仓库。
6.1 远程仓库工作模式
远程仓库工作模式 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v6ZkhSqP-1663922327273)(Pictures/远程仓库.jpg)] |
6.2 远程仓库选型
有很多远程仓库可以选择,比如 github(https://github.com/),码云(https://gitee.com/);
此两种可以注册自己测试使用,但如果是商业项目,需要更多支持需要付费。
公司内部也可以有自己构建的远程仓库
6.3 常用命令
命令 | 描述 |
---|---|
git remote add 标识名(master) 远程地址 | 本地关联远程仓库 |
git push 标识名 master | 将本地仓库内容上传到远程仓库 |
git pull 标识名 master | 从远程仓库下载内容到本地仓库 |
git clone 远程地址 | 将远程仓库复制到本地,并自动形成一个本地仓库 |
6.4 把本地代码推送到远程仓库
1.在码云上创建仓库(裸库,只创建仓库,不创建文件)
2.增加远程地址:git remote add <远端代号> <远程仓库地址>
git remote add origin https://gitee.com/yangl729953102/git-01.git
3.推送到远程库:git push <远端代号> <本地分支名称>
git push origin master
创建裸库,不初始化仓库以及模版等
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K7payC9L-1663922326792)(Pictures\gitee1.png)]
创建完毕
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4lBj33oi-1663922326793)(Pictures\gitee2.png)]
本地创建目录,添加文件到本地仓库,然后推送到远程仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oYBCWF4M-1663922326793)(Pictures\gitee3.png)]
如果输入用户名和密码不成功,需要先去控制面板把之前的密码删除,也有可能是曾经使用过码云,但密码有过改动,再次使用时会提示重新输入密码。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-APEBPUj2-1663922326793)(Pictures\删除密码.png)]
推送成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s48UBwkY-1663922326794)(Pictures\gitee4.png)]
查看结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QPf25zzc-1663922326794)(Pictures\gitee5.png)]
6.5把远程仓库中修改后的代码更新到本地
别人提交代码或手动更新远程仓库中的代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ISkWzOAw-1663922326794)(Pictures\gitee6.png)]
更新到本地:git pull <远端代号> <远端分支名>
git pull origin master
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-370om2zu-1663922326795)(Pictures\gitee7.png)]
6.6 克隆远程仓库
如果仓库已经由别人创建完毕,则可以通过 git clone 将其复制到本地,手动创建目录,在目录执行以下命令
git clone <远端地址> <新项目目录名>
git clone https://github.com/xxxxxxx.git
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-77CBLpfJ-1663922326795)(Pictures\gitee8.png)]
七、Idea推送项目到Gitee
7.1 关联Git
File > Settings 关联过程是自动的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cY1EGCAk-1663922326795)(Pictures\idea1.png)]
7.2 在IDEA安装Gitee插件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J6aseSNf-1663922326796)(Pictures\idea2.png)]
7.3 登录Gitee
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uW2vHwea-1663922326796)(Pictures\idea3.png)]
7.4 第一种方式,创建项目编写代码,直接分享到Gitee并创建远程仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wRmFPmRW-1663922326796)(Pictures\idea4.png)]
7.5 设置Gitee远程仓库名称
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0KCXRGOm-1663922326797)(Pictures\idea5.png)]
7.6 推送项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rpj275Re-1663922326797)(Pictures\idea6.png)]
7.7 多人协作时,推送时的注意事项【重点】
如果是多人协作开发,自己项目中的 .idea 等文件需要忽略掉,只推送自己编写的核心代码,否则整个团队的项目可能会出现问题:
1.第一种方式,选择要推送的目录,但是每次都要选择对应目录,比较麻烦;
2.第二种方式,在IDEA中安装 .ignore 插件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-urtHsiB9-1663922326797)(Pictures\gitignore.png)]
在当前项目目录下,创建并编写 .gitignore 中的内容,指定需要忽略的文件,比如:target目录,*iml 以及.idea等文件
# Compiled class file
*.class
target
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
*.zip
*.tar.gz
*.rar
*.iml
.idea
7.8 推送成功后在Gitee中查看
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nv0bCnVA-1663922326798)(Pictures\idea7.png)]
7.9 修改内容(模拟另一个人推送当前代码)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SIGYRaAS-1663922326798)(Pictures\idea8.png)]
7.10 在IDEA中更新代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aJ1F89kj-1663922326798)(Pictures\idea9.png)]
7.11 在IDEA中更新代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x1rW3LBg-1663922326799)(Pictures\idea10.png)]
7.12 更新成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cvVShH5e-1663922326799)(Pictures\idea11.png)]
7.13 第二种方式,先创建Gitee远程仓库(使用裸库)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HTxw8p0k-1663922326799)(Pictures\idea12.png)]
7.14 在IDEA中创建git仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2cuvu8Ry-1663922326800)(Pictures\idea13.png)]
7.15 选择要推送的目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7LtzMUlc-1663922326800)(Pictures\idea14.png)]
7.16 添加到暂存区
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I4XeW68D-1663922326800)(Pictures\idea15.png)]
7.17 添加到本地仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0B785fDm-1663922326801)(Pictures\idea16.png)]
7.18 编写注释内容,然后提交
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xbkNdyHC-1663922326801)(Pictures\idea17.png)]
7.19 修改代码,再次add,再次commit,然后切换版本测试
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DwK1jde1-1663922326802)(Pictures\idea18.png)]
7.20 选择分支
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MI0kDw5u-1663922326802)(Pictures\idea19.png)]
7.21 创建分支
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cF9q5STz-1663922326803)(Pictures\idea20.png)]
7.22 命名并切换分支
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dKHiwRed-1663922326803)(Pictures\idea21.png)]
7.23 在分支下编写代码并提交
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xCEPfVqn-1663922326804)(Pictures\idea22.png)]
7.24 切换到主线
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uHirzFbl-1663922326804)(Pictures\idea23.png)]
7.25 合并分支
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gx1mSxxy-1663922326804)(Pictures\idea24.png)]
7.26 推送到Gitee
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ffPJFRAk-1663922326804)(Pictures\idea25.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gVMwhIkY-1663922326805)(Pictures\idea26.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7qsFvSiI-1663922326805)(Pictures\idea27.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-efVel8HS-1663922326805)(Pictures\idea28.png)]
八、Idea克隆项目以及分支冲突
8.1 选择从Git中检出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ursz5vnE-1663922326806)(Pictures\idea29.png)]
8.2 选择要克隆的Gitee远程仓库以及存放的目录(提前创建好)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5f2gtIFG-1663922326806)(Pictures\idea30.png)]
8.3 克隆项目成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nCljYYE2-1663922326806)(Pictures\idea31.png)]
8.4 测试冲突
创建dev分支,然后创建一个类,切换到master,然后合并,最后在master和dev中分别对当前类进行修改并提交,然后再合并,则会发生冲突,我们可以选择close,然后手动解决冲突即可!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qwRJiPVg-1663922326807)(Pictures\idea32.png)]
九、多人协同开发
9.1 项目管理员( 项目经理 )
1、由管理员负责创建一个远程库,初始的库中什么也没有,为裸库。库的名称建议和项目同名
2、管理员将本地库上传到远程库
3、将其他开发人员拉入远程库的 开发成员列表中 ,使得其他开发人员可以访问该远程库。
流程如下:
点击添加成员 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x37hsBpR-1663922327274)(Pictures/添加开发成员.jpg)] |
选择直接添加 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uIHzdEof-1663922327274)(Pictures/添加开发成员2.jpg)] |
提交 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uv6LA1Mx-1663922327275)(Pictures/添加开发成员3.jpg)] |
查看已添加的开发成员 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0SHZUFCX-1663922327275)(Pictures/添加开发成员4.jpg)] |
5> master分支设置为 protected分支,只有管理员有权限将代码合并到其中。dev分支设置为 常规分支所有开发人员都可以合并代码
进入分支设置 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ywdSn6dX-1663922327275)(Pictures/保护分支1.jpg)] |
设置保护分支,让master分支不能被随更改 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q2RpcLpU-1663922327276)(Pictures/保护分支2.jpg)] |
9.2 开发人员
1、初始化:在idea中clone 远程库,获得项目,会建立本地库。
2、后续的开发中,都要在dev分支上进行。开发完一个功能并测试通过后就commit 提交到本地的dev分支中,然后 上传(push)到远程dev分支中。
3、需要更新项目内容时,通过 pull 从远程仓库拉取内容。
4、注意:多人协同时,每次在 push 到远程库前,都先做一次pull,一来是把远程最新内容合并到本地,二来是核实本地内容是否和远程内容有冲突。
5、后续的开发,会接到一个个的功能任务,往复操作 2>、3>、4> 而已。
5> master分支设置为 protected分支,只有管理员有权限将代码合并到其中。dev分支设置为 常规分支所有开发人员都可以合并代码
进入分支设置 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3wzXpnsR-1663922327276)(Pictures/保护分支1.jpg)] |
设置保护分支,让master分支不能被随更改 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xe55y4Iz-1663922327277)(Pictures/保护分支2.jpg)] |
9.2 开发人员
1、初始化:在idea中clone 远程库,获得项目,会建立本地库。
2、后续的开发中,都要在dev分支上进行。开发完一个功能并测试通过后就commit 提交到本地的dev分支中,然后 上传(push)到远程dev分支中。
3、需要更新项目内容时,通过 pull 从远程仓库拉取内容。
4、注意:多人协同时,每次在 push 到远程库前,都先做一次pull,一来是把远程最新内容合并到本地,二来是核实本地内容是否和远程内容有冲突。
5、后续的开发,会接到一个个的功能任务,往复操作 2>、3>、4> 而已。