git多分支 git远程仓库 shh方式连接远程仓库 协同开发 冲突解决 线上分支合并 远程仓库回滚

回顾

1.前端首页

2.轮播图接口
	Banner.vue --->>> created --->>> axios --->>> 渲染在页面上v-if
  
3.git 介绍
软件,版本管理软件
代码版本管理,协同开发,合并代码。。。
下载 --->>> 分平台 --->>> 一路下一步安装
命令行中 输入 git,右键

4.git 和svn区别
	集中式管理
  分布式管理
  
5.git gitee GitHub gitlab
	git软件
  gitee远程git仓库,网站,放在源代码,私有代码,国内最大的开源仓库
  github
  gitlab:公司里的
  
6.git的工作流程
工作区:修改操作代码的地方
暂存区:工作区的变更提交到暂存区
版本库:暂存区提交到版本库,你的变更就被版本管理了
	回退,查看之前版本
  
7.常用命令
	git init 初始化仓库
  git status	查看状态[工作区、暂存区]
  git add	把工作去变更提交到暂存区
  git commit -m '一定要加注释' 把暂存提交到版本库
  git reflog
  git log	查看版本信息
  
  设置用户名和邮箱(全局局部)
  
  git checkout .	把工作区变更回退
  git reset HEAD	把暂存区拉回到工作区
  
  git reset --hard 版本号	回退到某个版本
  
8 忽略文件
仓库中有些文件,文件夹不需要提交到版本库,来管理
node_models
.idea
_*.pyc
_*.log

使用步骤
	在仓库目录下新建.gitgnore
  	在里面写忽略文件夹,文件夹
    	直接写文件名
      	/文件名
        /目录名/xx.txt
        /*.txt

git多分支

为什么要有分支

可以保证,主分支的版本都是可以查看的版本。我们都在开发分支开发,开发完成,合并到主分支

分支操作

分支查看:git branch

image-20230302145953201

分支创建:git branch 分支名

image-20230302150218390

切换分支:git checkout dev。切换到dev分支

image-20230302091345814

分支删除:git branch -d dev。删除dev分支

image-20230302091412433

合并分支(重要):

首先要来到要合并进的地方

image-20230302091738194

把dev合并到master,先来到master分支:git branch checkout master

执行合并命令:git merge dev,把dev合并到我(master)身上。

分支合并可能会出冲突。

image-20230302152838186

公司里分支方案:小公司

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

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

git远程仓库

把本地的版本提交到远程仓库
gitee、Github、gitlab
gitlab的搭建过程:
https://zhuanlan.zhihu.com/p/413217715
  
讲课以 gitee作为远程仓库

luffy_api 写好了 一部分功能,要把代码提交到远程仓库

操作步骤

本地:
	1.在luffy_api 敲git init
  2.设置忽略文件(.gitgnore)
  3.git add .
  4.git commit -m '第一次提交'
  ------提交了本地仓库------被版本管理了
  远程:
  	1.远程要创建仓库:gitee上创建仓库,右上将 +
    2.填一些信息,保证仓库是空的
  本地:
  	1.安装远端提示的步骤操作
    2.设置用户和邮箱
    3.咱们是已有仓库
    cd luffy_api
  	# 添加了一个远程地址名字叫origin,地址是xxx
    
  git remote add origin https://gitee.com/liuqingzheng/luffy_api.git
  # 把本地的版本库推送到远程仓库
  # 把本地当前所在分支,推送到 origin对应的远程的master上
  git push origin master
  # 需要输入用户名密码,输入一次,以后就不用输入了(本地保存了:凭据管理)
  
  # 如果提交了,再写忽略文件的步骤
  	luffy.log --->>> 暂存区 --->>> 版本库
    
    .gitignore --->>> 写上忽略,但是不好被忽略,只要luffy.log有变化还是会被监控到
    
    删除luffy.log --->>> 会被监控到 --->>> add.commit --->>> 版本库中已经没有luffy.log
    
    再出的luffy.log,就不会被管理了

本地

在luffy_api,建gitgnore文件忽略文件:

image-20230302095711355

换到pycharm中输入

image-20230302095731148

就会有提示

image-20230302095812517

忽略的文件就变成黄色的了

image-20230302095844564

git status

image-20230302095859815

被管理的

image-20230302164037926

提交,然后就变色了,被版本管理

image-20230302164008788

远程

一般不要删仓库,删了就没了。

image-20230302100636809

image-20230302101423319

本地:

image-20230302101739529

已有仓库

image-20230302101816918

添加远程仓库

image-20230302102036968

查看远程仓库:git remote

image-20230302170625700

可以有多个,但是一般是一个

image-20230302102152877

连接

image-20230302102222401

输入gitee的账号及密码登录

image-20230302102241282

保存在:

Windows 凭据里

image-20230302102436778

gitee刷新就有了,这样就可以选择开源了

image-20230302171829653

shh方式连接远程仓库

# 以上方式提交的代码 --->>> 输入了用户名密码 --->>> 才可以提交上去 --->>> 使用的是https的协议提交的代码
	他需要输入用户名和密码
  
# 咱们要使用ssh方案:需要公钥和私钥 --->>> 公司里这种方式多
	私钥在本地保存
  公钥配置到gitee上
  以后在提交代码,不需要其他任何认证,一路绿灯

使用步骤:

	- 生成公钥私钥:https://gitee.com/help/articles/4181
    	-在命令窗口中执行,一路回车
        ssh-keygen -t ed25519 -C "306334678@qq.com" 
        -生成在:C:\Users\Administrator\.ssh  两个文件,一个公钥,一个私钥
  -把公钥,配置在gitee上
  -之前origin对应的地址是 https的,现在要使用ssh提交代码,需要把它删除,再增加成ssh的协议
		git remote remove origin
        git remote add origin git@gitee.com:liuqingzheng/luffy_api.git

刚刚提交的输入了用户名和密码,使用了http协议提交的代码。

使用ssh方案,需要私钥公钥

私钥在本地保存,公钥在gitee上,不要其他任何认证了。

步骤:去凭据删了

image-20230302103027979

做修改去推上远程仓库去

image-20230302103035460

再推到远端,又要输入用户名和密码。

换SSH公钥

image-20230302183020747

添加生成,公钥你可以给任何人,私钥就在你的gitee上

image-20230302183939968

cmd中任意路径下输入

image-20230302190340298

一路回车生成

ssh-keygen -t ed25519 -C "wyf362427@163.com"

image-20230302190501054

两个文件,一个公钥有个私钥。pub公钥,打开复制在gitee上

image-20230302184054435

复制下来

image-20230302103544165

以后就可以免密下载免密提交。

注意之前的origin对应的地址是https的,现在使用的ssh提交代码,现在要换回来。先删后换,去复制SSH网址,跟仓库关联上

image-20230302103815459

先删掉之前的

image-20230302190708694

再添加SSH

image-20230302190749884

以后拉代码推代码都不要输用户名和密码了

协同开发

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

# 仓库管理员,邀请开发者进入,
	邀请的开发者,对这个仓库就有读写权限,他们就可以开发代码,提交
# 我作为开发者,本地没有代码
	1.把代码从远程仓库 clone 下来
  	git clone git@gitee.com:liuqingzheng/luffy_api.git
  2.使用pycharm打开,配置好解释器,安装依赖
  3.开发代码,开发完
  	git add .
    # 设置用户名和邮箱
    git config user.name lqz
    git config user.email 899@qq.com
    
    git commit -m '提交了'
    git push origin master

自己创建了仓库,对仓库有各种权限,要多人开发,在自己的仓库中,能看到我的项目嘛?看不到

我仓库管理员,把张三李四设置为协同开发者

代码搞下来:新建文件中打开用git

image-20230302105058428

git clone SSH网址,克隆下来了

image-20230302105154180

在pycharm中找到位置打开,修改了再提交

image-20230302105405733

.git文件里面 --->>> config, 有局部的用户和密码

image-20230302105623908

image-20230302105657264

全局的在,C盘 --->>> .gitconfig

image-20230302105722181

在gitee里能看到

image-20230302105900277

刚去公司,你的步骤

1.自己注册,hr给你 gitlab 账号和密码
	自己去你的账号里,配置SSH
2.老大会把一个仓库地址给你 【他已经把你加成开发者了】 https ssh
3.clone下来代码
4.使用pycharm打开,配置环境 --->>> 代码运行起来
5.开发代码,本地提交 --->>> push到远端
	git add xxx或者.
  git commit -m'解释'
  git push 库名 分支

冲突解决

出现冲突原因:多人在同一分支开发,分支合并出现冲突

1.多人在同一分支开发冲突

张三:
	git pull origin master
  在requirements.txt,最后一行加入 lpz
  git add .
  git commit -m '解释'
  git push origin master

我:
	在requirements.txt,最后一行加入 lpz
  git add .
  git commit -m '解释'
  git pull origin master
  # 冲突了
  # 解决冲突 冲突的 箭头去掉 阅读代码,选择保留或删除别人或自己的代码,再提交
  # 提交到远程仓库,这是解决后的
  
冲突出现时该怎么做???
	你如果删除被人的代码,你需要跟别人说一声
	<<<<<<< HEAD   我的代码
    print('刘亦菲')
    =======   它的代码
    print('彭于晏')
  >>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5
  
  避免出现冲突???
  	你如果想少出现冲突,勤拉取代码

image-20230302112313553

冲突了如何解决?

image-20230302114245443

避免出现冲突,少出冲突,勤拉取代码

2.分支合并出现的冲突

	-我:
		1 创建dev分支 
			git branch dev
        2 在dev分支的views.py 中第2行加入代码
        
        3 提交到本地仓库
        
        
   -我:
	  1 在主分支的views.py 中第2行加入代码
      2 提交到版本库
        
      3 在主分支合并代码  git merge dev
      4 冲突了,解决冲突
      5 再提交代码,到此结束

image-20230302114809533

image-20230302205604907

image-20230302205624784

线上分支合并

# 线上分支合并
	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了

线上创建分支

image-20230302120702683

image-20230302120740957

image-20230302121037455

线上dev合到master

image-20230302121443471

image-20230302121458685

远程仓库回滚

# 你不要用
# 想要远程的代码,是最初的状态

# 步骤
	1.本地版本回退
  	git reset --hard 版本号
    
  2.强行推到远端
  	git push origin master -f

想远程的代码是最初状态

回到了最初状态,再推到远端推不上去,因为跟之前差了版本所以推不上去,-f强制推。但不要执行,很危险,

image-20230302122659038

image-20230302122908701

勤拉勤提交

posted @ 2023-03-02 21:23  小福福  阅读(44)  评论(0编辑  收藏  举报