Git介绍
1 Git安装
- Git官网:https://git-scm.com/
- 安装流程,一直下一步。
安装成功后,可以点击Git Bash Here
打开Git终端:
2 Git结构
3 代码托管中心_本地库和远程库的交互方式
我们已经有了本地库,本地库可以帮我们进行版本控制,为什么还需要代码托管中心呢?
它的任务是帮我们维护远程库,
下面说一下本地库和远程库的交互方式,也分为两种:
3.1 团队内部协作
3.2 跨团队协作
4 初始化本地仓库
- 创建一个文件夹
- 进入文件夹,右键选择
Git Bash Here
进入Git
终端 - 进入后可以先对字体和编码进行设置,设置合适的字体大小
5 本地库与远程交互方式
6 初始化本地库
7 创建远程库
-
创建远程库
-
录入信息
-
完成状态
8 创建本地远程库的别名
远程库的地址:
点击进入:
远程库地址比较长,每次复制比较麻烦
https://github.com/zhaoshanshan3366/GitResp2.git
在Git本地将地址保存,通过别名
查看别名
起别名:
9 推送操作
推送成功以后,查看自己的远程库
10 克隆操作
远程库地址复制
克隆操作
克隆操作可以帮我们完成:
(1)初始化本地库
(2)将远程库内容完整的克隆到本地
(3)替我们创建远程库的别名:
11 邀请加入团队,push操作
- 更新本地库信息
2. push内容到远程库中去
发现可以直接push进去,并没有让我录入账号密码,或者也没有提示错误 - --> 结果 很诡异
原因:git使用的时候在本地有缓存:
将缓存删除:
3. 现在再次重新push,发现出错了
必须要加入团队:
登录项目经理的账号,邀请普通成员:
登录被邀请者的账号,接收邀请:(在地址栏录入邀请链接即可:https://github.com/zhaoshanshan3366/GitResp2/invitations)
12 远程库修改的拉取操作
- 拉取操作 pull操作,相当于 fetch+merge
- 项目经理先确认远程库内容是否更新了
- 项目经理进行拉取:
(1)先是抓取操作:fetch:
在抓取操作执行后,只是将远程库的内容下载到本地,但是工作区中的文件并没有更新。工作区中还是原先的内容:
抓取后可以去远程库看看内容是否正确:
然后发现内容都正确,就可以进行合并操作了:
合并之前应该将分支切换回来:
(2)进行合并:merge:
- 远程库的拉取可以直接利用pull命令来完成:
fetch+merge操作:—> 为了保险,慎重
pull —>代码简单,省事
13 协同开发合作时冲突的解决办法
- 用户A向远程库推送数据:
- 用户B做了一个拉取操作
- 到这里为止,现在远程合作没有任何问题。
现在操作同一个文件的同一个位置的时候,就会引起冲突:
用户B
再次做了推送操作
用户B
改动位置:
4. 用户A
改动Test.txt中内容,然后进行推送:
发现 推送失败!
在冲突的情况下,先应该拉取下来,然后修改冲突,然后再推送到远程服务器:
先拉取:
查看冲突:
人为解决这个冲突:(该删的删,该留的留)
解决完冲突以后,向服务器推送
推送:
解决了冲突问题:
14 跨团队合作交互方式
15 跨团队合作
-
得到远程库的地址:(从用户A)
-
进行fork操作:(用户B)
进入到账号后:复制地址:https://github.com/zhaoshanshan3366/GitResp2.git
然后点击下面的fork操作:
-
然后就可以克隆到本地,并且进行修改:(用户B)
然后更改数据:添加到暂存区,然后提交到本地库,然后push到远程库:
-
进行pull request操作(用户B)
5. 进行审核操作(用户A)
可以互相留言
查看具体提交的内容
确定通过以后,可以进行合并
16 SSH免密登录操作
- 进入用户的主目录中
- 执行命令,生成一个.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= chinazss@126.com
- 打开github账号
- 生成密钥以后,就可以正常进行push操作了:
对ssh远程地址起别名:
展示别名
创建一个文件
test100.txt
添加到暂存区,提交到本地库,然后push到远程库(地址用的是ssh方式的地址)
ssh方式好处: 不用每次都进行身份验证
缺陷:只能针对一个账号
17 IDEA集成Git
本地库的初始化操作
本地库初始化完成了,生成了.git目录
添加到暂存区,再提交到本地库操作; add +commit
当你更改内容以后,前面跟本地库内容不一致的地方会显示绿色:
18 本地库与远程库的交互
因为他们是两个不同的项目,要把两个不同的项目合并,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
到这里 远程库和本地库就可以进行交互了。
在IDEA中进行推送
一般在开发中先pull操作,再push操作,不会直接进行push操作!!
19 利用IDEA进行克隆项目
克隆到本地后:
这个目录既变成了一个本地仓库,又变成了工作空间。
20 解决冲突
- 在你push以后,有冲突的时候提示合并操作
合并
21 如果避免冲突
- 团队开发的时候避免在一个文件中改代码
- 在修改一个文件前,在push之前,先pull操作
参考:以前做的笔记,具体哪一个视频忘记了,如果侵犯到你的权益请联系我