目录
一、团队内协作和跨团队协作讲述
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、如何避免冲突
如果是同一个公司内一个团队协作开发项目,在Git中的使用方式通常是采用单一共享仓库的方式,这种模式称为集中式版本控制系统(Centralized Version Control System, CVCS)。
具体流程如下:
1. 在公司内部搭建一个开发团队所有成员都可以访问的Git仓库。
2. 团队成员将该仓库clone到本地后,在本地进行开发。
3. 开发完成后,通过git push将代码推送到共享仓库。
4. 其他团队成员通过git pull获取最新代码。
5. 仓库中存储着项目的所有更新历史和多个开发者的贡献。
6. 通过分支、标签等方式管理功能的开发。
7. 采用代码review流程,确保仓库代码质量。
这种单仓库多开发者的模式,可以最大限度地减少冲突,是同一个团队协作开发的最佳实践。它可以看作是集中式版本控制的方式,通过Git实现。
如果是同一个公司内部的不同开发团队协作开发项目,在Git中的协作方式通常是采用共享仓库的方式,这种模式称为DCVS(Distributed Version Control System,分布式版本控制系统)。
具体流程如下:
1. 公司内部搭建一个内部的Git仓库,作为项目的主仓库。
2. 每个团队从主仓库fork一个自己的子仓库,团队内部开发在该仓库进行。
3. 开发完成后,每个团队都可以通过push将代码推送回主仓库。
4. 通过pull请求和代码review的流程,各团队协同确保主仓库内代码的质量。
5. 每个团队定期从主仓库pull取最新代码,与自己的子仓库同步。
这种一个主仓库多团队协作的模式,可以最大限度地协调公司内部的开发,防止冲突,保证主仓库代码的稳定。也符合Git分布式版本控制的设计思想。因而在同一个公司内非常常见。
【1】创建远程库
【2】录入信息:
【3】完成状态:
(1)远程库的地址:
点击进入:
(2)远程库地址比较长,每次复制比较麻烦 ,在Git本地将地址保存,通过别名
查看别名:
起别名:
推送成功以后,查看自己的远程库:
(1)远程库地址复制:
(2)克隆操作:
克隆操作可以帮我们完成:
(1)初始化本地库
(2)将远程库内容完整的克隆到本地
(3)替我们创建远程库的别名:
【1】更新本地库信息:
【2】push内容到远程库中去:
发现可以直接push进去,并没有让我录入账号密码,或者也没有提示错误 - --》结果 很诡异
原因:git使用的时候在本地有缓存:
将缓存删除:
现在再次重新push,发现出错了:
必须要加入团队:
登录项目经理的账号,邀请普通成员:
登录被邀请者的账号,接收邀请:(在地址栏录入邀请链接即可:https://github.com/zhaoshanshan3366/GitResp2/invitations)
【1】拉取操作 pull操作,相当于 fetch+merge
【2】项目经理先先确认远程库内容是否更新了:
【3】项目经理进行拉取:
(1)先是抓取操作:fetch:
在抓取操作执行后,只是将远程库的内容下载到本地,但是工作区中的文件并没有更新。工作区中还是原先的内容:
抓取后可以去远程库看看内容是否正确:
然后发现内容都正确,就可以进行合并操作了:
合并之前应该将分支切换回来:
(2)进行合并:merge:
远程库的拉取可以直接利用pull命令来完成:
fetch+merge操作:---》为了保险,慎重
pull --->代码简单,省事
【1】向远程库推送数据:
【2】做了一个拉取操作:
到这里为止,现在远程合作没有任何问题。
现在操作同一个文件的同一个位置的时候,就会引起冲突:
【3】再次做了推送操作:
改动位置:
【4】改动Test.txt中内容,然后进行推送:
发现 推送失败!
在冲突的情况下,先应该拉取下来,然后修改冲突,然后再推送到远程服务器:
先拉取:
查看冲突:
人为解决这个冲突:(该删的删,该留的留)
解决完冲突以后,向服务器推送:
推送:
解决了冲突问题:
【1】得到远程库的地址:
【2】进行fork操作:
进入到账号后:复制地址:https://github.com/zhaoshanshan3366/GitResp2.git
然后点击下面的fork操作:
【3】然后就可以克隆到本地,并且进行修改:
然后更改数据:添加到暂存区,然后提交到本地库,然后push到远程库:
【4】进行pull request操作:
【5】进行审核操作:
可以互相留言:
查看具体提交的内容:
确定通过以后,可以进行合并:
免密操作:
【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方式好处: 不用每次都进行身份验证
缺陷:只能针对一个账号
本地库的初始化操作:
本地库初始化完成了,生成了.git目录:
添加到暂存区,再提交到本地库操作; add +commit:
当你更改内容以后,前面跟本地库内容不一致的地方会显示绿色:
因为他们是两个不同的项目,要把两个不同的项目合并,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
到这里 远程库和本地库就可以进行交互了。
一般在开发中先pull操作,再push操作,不会直接进行push操作!!
利用IDEA进行克隆项目:
克隆到本地后:
这个目录既变成了一个本地仓库,又变成了工作空间。
【1】在你push以后,有冲突的时候提示合并操作:
合并:
【1】团队开发的时候避免在一个文件中改代码
【2】在修改一个文件前,在push之前,先pull操作