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 虽然好,在国外的使用率也很高,但毕竟是国外的。在网速上效率还是比较低,经常会出现访问页面变得很慢,下载项目很慢的情况,于是国内慢慢发展起了一个类似 GitHubGit 开源平台 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
在这里插入图片描述

3.   .gitignore 文件代码
# Created by .ignore support plugin (hsz.mobi)

# Operating System Files

*.DS_Store
Thumbs.db
*.sw?
.#*
*#
*~
*.sublime-*

# Build Artifacts

.gradle/
build/
target/
bin/
dependency-reduced-pom.xml

# Eclipse Project Files

.classpath
.project
.settings/

# IntelliJ IDEA Files

*.iml
*.ipr
*.iws
*.idea

这一步的意义是为了避免项目中有些本地环境特有的文件被传入到远程仓库,这些文件每个人的电脑都有可能不一致,如果提交到远程仓库,可能会导致出现频繁冲突的问题
在这里插入图片描述

步骤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 分支不一致,发生冲突

到此冲突就解决完成了,理一下冲突出现的原因

由于本地文件和远程文件不一致导致的冲突出现,这个不一致又可能会分为这几种情况:

  1. 修改本地文件前,远程已经与本地不一致了
  2. 修改本地文件时,文件还是一致的,修改的中途或修改后远程被修改了

对于第一种情况还是比较好处理的,修改前先 pull 一下,只要保证修改前本地与远程一致即可,但第二种情况就没办法了,这种情况是避免不了的,公司里面之所以要定义 git 管理规范,就是为了避免这样的情况出现,所以尽量做到自己要修改其他人也可能修改的文件之前,先确认一下有没有人会改,没有的话自己再去改,只要把两个人的修改操作错开,就可以避免冲突问题了,当然这只是理想情况,因此解决冲突的能力还是一定要会的

总结:完成一个小功能,确定没有问题就提交,有事没事更新一下可以最大程度的降低冲突的可能,关键还是要练好解决冲突的能力,即使冲突出现了,也要能够轻松解决


五、团队开发注意事项

1. 注意事项

  1. 组员每次开发,都先 push 到自己的远程分支
  2. 每次对 master 分支做合并或推送之前,原地备份代码
  3. 确保自己分支的代码与 master 分支都没有错误以后,将本地 master 推送到远程
  4. 开发前,先切换到 master 分支,更新代码,确保是最新版本,如果有更新下来内容,同样先对整个项目进行备份,再切换到自己的分支,然后将 master 合并到自己的分支上
  5. 除了将代码提交到自己的分支以外,都必须再将自己的代码合并到master
  6. 再次强调,每次合并或推送前,都先对项目进行备份,避免操作不熟练导致出错后代码丢失

在这里插入图片描述

2. 远程仓库开发步骤

【1】第一次开发先把 git 上的项目克隆到开发工具中,以后每次开发之前先把远程仓库的代码拉下来,更新你的本地仓库;

【2】每个人在自己的分支上进行开发

【3】每次开发结束后必须先在自己的分支上 commit 提交之后才能进行合并操作;

【4】在将自己分支上的代码合并到本地 master 之前,先更新一次本地 master,确保本地 master 与远程 master 一致

【5】如果更新本地 master 或者将自己代码合并到本地 master 出现冲突先解决冲突再操作

【6】切换到 master 主分支,然后合并自己的分支

【7】把 master 主分支推送到远程仓库之前,我们先 commit 检查一下是否有未提交的代码;

【8】推送到远程仓库

总结

上面就是 Git 在 IDEA 中的使用了,代码仅供参考,欢迎讨论交流。

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
切换分支并上代码到远程分支有多种方法。以下是其两种常用的方法: 方法一:使用Cherry-Pick 1. 首先,确保你已经在master分支上测试了代码,无误后将其提交至本地master分支。 2. 接下来,切换到目标分支,比如开发分支,使用命令:git checkout 开发分支名称。 3. 然后,使用git cherry-pick命令将master分支上的代码提交应用到开发分支,例如:git cherry-pick commit-hash。 4. 最后,将本地开发分支的修改提交到远程分支,使用命令:git push origin 开发分支名称。 方法二:使用合并(Merge)操作 1. 确保你已经在master分支上测试了代码,无误后将其提交至本地master分支。 2. 切换到目标分支,比如开发分支,使用命令:git checkout 开发分支名称。 3. 运行合并命令,将master分支上的代码合并到开发分支,例如:git merge master。 4. 最后,将本地开发分支的修改提交到远程分支,使用命令:git push origin 开发分支名称。 这些方法都是根据具体情况来选择的,你可以根据你的需求选择其一种来切换分支并上代码。记得在提交代码之前要确保代码在目标分支上经过了测试,以避免对联合开发产生不必要的影响。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【IntelliJ IDEA】在idea上操作 git分支合并【如何将远程swagger分支 合并到 远程 master分支上】【如何切换 ...](https://blog.csdn.net/weixin_34133829/article/details/86131615)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [IDEA切换分支同步代码的方法---Git篇](https://blog.csdn.net/weixin_46934791/article/details/130366756)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值