路飞项目---day06(git多分支,git远程仓库,ssh方式连接远程仓库,协同开发,冲突解决,线上分支合并,远程仓库回滚)

上节回顾

#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
    
    -使用步骤
    	-在仓库目录下新建.gitignore
        -在里面写忽略文件,文件夹
        	直接写文件名
            /文件名
            /目录名/xx.txt
            /*.txt

今日内容

1 git 多分支

--------------------------------------------

# 为什么要有分支
	-可以保证,主分支的版本都是可以查看的版本
	-我们都在开发分支开发,开发完成,合并到主分支

--------------------------------------------

# 分支操作:

-分支查看
	git branch
-分支创建
	git branch 分支名
	git branch dev
-分支切换
	git checkout dev  # 切换到dev分支
-分支删除
	git branch -d dev   # 注意当前如果在dev分支上是删不掉dev分支的

--------------------------------------------

-合并分支:(重要)

-把dev分支合并入master主分支里面去
	1. 先来到master分支: git checkout master
	2. 执行合并命令:git merge dev   # 把dev合并到我(master)身上


	现在dev分支的增删改的结果就合到master主分支了
	打个比方,在dev里面删掉a文件,add commit过后,切到主分支
	执行dev分支合并到master主分支后,master主分支里面a分支也删掉了
	同理dev分支新增修改文件后,到主分支里面执行合并,主分支里面就也是新增修改后的样子
	# 分支合并可能会出冲突

--------------------------------------------

 # 公司里分支方案:小公司
	master分支,dev分支,bug分支 (三分支结构)
	所有人在dev分支开发,开发完成合并到主分支

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

--------------------------------------------

合并分支示意图
image
.
当切换到dev分支后,我们的增删改操作,都只影响dev分支,
切换到master主分支后,可以看到还是原来的样子
image
image
.
.
.
.
.
.
.

2 git远程仓库


# 把本地的版本提交到远程仓库
# gitee,github,gitlab...
# gitlab的搭建过程:https://zhuanlan.zhihu.com/p/413217715

# 讲课以 gitee作为远程仓库

-------------------------------------------------

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

# 操作步骤:
本地:
    1 在luffy_api 敲git init
    2 设置忽略文件(.gitignore)
    3 git add .
    4 git commit -m '第一次提交'
------提交到了本地版本库-------被版本管理了--------------

#
远程:
    1 远程要创建仓库:gitee上创建仓库,右上角 +
    2 填一些信息,保证仓库是空的

本地:
    1 安装远端提示的步骤操作
    2 设置用户和邮箱  # 要设置和gitee的用户与邮箱一样
    3 咱们是已有仓库  先 cd luffy_api

    4 添加一个远程仓库,远程仓库地址名字叫origin,地址就是网址
        git remote add origin https://gitee.com/tengjincheng/luffy_api.git

    5 把本地的版本库推送到远程仓库
        # 把本地当前所在分支,推送到 origin对应的远程的master上
        git push origin master

    6 需要输入用户名密码,输入一次,以后就不用输入了
          (因为本地保存了:windows里面有凭据管理)

-----------------------------------------
# 查看远程仓库 git remote
# 再添加一个 远程仓库地址名字叫teng的远程仓库 仓库的地址就是后面的网址
git remote add teng https://gitee.com/tengjincheng/luffy_api.git


也就是如果你有好多个远程仓库,那么你本地的仓库代码修改后,要提交到远程
那么你先确定对应的远程仓库的http或者ssh对应的网址是什么
然后执行 git remote add 远程仓库名字 仓库网址
再执行 git push 远程仓库名字 对应的分支名字

------------------------------------------
------------------------------------------
# 补充:
# 如果提交了,再写忽略文件的步骤

luffy.log--->暂存区---》版本库

.gitignore---》写上忽略比如*.log  但是不会被忽略,
只要luffy.log有变化还是会被监控到

先删除luffy.log---》会被监控到---》add,commit---》版本库中已经没有luffy.log

再新建的luffy.log,就不会被管理了

image
.
.
设置和gitee的用户与邮箱一样
image
.
.
windows里面有凭据管理,输入过一次,以后本地仓库代码推到远程仓库,就不要输密码了
image
.
.
.
.
.
.

3 ssh方式连接远程仓库


#  输入了用户名密码------》才可以提交代码上去--------》
#  使用的是https的协议提交的代码-----它需要输入用户名和密码

---------------------------------------------
---------------------------------------------

# 咱们要使用ssh方案:需要公钥和私钥------》公司里这种方式多
	私钥在本地保存
	公钥配置到gitee上
	以后再提交代码,不需要其他任何认证了,密码不用输了


# 生成公钥私钥操作步骤:

-1 在cmd命令窗口中执行 ssh-keygen -t ed25519 -C "965493842@qq.com"
	一路回车
	-生成在:C:\Users\teng'jin'cheng/.ssh  两个文件,一个公钥,一个私钥


-2 把公钥,配置在gitee上-----设置------SSH公钥
	复制公钥粘贴到gitee的SSH公钥里面去
	之前origin对应的地址是 https的,
	现在要使用ssh提交代码,需要把它删除,再增加成ssh的协议
		在命令行里面输入命令
		git remote remove origin  # 先删掉原来的hhtp地址名的origin
		git remote add origin git@gitee.com:tengjincheng/luffy_api.git
# 再建一个ssh地址名的origin


# git remote add teng git@gitee.com:tengjincheng/aaaa.git
# 生成一个地址名叫teng,地址叫git@gitee.com:tengjincheng/aaaa.git
# 的远程仓库
-----------------------------------------

生成公钥
image
.
image
.
.
.
.
.

4 协同开发

# 我[仓库管理员]创建了仓库,我对仓库有各种权限

# 我们要多人开发(张三,李四),张三李四在自己的仓库中,能看到我的项目吗?看不到

# 我[仓库管理员],把张三李四设置为该仓库的开发者,设置完成后,
# 在张三李四的仓库中就能看到这个项目了

-------------------------------------------------

# 仓库管理员,邀请开发者进入
	-邀请的开发者,对这个仓库就有读写权限,他们就可以开发代码,提交


# 开发者,本地没有代码,需要把代码从远程仓库拉下来

1 把代码从远程仓库 clone 下来
	git clone git@gitee.com:tengjincheng/luffy_api.git

2 使用pycharm打开,配置好解释器,安装依赖
3 开发代码,开发完
	git add .
        # 设置用户名和邮箱,设置局部,在.git里面的config里面能看到
	git config user.name lqz
	git config user.email 3@qq.com
    # 如果不设置,就用全局的C:\Users\teng'jin'cheng\.gitconfig

	git commit
	git push origin master   # 开发者贡献代码后再推到远程仓库去!!


-------------------------------------------
-------------------------------------------

# 你刚去公司,你的步骤
1 自己注册,hr给你 gitlab 账号和密码
	-自己去你的账号里,配置ssh

2 老大会把一个仓库地址给你 【它已经把你加成开发者了】  https  ssh

3 clone下来代码,建个文件夹 执行命令  git clone 仓库地址


4 使用pycharnm打开,配置环境-------保证代码能运行起来

5 开发代码,本地提交---》push到远端
	add
	commit
	push

image
.
库管理员邀请开发者进入,可以直接用邮箱添加,也可以通过连接邀请
复制连接发给要邀请的人,别人点击就自动变成开发者了,
当然可以把需要管理员审核的框勾上
image
.
.
.
.
.
.
.

5 冲突解决

# 出现冲突的原因
	1 多人在同一分支开发
	2 分之合并出现冲突

-------------------------------------------

# 首先为什么要pull往下拉代码,因为你一开始从远程仓库克隆的代码
# 在加代码的过程中,可能别人也在一直往master主分支里面贡献代码
# 当你想将代码提交到远程仓库的时候,可能master已经被别人升了好几版了
# 这个时候你的master已经不是最新的了,你推不上去的!!!
# 所以要你先将远程仓库最新的代码pull下来,自动与自己的代码合并
# 然后你才能再往远程的仓库上推!!!

.

# 多人在同一分支开发冲突
-张三:
	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   # 拉最新代码下来自动与自己代码合并
	# 冲突了,代码飘红
	# 解决冲突:
	# 阅读代码,选择保留或删除别人或自己的代码,
	# 去掉飘红的冲突的箭头, 再执行add commit 后
	# 提交到远程仓库 git push origin master
	# 这样你的版本就推上去了!!!

# 冲突出现的样子:你如果要删除别人的代码,你需要跟别人说一声
    <<<<<<< HEAD   我的代码
    print('刘亦菲')
    =======   它的代码
    print('彭于晏')
    >>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5

-----------------------------------------

# 避免出现冲突!!!!!!
	-你如果想少出现冲突,勤拉取代码 git pull origin master
	保证自己代码是最新的

.
.
.

# 冲突出现的原因2,分支合并出冲突
-我:
1 创建dev分支
	git branch dev

2 在dev分支的views.py 中第2行加入代码 print('heihei')

3 提交到本地仓库

--------------------------------------
-我:
1 在主分支的views.py 中第2行加入代码 print('hahaha')
2 提交到版本库

3 在主分支合并代码  git merge dev

4 冲突了,看飘红的地方代码,解决飘红的地方,确认保留谁的或是都要
5 再提交代码,到此结束

----------------------------------------
总结就是:

如果主改了一个地方,支也改了同一个地方,支往主里面合并的时候
这个时候git不知道要保留谁的,就会出冲突提示你,去解决
但是如果主没变化,支增删改操作,支往主里面合并的时候,主也对应的改掉了

同理拉代码与自己代码合并的时候也是一样,你的文件没改,
拉下来的文件改了,一合并你的文件也改了,你的文件没删,
拉下来的文件删了一些代码,一合并你的对应的代码也删掉了
只有你的代码和拉下来的代码都改的同一个地方的时候,
git分不清要保留谁的,就会起冲突,提示你来解决

image
.
.
.
.
.

6 线上分支合并

# 线下分支合并
	git merge dev
---------------------------------

# 线上 分支合并
-gitee上,新建一个dev888分支 ,点点点创建出来

-本地要同步 远程dev888分支
	git pull origin dev888  # 拉下来了,还看不到
	git checkout dev888  # 只有切过去,才看的到

---------------------------------------
---------------------------------------

-在本地的dev888分支上开发代码
	写了代码后
	git add
	git commit  # 提交到本地的仓库了


-再从本地仓库 推到远程dev分支
	git push origin dev888

-master中没有代码,dev中有提交的,现在要线上分支合并
-把远程的dev合并进远程的master
	提交pr 或者叫提交rr
	-在网站上,申请提交pull request
	-领导审核,测试,通过后,点击合并
	-线上dev就合并进线上的master了

gitee上,新建一个分支
image
image
image
.
.
在远程建了一个dev888分支,但在本地还没有,将远程的dev888分支也拉到本地
拉到本地后,要切换到dev888后,才能看到dev888已经存在了
image
image
.
.
把远程的dev合并进远程的master,提交pr,一定是在master主分支下提交pr
image
image
image
image
image
image
.
.

还有一种情况:

还可以本地创建分支,修改代码后,推到远程的分支上去
git branch dev999
git checkout dev999
添加点代码,然后add commit
git push origin dev999   # 也推到远程dev999里面去了

image
image
.
.
.
.
.
.
.
.
.

7 远程仓库回滚

# 不要用!!!

# 想远程的代码,变成最初的状态

--------------------------------------
# 步骤:
1 本地版本回退
	git log                 # 找到要回退的版本号
	git reset --hard 版本号   # 本地先退回到对应版本

2 强行推到远端 (千万别这样搞,会把别人代码搞没了的)
    git push origin master -f

.
.
.
.
.
.
.

作业

# 把你们的项目提交到gitee上,使用ssh连接
# 把你同桌作为协同开发者
# 你同桌给你制造冲突,你来解决


# 上午讲的按照笔记操作一遍

posted @   tengyifan  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示