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

相关文章

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结