最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

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

来源:博客园
目录
  • 一、git 多分支开发
    • git分支管理
    • 分支操作
    • 公司里使用的分支方案
  • 二、git远程仓库
    • 把我们写了一部分的luffy项目上传到gitee
      • 上传项目到本地版本库
      • 上传项目到远程仓库
    • 需要被忽略管理的文件如果已经提交了如何修改
  • 三、ssh方式连接远程仓库
    • 操作流程
    • remote源操作
  • 四、协同开发
    • 协同开发介绍
    • 从远程仓库获取代码
    • 公司中的git操作流程介绍
  • 五、冲突解决
  • 六、线上分支合并
      • 版本库间的通信
  • 七、远程仓库回滚
  • 八、作业

一、git 多分支开发

git分支管理

为什么要有分支?


(资料图)

  • 可以保证,主分支的版本都是可以查看的版本
  • 我们都在开发分支开发,开发完成,合并到主分支
  • 如果出现一个特殊任务(敏感任务),与正常业务关系不紧密,甚至可能大的影响正常的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,进入到路飞项目的文件夹内,这里我先进入了后端项目的文件夹中

步骤二

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

步骤三

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

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

步骤四

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

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

git add .

步骤五

提交代码到本地版本库中

git commit -m "第一次提交"

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

上传项目到远程仓库

步骤一

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

步骤二

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

步骤三

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

步骤四

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

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

步骤五

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

git push origin master

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

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

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

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

三、ssh方式连接远程仓库

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

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

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

操作流程

步骤一

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

步骤二

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

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

步骤三

执行命令生成公钥私钥

ssh-keygen -t ed25519 -C "976863429@qq.com" 

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

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

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

步骤四

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

步骤五

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

git remote remove origingit remote add origin git@gitee.com:cengmuduoqing/luffy_api.gitgit push origin master

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

git remote add zzh git@gitee.com:cengmuduoqing/luffy_api.gitgit push zzh master

remote源操作

1)查看仓库已配置的远程源>: git remote>: git remote -v2)查看remote命令帮助文档>: git remote -h3)删除远程源>: git remote remove 源名eg: git remote remove origin4)添加远程源>: git remote add 源名 源地址>: git remote add orgin git@gitee.com:doctor_owen/luffyapi.git5)提交代码到远程源>: git push 源名 分支名6)克隆远程源>: git clone 远程源地址
  • 1)通过克隆方式连接远程源,默认远程源名就叫origin;所以主动添加远程源来连接远程仓库,源码也用origin
  • 2)本地一个仓库只需要和远程一个源进行同步,所以只需要连接一个远程源,如果还想把本地代码同步给第三个平台,那么可以通过主动添加远程源来连接第三个平台的远程仓库,此时的源码就不能再叫origin了,比如online都可以
  • 3)pull和push都可以提供选择不同的源码,和不同的远程仓库交互

四、协同开发

协同开发介绍

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

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

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

从远程仓库获取代码

步骤一

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

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

git clone git@gitee.com:cengmuduoqing/luffy_api.git

步骤二

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

步骤三

开发代码并保存

步骤四

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

git add .git commit -m "版本信息"git push origin master

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

# 设置用户名和邮箱git config user.name lqzgit config user.email 3@qq.com

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

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

公司中的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 再提交代码,到此结束              

六、线上分支合并

版本库间的通信

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

八、作业

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

关键词: 执行命令 操作流程