版本控制工具Git集成IDEA的学习笔记(第二篇GitHub)

 

目录

一、团队内协作和跨团队协作讲述

1、团队内协作

2、跨团队协作

 二、团队内合作交互方式 

1、初始化本地库

2、创建远程库

3、在本地创建远程库地址的别名

4、推送操作

5、克隆操作

6、邀请加入团队,push操作

7、远程库修改的拉取操作

8、远程库修改的拉取操作2

9、协同开发合作时冲突的解决办法

三、跨团队合作交互方式

1、跨团队合作

2、SSH免密登录

四、IDEA集成Git

1、IDEA集成Git:

2、本地库和远程库的交互

3、在IDEA中进行推送:

4、使用IDEA克隆远程库到本地

5、解决冲突

6、如何避免冲突


一、团队内协作和跨团队协作讲述

1、团队内协作

如果是同一个公司内一个团队协作开发项目,在Git中的使用方式通常是采用单一共享仓库的方式,这种模式称为集中式版本控制系统(Centralized Version Control System, CVCS)。

具体流程如下:

1. 在公司内部搭建一个开发团队所有成员都可以访问的Git仓库。

2. 团队成员将该仓库clone到本地后,在本地进行开发。

3. 开发完成后,通过git push将代码推送到共享仓库。

4. 其他团队成员通过git pull获取最新代码。

5. 仓库中存储着项目的所有更新历史和多个开发者的贡献。

6. 通过分支、标签等方式管理功能的开发。

7. 采用代码review流程,确保仓库代码质量。

这种单仓库多开发者的模式,可以最大限度地减少冲突,是同一个团队协作开发的最佳实践。它可以看作是集中式版本控制的方式,通过Git实现。 

2、跨团队协作

如果是同一个公司内部的不同开发团队协作开发项目,在Git中的协作方式通常是采用共享仓库的方式,这种模式称为DCVS(Distributed Version Control System,分布式版本控制系统)。

具体流程如下:

1. 公司内部搭建一个内部的Git仓库,作为项目的主仓库。

2. 每个团队从主仓库fork一个自己的子仓库,团队内部开发在该仓库进行。

3. 开发完成后,每个团队都可以通过push将代码推送回主仓库。

4. 通过pull请求和代码review的流程,各团队协同确保主仓库内代码的质量。

5. 每个团队定期从主仓库pull取最新代码,与自己的子仓库同步。

这种一个主仓库多团队协作的模式,可以最大限度地协调公司内部的开发,防止冲突,保证主仓库代码的稳定。也符合Git分布式版本控制的设计思想。因而在同一个公司内非常常见。


 二、团队内合作交互方式 

1、初始化本地库

2、创建远程库

【1】创建远程库

【2】录入信息:

【3】完成状态:

3、在本地创建远程库地址的别名

(1)远程库的地址:

点击进入:

(2)远程库地址比较长,每次复制比较麻烦 ,在Git本地将地址保存,通过别名 

查看别名:

起别名:

 

4、推送操作

推送成功以后,查看自己的远程库:

5、克隆操作

(1)远程库地址复制:

(2)克隆操作:

克隆操作可以帮我们完成:

(1)初始化本地库

(2)将远程库内容完整的克隆到本地

(3)替我们创建远程库的别名: 

6、邀请加入团队,push操作

【1】更新本地库信息:

【2】push内容到远程库中去:

发现可以直接push进去,并没有让我录入账号密码,或者也没有提示错误 - --》结果 很诡异 

原因:git使用的时候在本地有缓存:

将缓存删除:

现在再次重新push,发现出错了:

必须要加入团队:

登录项目经理的账号,邀请普通成员: 

 

 

登录被邀请者的账号,接收邀请:(在地址栏录入邀请链接即可:https://github.com/zhaoshanshan3366/GitResp2/invitations

7、远程库修改的拉取操作

【1】拉取操作 pull操作,相当于  fetch+merge  

【2】项目经理先先确认远程库内容是否更新了:

【3】项目经理进行拉取:

(1)先是抓取操作:fetch:

在抓取操作执行后,只是将远程库的内容下载到本地,但是工作区中的文件并没有更新。工作区中还是原先的内容:

抓取后可以去远程库看看内容是否正确:

然后发现内容都正确,就可以进行合并操作了:

合并之前应该将分支切换回来:

(2)进行合并:merge:

8、远程库修改的拉取操作2

远程库的拉取可以直接利用pull命令来完成: 

fetch+merge操作:---》为了保险,慎重 

pull --->代码简单,省事

9、协同开发合作时冲突的解决办法

【1】向远程库推送数据:

【2】做了一个拉取操作: 

到这里为止,现在远程合作没有任何问题。

现在操作同一个文件的同一个位置的时候,就会引起冲突:

【3】再次做了推送操作:

改动位置:

【4】改动Test.txt中内容,然后进行推送:

发现 推送失败!

在冲突的情况下,先应该拉取下来,然后修改冲突,然后再推送到远程服务器:

先拉取:

查看冲突:

 

人为解决这个冲突:(该删的删,该留的留)

解决完冲突以后,向服务器推送:

推送:

解决了冲突问题:

三、跨团队合作交互方式

1、跨团队合作

【1】得到远程库的地址:

【2】进行fork操作:

进入到账号后:复制地址:https://github.com/zhaoshanshan3366/GitResp2.git

然后点击下面的fork操作:

【3】然后就可以克隆到本地,并且进行修改:

然后更改数据:添加到暂存区,然后提交到本地库,然后push到远程库:

【4】进行pull request操作:

 

 

【5】进行审核操作:

可以互相留言:

查看具体提交的内容:

确定通过以后,可以进行合并:

2、SSH免密登录

免密操作:

【1】进入用户的主目录中:

【2】执行命令,生成一个.ssh的目录:

keygen  --- >  key generation

注意:C要大写

后面的邮箱,是你的github注册的账号的时候对应的邮箱

三次回车确认默认值即可 

发现在.ssh目录下有两个文件:

【3】打开id_rad.pub文件,将里面的内容进行复制操作:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqiZEbHnyAbBFzx/OFWUyxlL2NUyf//1NdmvYfi+x09AENYVDXcPc2CLiUSYpUcRj7eWuLiIBuzYO/0aYTYgSLPMKAKn8WSLipd7S+vqRsxRLZYna+WvfGvYXc6DexenZlgoMzQe7CBE4IaL1eG4IAvAbjXSF0pq7OJKkcb5L8lQ0HlU9p+eC7WluoW+ZThym/Au8lscDtUVE/I9IwAgvUXB4TxmP7aYD1YCrAUuQ+6mlgh+Tqqb4aWyHPIvtXidkWOPS2pZ7zGi+1cQE6UFxxNlIrH5tczmOKOZ2XKemFWMFc4S89O1y9M9pfOFZZ5F4gbQf6PmrbB4eSyYmWT1TH6FBlB9eaw8v8w186qvqbUKHIc450/hZuQ9LehhdHDgkT86uBAEkXBwwHvVsIM61AD7TC0E1uMw0/Cf4I64vZOVF0/pE6rjs+0LqvF/mtq4aM1riIkSKqFFEm5sx2MsCAJrSBTr3uQFufAMA4VmANH6YAtTwgIJtV5AI16XQlY/8= [email protected]

【4】打开github账号:

【5】生成密钥以后,就可以正常进行push操作了:

对ssh远程地址起别名:

展示别名:

创建一个文件:

添加到暂存区,提交到本地库,然后push到远程库(地址用的是ssh方式的地址)

 

ssh方式好处:   不用每次都进行身份验证

缺陷:只能针对一个账号

四、IDEA集成Git

1、IDEA集成Git:

本地库的初始化操作:

本地库初始化完成了,生成了.git目录:

添加到暂存区,再提交到本地库操作;  add +commit:

 

 

当你更改内容以后,前面跟本地库内容不一致的地方会显示绿色:

2、本地库和远程库的交互

因为他们是两个不同的项目,要把两个不同的项目合并,git需要添加一句代码,在  git pull  之后,这句代码是在git 2.9.2版本发生的,最新的版本需要添加  --allow-unrelated-histories  告诉 git 允许不相关历史合并 

假如我们的源是origin,分支是master,那么我们需要这样写 git pull origin master --allow-unrelated-histories  

这个方法只解决因为两个仓库有不同的开始点,也就是两个仓库没有共同的 commit 出现的无法提交。如果使用本文的方法还无法提交,需要看一下是不是发生了冲突,解决冲突再提交

push推送: git push -u origin master -f  

 到这里 远程库和本地库就可以进行交互了。

3、在IDEA中进行推送:

 

 

一般在开发中先pull操作,再push操作,不会直接进行push操作!!

4、使用IDEA克隆远程库到本地

利用IDEA进行克隆项目:

 

克隆到本地后:

这个目录既变成了一个本地仓库,又变成了工作空间。

5、解决冲突

【1】在你push以后,有冲突的时候提示合并操作: 

合并:

 

6、如何避免冲突

【1】团队开发的时候避免在一个文件中改代码 

【2】在修改一个文件前,在push之前,先pull操作

猜你喜欢

转载自blog.csdn.net/Microhoo_/article/details/132339642
今日推荐