Python实战项目5-Git远程仓库/分支合并/冲突解决
Git分支
为什么要有分支
可以保证主分支的版本都是可以查看的版本
我们都在开发分支开发,开发完成 合并代码
分支操作
分支查看 git branch
分支创建 git branch 分支名
分支切换git checkout 分支名
分支删除 git branch -d 分支名
分支合并
- 创建分支 git branch dev
- 切换到分支 git checkout dev
- 在 dev环境中进行编辑
合并(重要)
将dev 合并进 master 分支
1. git branch checkout master
2. git merge dev 把dev合并到master上
分支合并可能会出冲突(如果master 和 dev 分支 同时修改了相同的代码
进行合并操作的时候,git不清楚到底要保留谁的修改,所以会冲突
)
公司内分支方案:小公司
-master分支,dev分支,bug分支 >>> 所有人在dev分支开发,开发完成合并到主分支
-master分支,dev分支,bug分支 >>> 个人分支,个人在个人分支上开发
Git远程仓库
把本地的版本提交到远程仓库
# github|gitee|gitlab
我们以gitee作为远程仓库
项目已经写好了一部分功能,所以我们需要将代码提交到远程仓库
https连接远程仓库
操作步骤
本地:
1.先在文件目录下 git init
初始化仓库
2. 创建.gitignore 忽略文件 (忽略 日志 idea scripts文件夹 ...)
3.git status
查看状态
4.git add .
提交到暂存区
5.git commit -m '注释'
至此已经提交此版本到本地版本库(被版本管理了)了
**远程:
**1.创建远程仓库,gitee上新建仓库
2.填写信息,保证仓库是空的(会出现教程)
按照远端提示的步骤操作 (全局配置)
git config --global user.name 'xxx'
git config --global user.name 'xxxxx@xxx'
因为我们已有本地的仓库,
3.已有仓库(远程提交)
git remote add origin 远程仓库地址
把本地版本库推送到远程仓库
把本地当前所在分支推送到 origin 对应的远程master上
git push origin 分支名
第一次进入需要输入密码(确认用户)
输入自己的gitee账号密码(只需要输入一次本地就会进行保存 以后就不需要在进行登录的校验了~)
windows电脑保存在凭据管理处
如果我们已经提交到版本库,但是又需要进行做.gitignore忽略文件的操作,我们可以这样操作
1.将日志文件提交到版本库
2..gitignore写上该文件的忽略,删除日志文件, 因为我们删除了这个日志文件,会被git检测到
3.我们再次进行 git add . git commit -m '' 再次出现的文件就不会被管理了
ssh方式连接远程仓库
http协议提交:
上面我们提交代码 输入了用户名/密码 才可以提交上去
- 使用的是http协议提交的代码
ssh方案:
需要公钥和私钥
- 私钥在本地保存,公钥配置到gitee上,以后再提交代码,就不需要其他任何认证了
使用步骤:
先要生成公钥私钥:
生成教程
- 生成在C盘/用户/ .ssh文件夹中 两个文件,一个公钥,一个私钥
公钥配置在gitee上
- 因为我们之前的远程仓库地址origin对应的地址是 https协议的
- 现在我们需要使用shh提交代码,需要把原先的地址删除
git remote remove 仓库名
删除原先提交地址git remote add 仓库名 ssh地址
新增提交地址
协同开发
仓库管理员已经创建了仓库,对仓库有各种权限
我们要进行多人开发 但是它们在自己的仓库中,并不能看到我自己的项目
我们仓库管理员需要把开发人员设置为该仓库的开发者,
设置完成后,在开发人员 的仓库中就能看到这个项目了
仓库管理员,邀请开发者进入【邀请的开发者,对这个仓库就有读写权限,它们就可以开发代码/提交】
开发者本地没有代码
1.需要把代码从远程仓库 clone 下来
git clone git@gitee.com:liuqingzheng/luffy_api.git
2.使用pycharm打开,配置好解释器,安装依赖
3.开发完代码:
git add
设置用户名和邮箱(局部)
局部配置的用户名密码 存 在.git 文件中的 config 文件中
git config user.name xx
git config user.email xx@xx
全局的存储在C/用户/gitconfig文件中
git commit -m '注释'
git push origin master
冲突解决
原因:
1.多人在同一分支开发
2.分支合并出现冲突
"""
冲突出现的例子:
张三
git pull origin master --拉下来项目
修改文件部分内容(文件最后一行print(123))
git add .
git commit -m '注释'
git push origin master
李四
git pull origin master --拉下来项目
修改文件部分内容(文件最后一行print(123))
git add .
git commit -m '注释'
git push origin master
"""
这样就会引起冲突,git 会有冲突信息的提示
先把冲突位置箭头去掉,阅读代码,选择保留或删除别人或自己的代码
再次对代码提交到远程仓库,这样的话就可以解决合并冲突问题
冲突出现的时候:
如果要删除别人的代码,你需要跟别人说一声
<<<<<<< HEAD 我的代码
print('刘亦菲')
======= 它的代码
print('彭于晏')
>>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5
避免出现冲突:
如果想要少出现冲突,需要勤拉取代码,注意自己代码与主体代码更新频率
'''
例子冲突出现的原因2:
-我:
1 创建dev分支
git branch dev
2 在dev分支的views.py 中第2行加入代码
3 提交到本地仓库
-别人:
1 在主分支的views.py 中第2行加入代码
2 提交到版本库
3 在主分支合并代码 git merge dev
4 冲突了,解决冲突
5 再提交代码,到此结束
'''
线上分支合并
线下合并分支
git merge dev
线上合并分支
我们可以在gitee上新建分支
本地同步远程dev分支
git pull origin dev
拉下来了, 还看不到,只有切过去才能看到
git checkout dev
切换分支到dev
我们在dev上面开发代码,随便添加代码
提交到版本库后
我们需要推到远端仓库的dev分支
git push origin dev
master中没有代码,dev中有提交的,现在要线上分支合并
把远程的dev合并进远程的master
提交pr 提交rr
在网站上,申请提交pull request
领导审核,测试,通过后,点击合并
线上dev分支就合并进线上的master分支了
远程仓库回滚
最好不要用
如果我们想要远程的代码回到某一个版本
步骤:
1.本地版本回退
git reset --hard 版本号
2.强行推到远端
git push origin master -f
Python实战项目5-Git远程仓库/分支合并/冲突解决的更多相关文章
- Git分支合并冲突解决(续)
接Git分支合并冲突解决,在使用rebase合并冲突情况下,如果不小心,执行完add后执行了commit,此时本地仓库HEAD处于游离态(即HEAD指向未知的分支),如何解决? 解决方法 (1)此时, ...
- Git 远程仓库分支管理
目录 目录 速查表 关联远程代码仓库 克隆远程仓库 分支管理 创建分支 切换分支 合并分支 删除分支 解决冲突 速查表 指令 作用 git branch 查看分支 git branch newBran ...
- 已有项目接入git远程仓库
1.项目根目录初始化git仓库 git init 2.将本地项目与远程仓库关联(首先得在远程创建一个代码仓库) git remote add origin 远程仓库地址 诺,仓库地址就是这个玩意 3. ...
- git 本地与远程仓库出现代码冲突解决方法
提交过程中报错: [python@heaven-00 Selesystem]$ git push -u origin masterUsername for 'https://github.com': ...
- Git分支合并冲突解决
前2天群里发了张git历史图,如下: 根据提交历史,可以看出图中所有分支合并都采用merge的方式,具体merge是怎么操作的,可以阅读下边文章. 根据项目上的需求,如果要求git提交历史是比较简单的 ...
- Git 笔记——如何处理分支合并冲突
1.前言 学习使用 Git 也有一段时间,但一直都是把 Git 当作一个代码仓库,使用的命令无非就是 clone, add, commit ,往往课程作业也没有过多人合作开发,没有体验过 Git 的分 ...
- maven项目对于maven远程仓库没有资源的解决办法
下载资源到本地 方法一:dependency scope 是system 类型 <dependency> <groupId>edu.ucar</groupId> & ...
- git的介绍、git的功能特性、git工作流程、git 过滤文件、git多分支管理、远程仓库、把路飞项目传到远程仓库(非空的)、ssh链接远程仓库,协同开发
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. [1] 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码 ...
- 【开发工具 - Git】之本地项目托管到远程仓库
这里所说的“本地项目托管到远程仓库”,说的是:例如,我们在本地有一个写了很长时间的项目,现在想要托管到GitHub或码云上进行版本控制. 这个过程大致需要以下几个步骤: (1)在本地初始化Git项目本 ...
- git本地项目连接私人远程仓库以及遇到的问题
一.引言 1.最开始的时候,我本地项目连接的是github远程仓库,现在要转到公司的私人远程仓库. 2.我和大家说两个事: (1)本地项目连接github远程仓库, (2)本地项目连接私人远程仓库, ...
随机推荐
- JS传值与应用
问题提出:在进行页面书写的时候,有时候需要进行动态页面拼接,在动态拼接的时候,涉及到函数的调用,函数的传值可能是HTML标签,或者含有json的标签,这样在传值时就有可能出现问题,由于"&q ...
- 《HTTP权威指南》– 6.代理
代理的概念: Web代理服务器是网络的中间实体.位于客户端和服务器之间,扮演"中间人"的角色,在各端点之间来回传送HTTP报文. 私有和共享代理: 代理服务器可以是某个客户端专用的 ...
- SpringCloud微服务框架复习笔记
SpringCloud微服务框架复习笔记 什么是微服务架构? 微服务是一种软件开发技术,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进 ...
- Go语言与其他高级语言的区别
概述: go语言与其他语言相比,go语言的关键字非常少,只有25个,c语言有37个,c++有84个,python有33个,java有53个. 差异1:go语言不允许隐式转换,别名和原有类型也不能进行隐 ...
- [seaborn] seaborn学习笔记6-热图HEATMAPPLOT
6 热图Heatmapplot(代码下载) 热图是指通过将矩阵单个的值表示为颜色的图形表示.热力图显示数值数据的一般视图非常有用,制作热图很简单,且不需要提取特定数据点.在seaborn中使用heat ...
- [R语言] ggplot2入门笔记3—通用教程如何自定义ggplot2
通用教程简介(Introduction To ggplot2) 代码下载地址 以前,我们看到了使用ggplot2软件包制作图表的简短教程.它很快涉及制作ggplot的各个方面.现在,这是一个完整而完整 ...
- Profiler导致的严重性能问题
背景 客户反馈系统突然运行非常缓慢,持续了近20分钟的时间,通过SQL专家云定位到有人开启了Profiler导致,但是不能定位是谁开启的,请我们协助分析. 现象 登录SQL专家云,进入实时可视化页面 ...
- SpringBoot+Mybatis-plus整合easyExcel批量导入Excel到数据库+导出Excel
一.前言 今天小编带大家一起整合一下easyExcel,之所以用这个,是因为easyExcel性能比较好,不会报OOM! 市面上常见的导入导出Excel分为三种: hutool easyExcel p ...
- Thread和Runnable的区别-匿名内部类方式实现线程的创建
Thread和Runnable的区别 如果一个类继承Thread ,则不适合资源共享.但是如果实现了Runable接口的话,则很容易的实现资源共享. 总结: 实现Runnable接口比继承Thread ...
- java 入门与进阶P-6.5+P-6.6
字符串操作 字符串是对象,对它的所有操作都是通过" . " 这个运算符来进行的 字符串.操作 他表示对.左边的这个字符串做右边的那个操作 这里的字符串可以是变量也可以是常量 Str ...