6git----------------Git多人开发协同工具-------------------全栈式开发46

本文主要是介绍6git----------------Git多人开发协同工具-------------------全栈式开发46,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Git多人开发协同工具

  • 一、Git是什么
    • (一)工作区
        • `1.指定管理的文件夹`
        • `2.自动检测新文件和有变动文件`
        • `3.放到暂存区`
    • (二)暂存区
        • `1.修改文件回到工作区`
        • `2.提交到版本区`
    • (三)版本库
        • `1.切换版本`
        • `2.修改提交版本`
        • `3.删除已经提交的文件`
  • 二、Git中的分支
  • 三、GitHub、码云上传下拉代码
    • (一)实现单人工作步骤
    • (二)实现gitflow----多人协同开发工作流
  • 四、场景实现

一、Git是什么

引入

  • 在进行功能项目开发的时候,我们想切换版本,并且实现多人开发的时候怎么处理呢?
  • 我们有软件类似于 QQ、office 实现多人共享,也有版本控制:类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据。但我们有更方便的开发人员用的工具git
  • 为什么要做版本控制:要保留之前所有的版本,以便回滚和修改。
    在这里插入图片描述

定义

  • Git 是一个分布式的版本控制软件。

安装 Git

  • Git 地址:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

git管理下文件状态
在这里插入图片描述

基础命令

  • git status:查看目录下的文件状态,文件有三种状态:工作区、暂存区、版本库。
    • 在工作区:除了配置文件和指定不需要管理的文件都会被自动管理,管理起来的文件是在git status会显示红色
    • 在暂存区:中介点,在git status会显示绿色
    • 在版本库:此时文件已经提交了,所以该文件在git status是不存在的。
      查看目录下的文件状态,共三个状态 工作区(红或白)、暂存区(绿)、版本库(无)
  • git log:查看版本提交状态
    • git log --oneline 一行查看
  • history :查看历史命令

常见问题

  • 刚初始化的文件夹需要配置个人信息,否则无法提交版本
  • 这里设置的是全局global的配置信息。一般设置全局就行,项目local 全局global 系统system
# 没有配置的提示*** Please tell me who you are.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
  • git 出现中文乱码解决方法
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8

git配置文件

  • git 配置文件都是隐藏文件,一般都不修改,修改也只是全局和项目
  • 因为配置文件是隐藏文件,所以并不会被git检测管理起来
    • 项目配置文件路径:项目/.git/config
    • 全局配置文件路径:~/.gitconfig
    • 系统配置文件路径:/etc/.gitconfig

(一)工作区

1.指定管理的文件夹
  • 进入要管理的文件夹,右键 Git Bash Here,进入git
  • git init 初始化文件夹,会生成git配置文件,是隐藏文件夹,而且会变成master主线
    在这里插入图片描述
2.自动检测新文件和有变动文件

创建新文件/有变动文件
- touch a.py 等方法创建或vim编辑文件,查看文件状态git status
- 已经被git检测管理了
在这里插入图片描述

如何取消git管理某个文件

  • 因为有些文件如配置文件,如果上传到公众平台,有些关键的信息可能会暴露,所以我们需要将部分文件取消自动检测
    #新建文件.gitignore
    touch .gitignore
    # 将需要取消管理的文件名写在里面,支持正则、取反 、文件夹
    vim .gitignore
    # 例如*.txt取消所以txt文件
    # 例如 !demo.py 除了demo.py文件其他都取消管理
    # 例如files/ 该文件夹下的文件都取消管理
    
3.放到暂存区
  • git add 文件名
  • git add .提交所有文件
  • 文件变绿说明就已经放到暂存区
    在这里插入图片描述

(二)暂存区

1.修改文件回到工作区

在这里插入图片描述

2.提交到版本区
  • git commit -m ‘描述信息’
    在这里插入图片描述

(三)版本库

1.切换版本

回滚至之前/之后版本

  • git reset – hard 版本号 ## 结合git log 查看版本号
2.修改提交版本

先进入修改页面

  • git rebase -i 要修改的上一个的版本号,可多条
  • git rebase -i HEAD~2 修改最近的几条记录
# 修改的命令Commands:# p, pick <commit> = 默认# r, reword <commit> = 编辑描述信息# e, edit <commit> = use commit, but stop for amending# s, squash <commit> = 合并版本# f, fixup <commit> = like "squash", but discard this commit's log message# x, exec <command> = run command (the rest of the line) using shell# d, drop <commit> = remove commit# l, label <label> = label current HEAD with a name# t, reset <label> = reset HEAD to a label# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]# .       create a merge commit using the original merge commit's# .       message (or the oneline, if no original merge commit was# .       specified). Use -c <commit> to reword the commit message.

修改描述信息

  • 将pick -> r -> 修改描述信息wq 退出
  • 或者直接git commit --amend 进入最新一条,只能修改描述

合并版本

  • 将后一个pick -> 改成s -> 修改合并后的描述wq 退出
    在这里插入图片描述

放弃修改xxx|REBASE-i

  • git rebase --abort 退出修改
3.删除已经提交的文件
git rm 文件名
git commit -m ‘描述信息’

二、Git中的分支

  • 分支可以给使用者提供多个环境,意味着你可以把你的工作从开发主线分离开来,以免影响开发主线
  • 默认是master主线,实际生产情况不可能直接在master进行代码开发
    在这里插入图片描述

查看所有分支

  • git branch -a

创建分支

  • git branch 分支名字

切换分支

  • git checkout 分支名称
  • git checkout -b bbz创建分支并切换

分支合并(可能产生冲突)

  • git merge 要合并的分支

删除分支

  • git branch -d 分支名称

三、GitHub、码云上传下拉代码

  • GitHub、码云作用:实现本地代码到上传到中心,这样无论在家还是在公司都可以对代码进行修改,同时还能实现多人共同修改

(一)实现单人工作步骤

注册账号、创建仓库

  • 需要注册 github /码云账号,并创建远程仓库,然后再执行如下命令,将代码上传到 github/码云。
    在这里插入图片描述

设置远程提交方式

  • git remote add 操作名字 远程仓库地址
    • eg:git remote add origin https://gitee.com/wyt33/weather-forecast.git
  • 删除远程提交方式
    • git remote rm origin

上推代码

  • git push -u origin 分支名字
  • 如果新建项目有自带的文件可能会导致上传失败,可以直接强制推,会直接覆盖项目git push -f origin master
    在这里插入图片描述

下拉代码

  • git pull origin 分支名字
  • 下拉所有
    • git clone 远程创库地址
    • 初次在公司新电脑下载代码

解决推送代码每次都要输入用户名和密码

  • 创建ssh公钥
    # 在git bash 终端里输入
    ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # 将邮箱替换成码云注册邮箱。
    # 回车三次即可生成sshkey
    # 查看 public key,并把他添加到码云(Gitee.com)
    cat ~/.ssh/id_rsa.pub # 将ssh-rsa到邮箱部分的内容复制出来
    # 添加用户sshkey,在github或码云通过个人>>设置,添加ssh公钥
    
  • 验证是否绑定成功
    ssh -T git@git.oschina.net # 返回Welcome to Git@OSC, yourname!表示添加成功。
    
  • 使用
    # 以后的https链接就换成成ssh协议认证
    git remote add origin git@github.com:xxx/xxx.git
    # 如果之前远程提交设置的是http链接需要改变成ssh协议
    git remote rm origin # 将远程的提交方式删除,然后添加新的提交方式
    git remote add origin git@github.com:xxx/xxx.git
    

(二)实现gitflow----多人协同开发工作流

在这里插入图片描述

第一步

  • 项目初始化,本地提交

第二步

  • 通过码云创建了一个组织
  • 在这个组织下面创建了一个仓库
  • 在这个仓库中邀请开发成员

第三步

  • 创建分支dev
  • 创建 开发成员分支(不一定)
  • 如果开发人员A,提交了pull request, 接下来要做code review
  • 将开发人员的分支合并到 dev分支

第四步

  • 在本地拉取最新的代码 dev 分支上的代码拉取下来
  • 分支合并
  • 切换到master分支

第五步

  • 功能上线
  • 提交到码云上

四、场景实现

重命名

  • git mv 原先的文件名字 修改之后的文件名字
  • 直接修改而没有修改git管理的文件的话会出错

初次在公司新电脑下载代码

  • 在管理的文件地方,不需要建文件夹,直接右击git bash here,git clone 远程创库地址,就可以将代码文件夹全部下拉
    git clone 远程创库地址
    

bug修复

  • 创建bug支线,修改源文件,上传然后主线合并修改的文件,就可以将版本上传成功了
    	# 创建并切换到分支
    git branch -b bug# 在分支修改源文件,修改好了就commit# 切换主线
    git checkout master# 合并分支
    git merge bug# 删除分支
    git branch -d bug
    

拓展新功能

  • 在开发支线新增文件,提交后由主线合并提交到版本库
  • 	# 创建并切换到分支
    git branch -b dev# 在分支创建新文件,修改好了就commit# 切换主线
    git checkout master# 合并分支
    git merge dev
    

忘记上推

  • 如果白天忘记上推,晚上换了台电脑继续工作,不可能把白天的全部码一遍,那么继续对文件修改并上推,第二天白天换到原来的电脑,那么昨天本机白天的代码和晚上写的代码就会冲突
    在这里插入图片描述
  • 直接对文件修改就行,把两段代码合并,删掉提示行,然后再提交文件就正常了
    在这里插入图片描述

这篇关于6git----------------Git多人开发协同工具-------------------全栈式开发46的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/329927

相关文章

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF