首页 > 其他分享 >路飞-day5——git 多分支开发、git远程仓库、ssh方式连接远程仓库、协同开发、冲突解决、线上分支合并、远程仓库回滚

路飞-day5——git 多分支开发、git远程仓库、ssh方式连接远程仓库、协同开发、冲突解决、线上分支合并、远程仓库回滚

时间:2023-03-02 19:00:34浏览次数:56  
标签:git 仓库 dev master 远程 分支

目录

一、git 多分支开发

git分支管理

image

为什么要有分支?

  • 可以保证,主分支的版本都是可以查看的版本
  • 我们都在开发分支开发,开发完成,合并到主分支
  • 如果出现一个特殊任务(敏感任务),与正常业务关系不紧密,甚至可能大的影响正常的dev分支开发,可以依赖dev开一个子分支,进行开发,开发完毕后合并到dev分支,再删除该分支即可
  • 所有的开发任务都可以在dev分支上进行(除非公司硬性要求不能直接在dev分支开发,只能在dev子分支开发,测试通过后才能合并给dev)

分支操作

  • 1、查看分支
git branch
  • 2、创建分支
git branch 分支名
git branch dev
  • 3、切换分支
git checkout dev  # 切换到dev分支

git checkout -b 分支名 # 创建并切换到分支
git branch checkout 分支名称 # 跟上面的命令一个作用
  • 4、删除分支
git branch -d dev

ps:删除分支的时候需要处于master分支下才能删除别的分支

  • 5、合并分支(重要)
git merge 分支名

把dev分支合并到master分支:切换到master分支,执行合并dev分支的命令
	先来到master分支:
    	-git checkout master
        如果合并内容进来的对象还没创建可以使用下方命令
        -git branch checkout 分支名称
    执行合并命令:
    	-git merge dev   
        把dev合并到我(master,处在哪个分支就会合并到哪个分支)身上

ps:分支合并可能会出冲突(后面会讲)

公司里使用的分支方案

小公司

	-master分支,dev分支,bug分支 ,所有人在dev分支开发,开发完成合并到主分支

中小公司

    -master分支,dev分支,bug分支 ,个人分支,个人在个人分支上开发,开发完成合并到dev分支

二、git远程仓库

我们在使用远程git开发的时候,需要把本地版本库的数据提交到服务器版本库,而这个服务器版本库通常有以下三种:

  • gitee
  • github
  • gitlab

gitlab是公司自行搭建的,gitee和github(网站访问困难,服务器在国外)是第三方的网站

gitlab的搭建教程

https://zhuanlan.zhihu.com/p/413217715

我们后续的操作以gitee作为远程仓库

把我们写了一部分的luffy项目上传到gitee

上传项目到本地版本库

步骤一

打开git bash,进入到路飞项目的文件夹内,这里我先进入了后端项目的文件夹中

image

步骤二

执行命令,把当前文件夹初始化为git仓库

image

image

步骤三

去项目文件夹中,配置.gitignore忽略文件

image

当前状态下我们去pycharm中会看到文件的颜色发生了变化,被管理的文件都会变成红色,忽略管理的文件会变成黄色,已经提交到暂存区的文件会变成绿色

步骤四

把需要git管理的文件添加到暂存区

ps:这里我们务必要先配置好忽略文件,否则修改起来比较麻烦(不想要被管理的文件删了,上传,然后再给他弄回来)

git add .

image

步骤五

提交代码到本地版本库中

git commit -m '第一次提交'

这个时候代码提交到了本地版本库中,已经被版本管理了

image

上传项目到远程仓库

步骤一

登陆gitee创建自己的仓库,点击右上角的+号,然后点进新建仓库

image

步骤二

配置一下仓库信息,后面三样不要勾选,保证仓库是空的(勾选了之后就不是空仓库了,相当于有了别的版本信息)

image

image

步骤三

根据gitee的提示进行配置,这里的git用户设置我们已经在之前配置过了

image

步骤四

进入被git管理的项目路径内,执行命令,把本地的版本库推送到远程仓库(这里的origin只是一个名称,可以换)

git remote add origin https://gitee.com/cengmuduoqing/luffy_api.git

image

步骤五

把本地当前所在分支,推送到 origin对应的远程的master上(这里我们就是把本地的master分支推送到远程仓库的master分支)

git push origin master

执行命令后会出现一个窗口需要我们输入用户名和密码,因为gitee是第三方远程仓库,为了安全考虑他不能让人随便上传代码进行修改

这里的用户名和密码只需要输入一次,就可以永久使用,这是因为他在电脑的凭据管理器中保存了(windows系统),如果在这里删除了凭据,就需要重新登陆了

image

image

需要被忽略管理的文件如果已经提交了如何修改

# 如果提交了,再写忽略文件的步骤
    luffy.log--->暂存区---》版本库
    
    .gitignore---》写上忽略,但是不好被忽略,只要luffy.log有变化还是会被监控到
    
    删除luffy.log---》会被监控到---》add,commit---》版本库中已经没有luffy.log
    再出的luffy.log,就不会被管理了

三、ssh方式连接远程仓库

在上面,我们提交代码到远程仓库使用的是https协议的链接

我们还可以使用ssh链接提交代码,同时ssh链接的安全性更高,使用更广泛

image

使用ssh需要用到公钥和私钥

操作流程

步骤一

点击右上角的头像,点击设置

步骤二

在设置界面点击左侧的ssh公钥,这时候我们可以点击右侧界面的怎样生成公匙了解怎么获取公钥

公钥教程:https://gitee.com/help/articles/4181
image

步骤三

执行命令生成公钥私钥

ssh-keygen -t ed25519 -C "[email protected]" 

注意:这里的 [email protected] 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。
现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。

执行命令后什么都不需要输入,按三次回车即可

image

image

根据创建时的提示,我们可以得知生成的公私钥保存在:C:\Users\asus.ssh

image

步骤四

接着我们使用记事本打开后缀名为.pub的公钥文件,复制公钥到gitee网站上进行添加

image

image

步骤五

在本地版本库推送的时候,可以删除之前的origin库连接,创建新的连接提交代码到远程仓库

git remote remove origin
git remote add origin [email protected]:cengmuduoqing/luffy_api.git

git push origin master

也可以直接创建一个新的库连接,提交代码到远程仓库,我用的就这种方式

git remote add zzh [email protected]:cengmuduoqing/luffy_api.git

git push zzh master

image
image
image

remote源操作

1)查看仓库已配置的远程源
>: git remote
>: git remote -v

2)查看remote命令帮助文档
>: git remote -h

3)删除远程源
>: git remote remove 源名
eg: git remote remove origin

4)添加远程源
>: git remote add 源名 源地址
>: git remote add orgin [email protected]:doctor_owen/luffyapi.git

5)提交代码到远程源
>: git push 源名 分支名

6)克隆远程源
>: git clone 远程源地址
  • 1)通过克隆方式连接远程源,默认远程源名就叫origin;所以主动添加远程源来连接远程仓库,源码也用origin
  • 2)本地一个仓库只需要和远程一个源进行同步,所以只需要连接一个远程源,如果还想把本地代码同步给第三个平台,那么可以通过主动添加远程源来连接第三个平台的远程仓库,此时的源码就不能再叫origin了,比如online都可以
  • 3)pull和push都可以提供选择不同的源码,和不同的远程仓库交互

四、协同开发

协同开发介绍

  • 我[仓库管理员]创建了仓库,我对仓库有各种权限
  • 我们要多人开发(张三,李四),张三李四在自己的仓库中,能看到我的项目吗?看不到
  • 我[仓库管理员],把张三李四设置为该仓库的开发者,设置完成后,在张三李四的仓库中就能看到这个项目了

ps:当我们邀请的别的开发者,这些开发者就对这个仓库就有读写权限,他们就可以开发代码,提交代码

image

当我们作为开发者被邀请的时候,我们本地是没有代码的,因此我们需要从远程仓库拿代码

从远程仓库获取代码

步骤一

使用git clone命令把代码从远程仓库克隆下来

ps:执行命令之前需要进入想要保存该项目的路径中

git clone [email protected]:cengmuduoqing/luffy_api.git

image

步骤二

使用pycharm打开,并配置解释器及依赖

步骤三

开发代码并保存

步骤四

开发结束后跟之前一样,提交到远程仓库即可

git add .

git commit -m '版本信息'
git push origin master

ps:在提交的时候如果需要更改身份信息,可以使用局部身份信息

# 设置用户名和邮箱
git config user.name lqz
git config user.email [email protected]

局部用户的信息存储在.git文件夹中的config文件中

image
image

全局用户的信息存储在C:\Users\用户名\.gitconfig文件中

image
image

公司中的git操作流程介绍

# 你刚去公司,你的步骤
	1 自己注册,hr给你 gitlab 账号和密码
    	-自己去你的账号里,配置ssh
    2 老大会把一个仓库地址给你 【它已经把你加成开发者了】  https  ssh
    3 clone下来代码
    4 使用pycharnm打开,配置环境===》代码运行起来
    5 开发代码,本地提交---》push到远端
    	add
        commit
        push

五、冲突解决

# 出现冲突的原因
	1 多人在同一分支开发
    2 分之合并出现冲突
    
    
    
# 多人在同一分支开发冲突
	-张三:
    	git pull origin master
        在requirements.txt,最后一行加入 lqz
        git add .
        git commit -m 
        git push origin master
        
        
        
    -我:
    	在requirements.txt,最后一行加入 lqz
        git add .
        git commit -m 
        git pull origin master
        # 冲突了
        # 解决冲突 冲突的 箭头去掉,阅读代码,选择保留或删除别人或自己的代码,再提交
        # 提交到远程仓库,这是解决后的
        
        
        
# 冲突出现的样子:你如果要删除别人的代码,你需要跟别人说一声
    <<<<<<< 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 再提交代码,到此结束
        
 	
 	
    

六、线上分支合并

版本库间的通信

img

# 线下分支合并
	git merge dev
    
    
# 线上 分支合并
	- gitee上,新建一个分支 ,点点点创建出来
    -本地同步远程dev分支
    	git pull origin dev  # 拉下来了,还看不到,只有切过去,才看的导
        git checkout dev
    -在dev上开发开发
    	随便加代码
        git add 
        git commit 
        # 提交到本地的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

八、作业

# 把你同桌作为协同开发者
# 你同桌给你制造冲突,你来解决


标签:git,仓库,dev,master,远程,分支
From: https://www.cnblogs.com/zhihuanzzh/p/17173013.html

相关文章

  • 环境变量与git的配合实现dotenv
    事由最近在开发淘宝客返利程序的后台服务时发现对接到淘宝联盟的appKey和secret是极为重要的假设这两串数字被恶意盗用轻则消耗平台你的流量,重则封号所以就需要将重要......
  • TortoiseGit 安装后不显示图标问题
    1.  【TortoiseGit 安装后不显示图标问题,亲测有效,记得注册表前面多打点空格】  TortoiseGit显示文件状态图标-独木成林-博客园(cnblogs.com)......
  • docker部署gitlab 15.9
    docker-compose.ymlversion:'3.6'services:web:image:'gitlab/gitlab-ce:15.9.1-ce.0'restart:alwayshostname:'project.example.com'contai......
  • 搭建docker本地镜像仓库
    一、本地镜像仓库:也就是私有服务器,主要用于企业内部镜像的共享,包括上传与下载二、搭建本地镜像仓库操作步骤1.本地服务器上安装dockerce,具体步骤参考https://www.cnblog......
  • git 操作指令
    git操作指令指令注释gitinit初始化仓库,当前文件夹多出.git文件夹gitinitxxx在上一级敲,指定初始化下一级的xxx文件夹gitstatus查看文件变化,在......
  • 浅析厂房仓库电气火灾的成因及对策
    陈盼安科瑞电气股份有限公司上海嘉定201801摘要: 文章分析了厂房仓库电气火灾的成因及火灾特点,并有针对性地提出了预防火灾的对策。 关键词: 厂房仓库;电气火灾;成因;预......
  • git
    1git多分支#为什么要有分支 -可以保证,主分支的版本都是可以查看的版本-我们都在分支开发,开发完成,合并到主分支#分支操作 -分支查看 gitbranch......
  • git常规操作
    git拉代码使用gitclone命令从仓库下载代码,代码下载到了本地:gitclone链接如果仓库代码又了更新,这时可以使用gitpull命令将更新下载到本地在对本地代码就行修改后,可以......
  • 用telnet远程连接linux系统
     环境,centos7.6通过telnet进行远程登录的方法如下:1.安装telnet,telnet-server,xinetd检测是否安装telnetrpm-qa|greptelnet检测是否安装xinetdrpm-qa|grep......
  • 2-STM32+W5500远程升级篇OTA(阿里云物联网平台)-STM32通过W5500+mbedtls使用https下载
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/STM32W5500AIR202A/alyota.html"frameborder="0"scrolling="auto"width="100%"height="1500"></ifra......