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

相关文章

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

使用Java编写一个文件批量重命名工具

《使用Java编写一个文件批量重命名工具》这篇文章主要为大家详细介绍了如何使用Java编写一个文件批量重命名工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景处理1. 文件夹检查与遍历2. 批量重命名3. 输出配置代码片段完整代码背景在开发移动应用时,UI设计通常会提供不

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

详解Python中通用工具类与异常处理

《详解Python中通用工具类与异常处理》在Python开发中,编写可重用的工具类和通用的异常处理机制是提高代码质量和开发效率的关键,本文将介绍如何将特定的异常类改写为更通用的ValidationEx... 目录1. 通用异常类:ValidationException2. 通用工具类:Utils3. 示例文

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE