IDEA 中 使用 git 进行上传和下载项目
Posted Yan Yang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA 中 使用 git 进行上传和下载项目相关的知识,希望对你有一定的参考价值。
IDEA 中 Git 的使用
一、Git 常用命令
博客地址:Git 常用命令
二、远程仓库
到目前为止,我们已经掌握了如何在Git
仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了。
可是有用过集中式版本控制系统SVN
的童鞋会站出来说,这些功能在SVN
里早就有了,没看出Git
有什么特别的地方。
1. Git的功能之一:远程仓库
Git
是分布式版本控制系统,同一个Git
仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。
找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
可以自己搭建一台运行Git
的服务器,不过现阶段,为了学Git
先搭个服务器绝对是小题大作。好在这个世界上有个叫 GitHub 的神奇的网站,从名字就可以看出,这个网站就是提供Git
仓库托管服务的,所以,只要注册一个GitHub 账号,就可以免费获得Git
远程仓库。
一般我们有可能接触到比较多的几种 Git 远程仓库平台:
GitHub:国外/免费创建公有仓库/私有仓库需要收费,在国际上来说 GitHub 是最活跃的开源社区;
GitLab:国外/免费创建公有仓库/私有仓库需要收费,不过 GitLab 提供了开源版本的企业版本,企业可以部署一套 GitLab 的私服在自己的服务器中;
Gitee:国内/免费创建公有|私有仓库/私有仓库限制成员不得超过5人;
三、Gitee(码云)的使用
GitHub
虽然好,在国外的使用率也很高,但毕竟是国外的。在网速上效率还是比较低,经常会出现访问页面变得很慢,下载项目很慢的情况,于是国内慢慢发展起了一个类似 GitHub
的 Git
开源平台 Gitee。我们之后的开发都使用 Gitee
,一个是他是国内公司 CSDN
的产品,从访问效率上来讲要高很多,另一个是他的中文界面相对于 GitHub
来说对英文不好的同学也相对友好一些。但当你会用 Gitee
之后再想去用 GitHub
,也基本上不会有太大区别。
要使用 Gitee,首先还是需要创建一个账户,然后登录
1. 创建项目
点击右上角头像左边的 + 号,再点击新建仓库即可创建一个仓库
到此,仓库就创建成功啦。一般来说,在刚进公司的时候我们是不会接触创建仓库这种事情的,都是由项目经理或项目组长来进行创建,并且完成基础平台即可,所以我们主要需要知道怎么将项目从 git 仓库中下载到本地,并将其导入到开发工具中使用起来即可
2. 项目初始化(新项目上传)
有的时候,可能我们有一个项目在本地已经创建好了,但是远程还没有仓库,此时我们即需要将本地仓库初始化为 git 仓库,并将其提交到远程仓库中去
首先进入到你需要进行初始化的项目根目录,并按照如下步骤进行操作:
步骤1:设置名字与邮箱
git config --global user.name "码云上的名称"
git config --global user.email "码云上面注册邮箱"
步骤2:进入到需要传送到远程的仓库目录中,初始化本地仓库
git init
步骤3:设置提交忽略文件
配置忽略提交文件 .gitignore
这一步的意义是为了避免项目中有些本地环境特有的文件被传入到远程仓库,这些文件每个人的电脑都有可能不一致,如果提交到远程仓库,可能会导致出现频繁冲突的问题
步骤4:在本地提交代码, 初始化项目
git add .
git commit -m “项目初始化”
步骤5:配置远程仓库路径(注意是自己建仓库路径)
git remote add origin https://gitee.com/leoen/crm.git
步骤6:将本地仓库master分支代码推送到远程仓库
git push -u origin master
完成以上步骤,就基本完成将本地仓库的项目初始化到远程仓库了,访问远程仓库查看
通过项目页面右边的“克隆”按钮,可以得到项目的 url 链接
3. 添加团队成员
创建好项目以后,就可以添加团队成员了,公司的项目通常都是私有仓库,大部分公司会利用类似 Gitlab 的开源平台搭建公司专属的 Git 远程仓库,其配置也基本都差不多,即进入项目管理/设置页面,找到成员管理并邀请成员,为其设置权限等等操作即可
进入管理页面后,找到左侧菜单栏的项目成员管理,点击所有进入所有成员管理页面
四、开发中使用 Git
1. 在 Idea 中克隆远程仓库
通常来说,进入公司以后会发给你一个远程 Git 仓库的账号密码,以及仓库地址,当你得到仓库地址后,即可在开发工具当中将该仓库下载到本地
打开 Idea,在初始化界面克隆远程仓库
以上步骤就可以将项目从远程导入到 Idea 了
在成功导入项目以后,如果 idea 右上角弹出一个提示框,里面有 Add root 的字眼,直接点击即可,代表让 idea 识别这是一个 git 项目。
PS:需要注意的是,在微服务开发或者按模块开发的情况下,因为一个仓库下可能包含多个项目文件,因此建议使用命令 git clone 先将远程仓库克隆到本地,然后再将仓库中的项目一个个导入到 idea
2. 分支切换与合并
在 idea 中,分支的相关操作都在 idea 项目界面的右下角最角落的位置,你可以通过这边去新建本地分支/切换本地或远程分支,创建/删除/合并分支等等操作
在公司里面,分支管理都会存在不同的规范,比如有的公司会按照标准的 dev -> test -> master
这样的分支流程去管理,也有按照不同的版本 dev1.2.0 dev2.1.0
之类的版本划分方式,甚至还会有每个开发人员自己创建一个自己的分支进行开发,最后合并到测试分支的情况。
在学习中,我们暂时先采用创建自己分支的形式,对代码进行管理
分支创建成功后,会自动将之前(master)所在分支的文件同步到新创建的分支上,此时新创建的分支与原来的分支文件内容是一致的,你可以直接从当前分支切换到某一个分支,也可以去选择将哪一个分支合并到当前分支
3. 文件新增编辑和删除
在我们开发过程当中,经常会涉及到进行新增/编辑或删除文件的操作。在 idea 中,使用不同的颜色来标识文件的不同状态。通常情况下,有这样几种颜色:
**棕色:**色代表未被 Git 管理(未添加到暂存区)
**绿色:**代表新增的文件且已经被加入到暂存区了
**蓝色:**代表该文件已经提交到远程且该文件被编辑过了
**黑色:**代表该文件在当前版本与远程是一致的
**灰色:**表示该文件之前被提交到仓库过(不管是远程还是本地),但是他已经被删除了
**红色:**表示该文件的内容出现了冲突
创建新文件时,idea 会弹出一个提示框,确认是否要添加到 git 暂存区
如果此时点击 No 的话,该文件就不会被添加到暂存区,且颜色为棕红色
如果之前点了 No,但是后面又想把他添加到 Git,那么可以右键 -> Git -> Add 进行添加
添加完成后,文件会由棕色变为绿色,此时对一个远程的文件进行了更新,那么他就会从黑色变为蓝色
当你开发完成以后,可以点击工具栏中 ↑ 箭头进行提交操作
你所有的这些新增/编辑/删除操作的文件,只要之前是被 git 管理的,都会被一一记录下来,当你点击提交的时候,即可预览到你所有操作过的文件
在提交前,你需要填写提交信息,注意这里的提交信息一定要表达清楚你这一个提交做了什么事情,并且需要用最精简的语言表达出来
此处我们点击 Commit And Push,即先进行 commit 操作,提交完成后再进行 push,会出现如下界面
点击 push 即可将本次所有的提交推送到远程,提交成功后会在左下角 version control 处弹出如下提示
当你提交成功后,返回远程页面查看,会发现分支数量增加了一个,且分支选择处也可以看到我们本地新增的分支了,这里是因为我们在本地新增了分支,而直接对该分支的内容提交,则表示将该分支以及其中的所有操作提交到远程的这个分支去,若远程没有该分支,git 会自动为你创建一个
4. 分支合并
由于我们上面的操作都是在自己分支或dev分支当面进行的,那么此时的内容并不在master上面,此时我们需要测试完成确定没问题后将自己分支合并到master分支上面去,操作流程如下
从当前分支切换到 master 分支 -> 对 master 分支进行更新,确保与远程 master 保持一致 -> 选中想要合并的分支 -> 点击合并按钮将其合并过来
合并成功后 master 分支上面就拥有开发分支的文件了,但注意,此时的变动任然是只存在本地的,也就是说此时跟远程上的 master 没有任何关系,任然需要在 master 将合并的内容重新 push 到远程的 master,这时合并才算完成
5. 解决冲突
在开发当中,不可避免的会遇到代码冲突的问题,比如张三和李四同时修改 User.java 文件,李四先修改 User.java 并且已经提交,张三不知道李四修改了 User.java 文件,此时没有更新远程的代码,然后直接对 User.java 进行修改并提交,这时候就会出现冲突的问题了
模拟下该情况,首先通过远程编辑以下 User.java 文件,为其新增一个 name 字段
然后回到 idea,编辑 User.java 文件,新增 age 字段
新增完字段后,直接提交变动,并进行 push
此时 push 肯定会失败,因为远程与本地不一致,会出现冲突,弹出以下对话框,我们可以点击 Merge
按钮对冲突文件进行合并
此处为 idea 的冲突文件列表,一个 push/pull 操作可能会出现多个文件发生冲突,每一个文件都会出现再这个列表之中,选择你要合并的冲突文件,并点击 Merge 按钮来合并该文件的冲突
以下是 idea 的冲突解决界面,分为三块显示,最左侧为本地文件(你开发的文件),最右侧为远程更新到的文件(即你同事提交的文件),中间为你想要的结果,冲突解决完成以后,中间的文件内容会是最终的文件内容
解决完冲突以后,直接进行 push 即可把此次合并以及之前的 commit 提交到远程仓库
进行 push 的时候会发现多了一个 Merge 开头的 commit,这就是我们刚刚解决完冲突之后自动提交的内容,此时点击 push 按钮即可将这两个 commit 都提交到远程
可能出现冲突的几个操作:
pull 操作:更新的时候,可能出现本地代码与更新下来的代码不一致的情况,发生冲突
push 操作:与更新操作类似,push 上去的代码原型(修改前的代码)与远程的代码不一致,发生冲突
分支合并:例如 A 分支合并 B 分支的时候,B 分支的代码原型(修改前的代码)与 A 分支不一致,发生冲突
到此冲突就解决完成了,理一下冲突出现的原因
由于本地文件和远程文件不一致导致的冲突出现,这个不一致又可能会分为这几种情况:
- 修改本地文件前,远程已经与本地不一致了
- 修改本地文件时,文件还是一致的,修改的中途或修改后远程被修改了
对于第一种情况还是比较好处理的,修改前先 pull 一下,只要保证修改前本地与远程一致即可,但第二种情况就没办法了,这种情况是避免不了的,公司里面之所以要定义 git 管理规范,就是为了避免这样的情况出现,所以尽量做到自己要修改其他人也可能修改的文件之前,先确认一下有没有人会改,没有的话自己再去改,只要把两个人的修改操作错开,就可以避免冲突问题了,当然这只是理想情况,因此解决冲突的能力还是一定要会的
总结:完成一个小功能,确定没有问题就提交,有事没事更新一下可以最大程度的降低冲突的可能,关键还是要练好解决冲突的能力,即使冲突出现了,也要能够轻松解决
五、团队开发注意事项
1. 注意事项
- 组员每次开发,都先 push 到自己的远程分支
- 每次对 master 分支做合并或推送之前,原地备份代码
- 确保自己分支的代码与 master 分支都没有错误以后,将本地 master 推送到远程
- 开发前,先切换到 master 分支,更新代码,确保是最新版本,如果有更新下来内容,同样先对整个项目进行备份,再切换到自己的分支,然后将 master 合并到自己的分支上
- 除了将代码提交到自己的分支以外,都必须再将自己的代码合并到master
- 再次强调,每次合并或推送前,都先对项目进行备份,避免操作不熟练导致出错后代码丢失
2. 远程仓库开发步骤
【1】第一次开发先把 git 上的项目克隆到开发工具中,以后每次开发之前先把远程仓库的代码拉下来,更新你的本地仓库;
【2】每个人在自己的分支上进行开发;
【3】每次开发结束后必须先在自己的分支上 commit 提交之后才能进行合并操作;
【4】在将自己分支上的代码合并到本地 master 之前,先更新一次本地 master,确保本地 master 与远程 master 一致;
【5】如果更新本地 master 或者将自己代码合并到本地 master 出现冲突,先解决冲突再操作;
【6】切换到 master 主分支,然后合并自己的分支;
【7】把 master 主分支推送到远程仓库之前,我们先 commit 检查一下是否有未提交的代码;
【8】推送到远程仓库
总结
上面就是 Git 在 IDEA 中的使用了,代码仅供参考,欢迎讨论交流。
以上是关于IDEA 中 使用 git 进行上传和下载项目的主要内容,如果未能解决你的问题,请参考以下文章