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

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并