使用IDEA进行git进行协同开发

使用IDEA进行git进行协同开发

步入公司的第一步就是掌握版本控制工具的使用,常见的版本控制工具有两种方式,git常见于一些小的创业公司,项目小人员少,svn使用的公司规模较大,这里介绍git使用的一些场景

假设小组中有两个人,组长,组员

场景一:组长创建项目并提交到远程Git仓库

场景二:组员从远程Git仓库上获取项目源码

场景三:组员修改了部分源码,提交到远程仓库

场景四:组长从远程仓库获取组员的提交

场景五:组员接受了一个新功能的任务,创建了一个分支并在分支上开发

场景六:组员把分支提交到远程Git仓库

场景七:组长获取组员提交的分支

场景八:组长把分支合并到主干

理论基础:

下图是Git与提交有关的三个命令对应的操作,Add命令是把文件从IDE的工作目录添加到本地仓库的stage区,Commit命令把stage区的暂存文件提交到当前分支的仓库,并清空stage区。Push命令把本地仓库的提交同步到远程仓库。

工作区:IDEA工具里面的内容

本地仓库:项目在本地的地址

远程仓库:gitbub地址
使用IDEA进行git进行协同开发_第1张图片

准备工作:

1.创建D://test_master目录作为组长的本地仓库,D://test_dev目录作为组员的本地仓库,这里先创建一个hello的maven工程作为项目
使用IDEA进行git进行协同开发_第2张图片

2.下载git地址为:https://git-scm.com/downloads,默认安装的位置在C:\Program Files\Git\bin\git.exe

3.在IDEA中设置Git,在File–>Setting->Version Control–>Git–>Path to Git executable选择你的git安装后的git.exe文件,然后点击Test,测试是否设置成功:
使用IDEA进行git进行协同开发_第3张图片

4.打开github官网创建仓库helloworld:
使用IDEA进行git进行协同开发_第4张图片

5.设置自己的github账号,配置如下即可

使用IDEA进行git进行协同开发_第5张图片

6.复制自己的远程仓库地址,没有项目的时候不长这个样子,就把类似的地址复制下来即可
使用IDEA进行git进行协同开发_第6张图片

7.配置远程仓库地址
使用IDEA进行git进行协同开发_第7张图片

配置之前记录的github地址:https://github.com/huangxuechao1/helloworld.git 我的是这个
使用IDEA进行git进行协同开发_第8张图片

场景1:组长创建项目并提交到远程Git仓库

1.创建本地仓库,你可能会问本地仓库不是已经创建好了吗?,没错这里使用idea将你创建的文件夹作为本地仓库,之前的文件夹D://test_master只是一个文件夹而已,做完本次操作文件夹变成本地仓库。

使用IDEA进行git进行协同开发_第9张图片

选择D://test_master作为本地仓库

使用IDEA进行git进行协同开发_第10张图片

2.将项目提交到本地仓库:从工作区到本地仓库
使用IDEA进行git进行协同开发_第11张图片

注意观察:此时hellowld颜色改变:由黄变绿

使用IDEA进行git进行协同开发_第12张图片

3.准备提交项目:commit

使用IDEA进行git进行协同开发_第13张图片

添加注释信息,点击commit提交,可以直接选择commit and push,跳过下一步,这里为了便于大家理解原理就不跳过了

使用IDEA进行git进行协同开发_第14张图片

4.准备push项目,到远程仓库

使用IDEA进行git进行协同开发_第15张图片

点击push推送项目
使用IDEA进行git进行协同开发_第16张图片

验证项目推送成功,去github中查看

使用IDEA进行git进行协同开发_第17张图片

场景二:组员从远程Git仓库上获取项目源码

1.此时我已经有了远程仓库的地址,关闭项目模拟最开始环境
使用IDEA进行git进行协同开发_第18张图片

2.点击项目进行克隆

使用IDEA进行git进行协同开发_第19张图片

3.输入相关信息,测试能否通过

使用IDEA进行git进行协同开发_第20张图片

通过后修改为组员的本地仓库地址,点击clone
使用IDEA进行git进行协同开发_第21张图片

验证:检查项目此时已经克隆成功

使用IDEA进行git进行协同开发_第22张图片

场景三:组员修改了部分源码,提交到远程仓库

此时请确定自己是在组员即:D://test_dev仓库的项目,注意要克隆下来的嗷

组员修改了部分源码,提交到远程仓库:这里简单添加一下
使用IDEA进行git进行协同开发_第23张图片
这个操作和首次提交的流程基本一致,分别是 Add -> Commit -> Push。请参考场景一

提交只提交修改内容即可
使用IDEA进行git进行协同开发_第24张图片

验证:去github检查一下内容:成功即可

使用IDEA进行git进行协同开发_第25张图片

场景四:组长远程仓库获取组员的提交

注意切换到组长的项目在进行操作此时是没有组员提交的内容的
使用IDEA进行git进行协同开发_第26张图片

获取更新有两个命令:Fetch和Pull,Fetch是从远程仓库下载文件到本地的origin/master,然后可以手动对比修改决定是否合并到本地的master库。Pull则是直接下载并合并。如果各成员在工作中都执行修改前先更新的规范,则可以直接使用Pull方式以简化操作。
使用IDEA进行git进行协同开发_第27张图片

点击pull
使用IDEA进行git进行协同开发_第28张图片

验证:观察此时项目状态:内容已经被拉取下来了

使用IDEA进行git进行协同开发_第29张图片

场景五:组员接受了一个新功能的任务,创建了一个分支并在分支上开发

注意此时切换为组员分支

建分支也是一个常用的操作,例如临时修改bug、开发不确定是否加入的功能等,都可以创建一个分支,再等待合适的时机合并到主干。
使用IDEA进行git进行协同开发_第30张图片

点击创建分治后创建一个hello的分支发现多了一个hello分支
使用IDEA进行git进行协同开发_第31张图片

注意,这里创建的分支仅仅在本地仓库,如果想让组长小张获取到这个分支,还需要提交到远程仓库。

验证:此时还是两次提交,一个分支master主分支

使用IDEA进行git进行协同开发_第32张图片

场景六:组员把分支提交到远程Git仓库

组员修改内容后,提交
使用IDEA进行git进行协同开发_第33张图片

切换到新建的分支,使用Push功能
使用IDEA进行git进行协同开发_第34张图片

点击push提交到自己的分支上进行开发
使用IDEA进行git进行协同开发_第35张图片

验证github上面:此时有两个分支

使用IDEA进行git进行协同开发_第36张图片

场景七:组长获取组员提交的分支

注意此时切换到组长项目中
使用IDEA进行git进行协同开发_第37张图片

1.使用Pull功能打开更新窗口,点击Remote栏后面的刷新按钮,会在Branches to merge栏中刷新出新的分支。这里并不想做合并,所以不要选中任何分支,直接点击Pull按钮完成操作。
使用IDEA进行git进行协同开发_第38张图片

2.点击刷新多了一个hello分支,点击hello分支,pull
使用IDEA进行git进行协同开发_第39张图片

3此时进入branch分支查看
使用IDEA进行git进行协同开发_第40张图片

点击remote branches,checkout as new local branch 创建分支,起名masterhello分支,做这一步的原因是因为主分支不能随意的更改,即使是组长也需要自己创建一个分支进行操作
使用IDEA进行git进行协同开发_第41张图片

点击查看branches:
使用IDEA进行git进行协同开发_第42张图片

切换分支为masterhello后,克隆组员的分支
使用IDEA进行git进行协同开发_第43张图片

此时一共有3个分支,master主分支,masterhello组长进行操作的分支,hello组员进行提交的分支
使用IDEA进行git进行协同开发_第44张图片

验证:当在组长项目中时候,切换hello 分支

使用IDEA进行git进行协同开发_第45张图片

在master分支,注意点击一下屏幕刷新下
使用IDEA进行git进行协同开发_第46张图片

场景八:组长把分支合并到主干

新功能开发完成,体验很好,项目组决定把该功能合并到主干上。

切换到master分支,选择Merge Changes
使用IDEA进行git进行协同开发_第47张图片

选择要合并的分支,点击Merge完成
使用IDEA进行git进行协同开发_第48张图片

验证:查看此时master状态

使用IDEA进行git进行协同开发_第49张图片

注意:此时还没有把项目推送到主分支奥,push一下,完成主分支的最新情况,不然别人克隆下来的还是之前的版本

git命令汇总:

聪明的你已经发现了,经过一系列的操作你已经理解了git的版本工具,下面用idea自带的终端进行操作,来加快我们的操作:

身为组员你的操作应该如下:

1.clone你的项目,参考场景二

2.分支操作

查看当前分支状态:git branch
使用IDEA进行git进行协同开发_第50张图片

第一次你的状态一定是这样的:
使用IDEA进行git进行协同开发_第51张图片

创建分支 git branch +自己起名字这里我用hello
使用IDEA进行git进行协同开发_第52张图片

检查状态:
使用IDEA进行git进行协同开发_第53张图片

切换分支:git checkout +分支名字
使用IDEA进行git进行协同开发_第54张图片

3.每日拉取任务:git pull origin master

将远程指定分支 拉取到 本地指定分支上:

git pull origin <远程分支名>:<本地分支名>

将远程指定分支 拉取到 本地当前分支上:

git pull origin <远程分支名>

将与本地当前分支同名的远程分支 拉取到 本地当前分支上

git pull

使用IDEA进行git进行协同开发_第55张图片

4.每日提交任务

最好用这种方式进行选择性提交
使用IDEA进行git进行协同开发_第56张图片

使用命令:git push origin 分支名推送

将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反):

git push origin <本地分支名>:<远程分支名>

将本地当前分支 推送到 与本地当前分支同名的远程分支上(注意:pull是远程在前本地在后,push相反):

git push origin <本地分支名>

将本地当前分支 推送到 与本地当前分支同名的远程分支上

git push

使用IDEA进行git进行协同开发_第57张图片

身为组长想必你本领已经很强了,这里给你一些命令自己学习把

一、本地操作:

1.其它

git init:初始化本地库

git status:查看工作区、暂存区的状态

git add :将工作区的“新建/修改”添加到暂存区

git rm --cached :移除暂存区的修改

git commit :将暂存区的内容提交到本地库

tip:需要再编辑提交日志,比较麻烦,建议用下面带参数的提交方法

git commit -m “提交日志” :文件从暂存区到本地库

2.日志

git log:查看历史提交

tip:空格向下翻页,b向上翻页,q退出

git log --pretty=oneline:以漂亮的一行显示,包含全部哈希索引值

git log --oneline:以简洁的一行显示,包含简洁哈希索引值

git reflog:以简洁的一行显示,包含简洁哈希索引值,同时显示移动到某个历史版本所需的步数

3.版本控制

git reset --hard 简洁/完整哈希索引值:回到指定哈希值所对应的版本

git reset --hard HEAD:强制工作区、暂存区、本地库为当前HEAD指针所在的版本

git reset --hard HEAD^:后退一个版本

tip:一个^表示回退一个版本

git reset --hard HEAD~1:后退一个版本

tip:波浪线~后面的数字表示后退几个版本

4.比较差异

git diff:比较工作区和暂存区的所有文件差异

git diff :比较工作区和暂存区的指定文件的差异

git diff HEAD|HEAD^|HEAD~|哈希索引值 :比较工作区跟本地库的某个版本的指定文件的差异

5.分支操作

git branch -v:查看所有分支

git branch -d <分支名>:删除本地分支

git branch <分支名>:新建分支

git checkout <分支名>:切换分支

git merge <被合并分支名>:合并分支

tip:如master分支合并 hot_fix分支,那么当前必须处于master分支上,然后执行 git merge hot_fix 命令

tip2:合并出现冲突

①删除git自动标记符号,如<<<<<<< HEAD、>>>>>>>等

②修改到满意后,保存退出

③git add

④git commit -m “日志信息”,此时后面不要带文件名

二、本地库跟远程库交互:

git clone <远程库地址>:克隆远程库

功能:①完整的克隆远程库为本地库,②为本地库新建origin别名,③初始化本地库

git remote -v:查看远程库地址别名

git remote add <别名> <远程库地址>:新建远程库地址别名

git remote rm <别名>:删除本地中远程库别名

git push <别名> <分支名>:本地库某个分支推送到远程库,分支必须指定

git pull <别名> <分支名>:把远程库的修改拉取到本地

tip:该命令包括git fetch,git merge

git fetch <远程库别名> <远程库分支名>:抓取远程库的指定分支到本地,但没有合并

git merge <远程库别名/远程库分支名>:将抓取下来的远程的分支,跟当前所在分支进行合并

git fork:复制远程库

tip:一般是外面团队的开发人员fork本团队项目,然后进行开发,之后外面团队发起pull request,然后本团队进行审核,如无问题本团队进行merge(合并)到团队自己的远程库,整个流程就是本团队跟外面团队的协同开发流程,Linux的团队开发成员即为这种工作方式。

<远程库地址>:新建远程库地址别名

git remote rm <别名>:删除本地中远程库别名

git push <别名> <分支名>:本地库某个分支推送到远程库,分支必须指定

git pull <别名> <分支名>:把远程库的修改拉取到本地

tip:该命令包括git fetch,git merge

git fetch <远程库别名> <远程库分支名>:抓取远程库的指定分支到本地,但没有合并

git merge <远程库别名/远程库分支名>:将抓取下来的远程的分支,跟当前所在分支进行合并

git fork:复制远程库

tip:一般是外面团队的开发人员fork本团队项目,然后进行开发,之后外面团队发起pull request,然后本团队进行审核,如无问题本团队进行merge(合并)到团队自己的远程库,整个流程就是本团队跟外面团队的协同开发流程,Linux的团队开发成员即为这种工作方式。

你可能感兴趣的:(java程序员入门)