轻松上手git代码版本管理工具--协同开发-冲突解决、线上分支合并以及使用pycharm操作git

本文介绍了如何使用Git进行协同开发,包括设置远程仓库、克隆代码、处理冲突、线上bug分支解决方案、PR合并以及使用PyCharm操作Git。详细讲解了在遇到冲突时的解决策略,并探讨了Git的常用命令与工作流程。

一、协同开发

多人合作开发一个项目---->多人公用一个远程仓库

以后台项目为例:

git init  # git管理

设置忽略文件.gitignore
在这里插入图片描述

git add .
git commit -m '第一次提交,写完了首页功能'

远程新建一个远程仓库(空)
创建一个origin

git remote add origin git@gitee.com:xxx/xxx.git

把本地仓库代码推送到远程仓库(已经配了ssh,不需要任何认证)

git push origin master

命令加-u表示缓存,以后只需要敲 git push 代指git push origin master

----------------------------------------------以上操作可能是你领导做好了----------------------------------------------

下面操作是我们开发者做的:

克隆代码

git clone https://gitee.com/xxx/xxx.git

开发新功能,比如增加s1.py文件

git add .
git commit -m '新增了s1.py'

对开发者会有限制---->1、用户名密码 2、对仓库有写权限

git push origin master

推送到远程(在提交之前一定要先拉一下代码,保证本地版本库跟远程保持一致,是最新)

git pull origin master  # 以后只要提交代码,都要拉一下,没事就拉一下,保证出现冲突概率小
git push origin master

二、线上bug分支解决方案

场景:
主功能以上线,现在服务器运行版本是v1.1
开发着新功能---->dev分支开发

忽然发现有bug---->新建一个bug分支(基于master分支建立bug分支)

  • 改bug
  • 把变更提交到bug分支---->测试---->合并到master---->v1.1.1

新功能开发完了---->要合并到master分支---->v1.2
dev分支和master分支合并,然而可能会有冲突,也可能没有

1.解决bug,开发新功能,不出冲突的情况
dev分支开发新功能:

git branch dev
git checkout dev  # 本地建立dev分支,切换到了dev分支--远程没有
# 可以远程建立分支,同步到本地
# 本地建分支,同步到远程
git push origin dev  # 把本地dev分支推到远程
# 开发新功能
vi ss1.py
git add .
git commit -m 'dev开发了用户功能'
git push origin dev   # 把本地dev的更改提交到远程dev
# 继续开发新功能
vi ss1.py  # 加入了一行
git add .
git commit -m 'dev开发了订单'
git push origin dev   # 把本地dev的更改提交到远程dev

测试发现线上系统有bug,你领导让你去修复bug:

# 基于master建一个bug分支
git checkout master
git branch bug
git checkout bug  # 切换到bug分支
vi ss2.py  # 写点代码
git add .
git commit -m 'bug分支修复了'
# 本地bug合并到master
git checkout master
git merge bug   # 不会出冲突
git push origin master # 把本地master推送到远程master,最新v1.11版本发布
# 切回到dev继续开发
git checkout dev
# 又增加了代码
# 把dev合并到master
git checkout master
git merge dev  #不会冲突
git push origin master   # 不会冲突,最新v1.2版本发布

2.解决bug,开发新功能,出冲突的情况

# 把所有分支都删除(重新演示一遍)
git branch dev
git checkout dev
vi common.py  # 写入代码
git add .
git commit -m 'dev增加了common.py'
# 线上出bug
git checkout master
git branch bug
git checkout bug
vi common.py  # 写入代码
git add .
git commit -m 'bug分支增加了common.py'
# 把bug更改合并到master上
git checkout master
git merge bug    # 不会冲突
# 把dev分支合并到master(冲突)
git merge dev   # 出冲突
# 解决冲突(该删删,该留留)
git add .
git commit -m '解决冲突'
git push origin master

示意图:
dev分支合并到master分支
在这里插入图片描述
基于分支的线上bug修复(开发新功能,出现bug)
在这里插入图片描述

三、冲突解决

1.多人在同一分支协同开发导致冲突
张三在s1.py第二行增加了一句
print(‘hello world’)
提交到远程仓库

李四在本地,没有拉代码,在s1.py第二行增加了一句
print(‘hello world’)

从远程仓库拉取代码,就会出现冲突

<<<<<<< HEAD   # 开始,下面是你的代码
print('aaasdasd')
=======        # 你的代码结束,下面是别人代码
print('666')
>>>>>>> 2e8da99c75814f197f7909d1cf7816adfc4ccd81 # 别人代码结束,版本号

如果冲突是同一个功能,跟同事商量,保留某一个人的
如果冲突不是同一个功能,保留俩人代码

git add .
git commit -m '解决冲突'
git pull origin master  # 正常来讲不会有冲突(存在冲突问题)
git push origin master

2.分支合并导致冲突
操作见“解决bug,开发新功能,出冲突的情况”

四、线上分支合并(pr)

master分支和dev分支(本地和远端都有)
所有人在dev分支开发---->出冲突
把dev合并到master上:本地合并,提交master
在线上完成dev合并到master---->提交一个pull request(pr)

步骤:
1.本地创建dev,提交到远程

git branch dev
git checkout dev
git push origin dev

2.在common.py中加入了代码,提交到远端的dev分支

3.在线上完成分支合并
在这里插入图片描述
在这里插入图片描述
4.测试,领导要审查代码---->代码review
在这里插入图片描述
都通过,要合并分支(合并,扁平化:变基)
在这里插入图片描述
我们就只需要提交一个pr即可,后续领导做。

五、远程仓库回滚

本地恢复到最初状态:

git checkout master
git reset --hard 版本号

提交到远端(强制提交):

git push origin master -f  # 一般不要用

六、使用pycharm操作git

只要是命令操作,都可以使用pycharm点点完成。
配置git(前提)
在这里插入图片描述
git clone
在这里插入图片描述
在这里插入图片描述
远程库配置
在这里插入图片描述
在这里插入图片描述
git add
在这里插入图片描述
git commit
在这里插入图片描述
在这里插入图片描述
git pull
git push

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
与版本库比较在提交
在这里插入图片描述
在这里插入图片描述
分支操作(切换分支、创建删除分支)
在这里插入图片描述

七、面试常问的几个问题

0 出现冲突了么?怎么解决的?
如果冲突是同一个功能,跟同事商量,保留某一个人的
如果冲突不是同一个功能,保留俩人代码

1 什么是变基?git rebase
扁平化合并,为了让日志更简洁
-多个记录整合成一个记录
-解决分支合并分叉问题

2 git pull和git fetch有什么区别?
git pull = git fetch(把代码拉下来)+ merge(合入操作,这里才可能有冲突)

3 你知道git工作流(gitflow)吗?
知道,但是我们公司没用,我们使用的是master-dev-bug分支方案

重点总结:

1 GIt:版本管理软件,分布式,进行版本管理,协同开发,合并代码

2 gitee,github,gitlab,git
gitee,github,gitlab :git远程仓库

3 win,macos,linux
win,macos官方下载软件,一路下一步
linux:yum install git

4 工作流程
工作区,暂存区,版本库,远程仓库

5 常用命令
git init
git status
git log
git reflog :回退,删除所有的版本都显示
git add .
git commit -m '注释'
git push origin master
git pull origin master
git clone 地址

6 忽略文件
.gitignore

7 分支管理
-主分支,dev分支,bug分支
git branch
git branch dev
git checkout dev
git branch -d dev
git merge dev

8 远程仓库
gitee,gitlab
git remote add 远程仓库(https,ssh)
	-https:用户名密码
	-ssh:公钥私钥
		-对称加密:加密和解密用同一个秘钥
		-非对称加密:加密用公钥,解密用私钥
		-生成公钥私钥:家路径  .ssh
git push origin master
git pull origin master
没事多pull代码,一个功能提交一次

9 协同开发
1.大家都接入同一个远程仓库的项目
把你加成开发者,给你一个远程仓库地址
	-git clone 远程地址
	-基于它开发,推送到远程
本地项目骨架搭好,远端建立空仓库

2.线上bug,分支解决方案

3.冲突解决
-多人在同一分支开发
-分支合并出现冲突

4.线上分支合并(pr)
pull request

5.远程仓库回滚

6.pycharm操作git
之前所有的命令,都可以点击完成

7.面试题
git rebase:
	-变基:多次提交合成一次
	-避免分支合并的分差
gitflow:git 工作流,一种分支方案
git pull 和git fetch的区别

8.为开源软件贡献代码
-在开源代码点fork---》你的仓库就会有这个代码
-写代码,改bug,加功能
-提交pull request
内容概要:本文档围绕六自由度机械臂的ANN人工神经网络设计展开,涵盖正向与逆向运动学求解、正向动力学控制,并采用拉格朗日-欧拉法推导逆向动力学方程,所有内容均通过Matlab代码实现。同时结合RRT路径规划与B样条优化技术,提升机械臂运动轨迹的合理性与平滑性。文中还涉及多种先进算法与仿真技术的应用,如状态估计中的UKF、AUKF、EKF等滤波方法,以及PINN、INN、CNN-LSTM等神经网络模型在工程问题中的建模与求解,展示了Matlab在机器人控制、智能算法与系统仿真中的强大能力。; 适合人群:具备一定Ma六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)tlab编程基础,从事机器人控制、自动化、智能制造、人工智能等相关领域的科研人员及研究生;熟悉运动学、动力学建模或对神经网络在控制系统中应用感兴趣的工程技术人员。; 使用场景及目标:①实现六自由度机械臂的精确运动学与动力学建模;②利用人工神经网络解决传统解析方法难以处理的非线性控制问题;③结合路径规划与轨迹优化提升机械臂作业效率;④掌握基于Matlab的状态估计、数据融合与智能算法仿真方法; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点理解运动学建模与神经网络控制的设计流程,关注算法实现细节与仿真结果分析,同时参考文中提及的多种优化与估计方法拓展研究思路。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妍婧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值