Git多分支 远程仓库 协同开发以及解决冲突
一、Git多分支及远程仓库
1.Git多分支
首先要搞明白什么是多分支? 为什么要多分支? 接下来回答一下这两个问题吧!首先分支就是一个仓库的字库;多分支可以保证主分支的版本都是可以查看的版本、我们都在开发分支开发,开发完成,合并到主分支。
#分支操作的详细步骤
第一步:分支查看 git branch
第二步:分支创建 git branch dev
branch后面写分支的名称,比如dev(develop,即开发分支),dev指的是要创建的分支名字
第三步:分支切换 git checkout dev
切换的关键字是checkout,checkout后面写要切换的分支名字(dev)
第四步:分支删除 git branch -d dev
需要注意的是:在dev分支上不能删除dev分支,需要先切换到master分支上执行删除命令
分支合并
以上都是在本地操作;接下来要研究的是远程操作!
2.正常密码链接远程仓库
把本地的版本提交到远程仓库比如说(gitee,github,gitlab。。。。),本篇文章以Gitee为例讲解此过程,提供一下gitlab的搭建过程https://zhuanlan.zhihu.com/p/413217715
因为路飞项目写好了一部分板块,按照敏捷开发的思路,完全可以管理代码,以下是具体步骤
-------------------------------------------------------------------开始--------------------------------------------------------------
在本地
第一步:在luffy_api 敲git init
tips:避免操作过程中不小心丢失项目文件,最好复制一份用来练习题材
第二步:设置忽略文件(.gitignore)
这是忽略文件名大全,我自己没有完全写好就提交到版本库了,也不想来来回回,想着在笔记里面总结一下
第三步:执行提交暂存区和版本库的命令
git add .
git commit -m '第一次提交'
------------提交到了本地版本库 被版本管理了------------
在远程
第一步:远程要创建仓库:gitee上创建仓库,右上角 +
第二步:填写一些基本信息,下面的是创建仓库需要填写信息的详细讲解
最后不要勾选初始化仓库和设置模板
开发者模式设置为master/develop模式
要保证仓库是空的即可
再回到本地
第一步:设置设置邮账户和邮箱
git config --global user.email "3014885197@qq.com"
git config --global user.name "Almira998"
第二步:远程添加源代码
# 添加一个远程仓库地址名字叫origin,地址是xxx
git remote add origin https://gitee.com/almira998/luffy_api.git
# 把本地当前所在分支,推送到 origin对应的远程的master上
git push origin master
仓库地址在图里面提示找就行
说明密码远程提交成功
-------------------------------------------------------------------结束--------------------------------------------------------------
3.ssh公钥私钥方式链接远程仓库
首先回顾一下什么是SSH吧 !SSH(Secure Shell),由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平台,都可运行SSH。传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道"。SSH协议框架中设计了大量可扩展的冗余能力,比如用户自定义算法、客户自定义密钥规则、高层扩展功能性应用协议。这些扩展大多遵循 IANA 的有关规定,特别是在重要的部分,像命名规则和消息编码方面。SSH采用面向连接的TCP协议传输 应用22号端口 安全系数较高。
产生密钥的步骤
第一步:访问浏览密钥产生网址
第二步:获取产生密钥的命令ssh-keygen -t ed25519 -C "3014885197@qq.com"
第三步:在Gitee里的ssh部分配置公钥
这样就配置完公钥了,接下来重新提交到远端,之后不用填写账号和密码了,一路绿灯
第四步:在仓库位置找克隆与下载按钮,然后ssh对应的地址复制下来
第五步:重新设置ssh地址提交地址,就完成了ssh方式远程提交代码的操作
三、协同开发及解决冲突
1.协同开发
第一步:仓库管理员,邀请开发者进入>>>:邀请的开发者,对这个仓库就有读写权限,他们就可以开发代码,提交
第二步:作为开发者,本地没有代码
第三步:把代码从远程仓库 clone 下来
git clone git@gitee.com:liuqingzheng/luffy_api.git
第四步:使用pycharm打开,配置好解释器,安装依赖
第五步:开发代码,terminal依次敲如下代码
git add
git config --global user.email "3014885197@qq.com"
git config --global user.name "米热"
git config user.name lqz
git config user.email 3@qq.com
git commit
git push origin master
2.解决冲突
出现冲突的原因
多人在同一分支开发
避免冲突的原则
你如果想少出现冲突>>>:勤拉取代码(git pull origin dev)
冲突出现的样子:
你如果要删除别人的代码,你需要跟别人说一声
<<<<<<< HEAD 我的代码
print('刘亦菲')
======= 它的代码
print('彭于晏')
>>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5
解决冲突的方法
箭头去掉,阅读代码,选择保留或删除别人或自己的代码,再提交
四、线上分支合并及远程仓库回滚
1.线上分支合并
gitee上,新建一个分支
本地同步远程dev分支
git pull origin dev # 拉下来了,还看不到,只有切过去,才看的导
git checkout dev
在dev上开发
随便加代码
git add
git commit
提交到本地的dev了
git push origin dev # 推到远端 dev
master中没有代码,dev中有提交的,现在要线上分支合并
把远程的dev合并进远程的master
提交pr 提交rr
在网站上,申请提交pull request
领导审核,测试,通过后,点击合并
线上dev就合并进线上的master了
2.远程仓库回滚
你不要用 因为远程回滚指的是把远程的代码回滚到最初的状态,这是一个危险操作,原因是一旦回滚到最初状就相当于之前所做的工作白费了,其实可以找回的但是这项工作是另一项费时间的体力活。非常麻烦,所咱们不要轻易地敲 【 -f 】
远程仓库回滚的操作步骤如下:
第一步:本地版本回退
git reset --hard 版本号
第二步:强行推到远端
git push origin master -f
五、为开源项目贡献代码
# github,gitee 看到好的开源项目, 发现有bug,为他增加新功能---》你加入了代码---》想合并进开源项目,如何做
# 步骤:
1 先fork开源项目--》复制这个项目到我的仓库中
2 clone下来,改代码,一路提交到远端(我的)
3 提交pr,等作者同意
六、pycharm使用git的教程
只要用命令操作的,都可以点击完成(命令都可以封装成图形化界面),pycharm使用gitgit的大前提是按照如下图配置值以下
详细使用方法看下面的截图