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

相关文章

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效