4_Git

news2024/9/20 12:41:34

一、Git学习网站

  • 廖雪峰大神 Git 教程
  • Git-flow 包教不包会
  • 阮一峰-常用 Git 命令清单

二、Git简介

1.Git是什么

分布式版本控制系统

2.版本控制

3.集中式 vs 分布式

4.Git简史

5.工作区、暂存区、版本库

  • 流程

    工作区:写代码 --> git add --> 暂存区 --> git commit --> 版本库

  • 工作区: 就是我们能看见的写代码的地方
    • git管理的代码: 默认都是git管理对象
    • git忽略的代码设置,如下操作:
      1. 项目的根目录新建一个文件: .gitignore
      2. 哪些内容要忽略,就在里面书写路径,我要忽略node_modules文件夹,就在里面写上node_modules
  • 暂存区: 就是形成一个历史版本
  • 本地仓库: 历史版本的存放区域

6.远程代码托管平台

  • GitHub
  • Gitee - 基于 Git 的代码托管和研发协作平台
  • gitlab

7.下载安装

  • 下载

    • 官网下载地址

    • 国内淘宝镜像下载地址

  • 安装

    双击, 一直下一步

  • 检测

    • 在任意位置打开命令行

      git --version
      
    • 在任意位置点击鼠标右键,出现: Git Bash Here

    • 就表示安装成功!

三、Git命令行操作

1.本地仓库初始化

git init

2.配置用户信息

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

3.基本命令操作

  1. 状态查看

    git status
    
  2. 添加到暂存区

    git add .
    
  3. 提交到本地仓库

    git commit -m "这次提交的日志"
    
  4. 查看历史记录

    git log
    
  5. 版本回退与前进

    • 查看所有历史版本

      git reflog
      
    • 恢复指定版本

      git reset --hard 版本号
      
  6. 撤销修改

    • 工作区撤销修改

      git checkout -- 文件名
      
    • 暂存区修改

      git reset HEAD 文件名
      

4.分支操作

4.1 查看分支

  • 查看本地仓库的分支情况

    git branch
    
  • 查看远程仓库的分支情况

    git branch -r
    
  • 查看本地与远程的所有分支情况

    git branch -a
    

    结果中带*的表示当前分支

4.2 创建分支

  • 创建分支

    git branch 分支名
    
  • 创建分支,并切换到新创建的这个分支上

    git checkout -b 分支名
    

4.3 切换分支

git checkout 分支名

注意:本地如果不存在这个分支,则会把远程的给弄下来,如果远程也没有,就报错

4.4 合并分支

git merge 要合并的分支名称 -m "新版本的描述"

4.5 删除分支

git branch -d 分支名

5.远程分支(代码托管平台)

  1. 创建远程库

  2. 远程库与本地关联

    git remote add 别名(默认origin) 远程仓库地址
    
  3. 查看本地库与远程库的关联信息

    git remote -v
    
  4. 克隆远程库

    git clone 远程仓库地址
    
  5. 上传远程分支

    git push -u 远程仓库名 本地分支名:远程分支名
    
  6. 删除远程分支

    git push 远程仓库名 --delete 要删除的分支名
    
  7. 拉取远程分支

    git fetch 远程仓库名 远程分支名:本地分支名
    
  8. 合并远程分支

    git merge 本地分支名 -m 新版本的描述
    
  9. 拉取远程分支与本地当前分支合并

    git pull 远程仓库名 远程分支名
    
  10. 拉取远程分支与本地某个分支合并

    git pull 远程仓库名 远程分支名:本地分支名
    
  11. 团队间协作开发

  12. 跨团队协作开发

    1. 将这个开源的项目 fork 一份到我的远程仓库
    2. clone 我 fork 的这个项目到本地
    3. 写好代码推送到自己的远程
    4. 创建 pull request
  13. ssh免登录

    1. 需要先查看本地电脑是否有 ssh 相关的东西 (用户目录下是否有 .ssh 的文件夹)。有就先删除吧。

    2. 创建 ssh key

      ssh-keygen -t rsa -C "邮箱地址"
      
    3. 接着在 用户目录下找到 .ssh 文件夹中的 id_rsa.pub 这个文件

    4. 复制 id_rsa.pub 中的内容

    5. 去远程托管平台上添加 ssh

      1 这时克隆项目时就可以直接选择使用 ssh 的方式

      2 先将本地的https的连接方式给删除,换成 ssh 的连接方式

四、Git工作流

1.集中式

大家全部都在一个分支上写代码master

2.git flow

不同分支用来干不同的操作

3.forking

fork pull request 这套操作

五、Git基本操作(工作场景)

  1. 接到新的需求要你开发。

  2. 基于主干分支(master、main、test)创建一个需求分支 (store-xxx)

    a. 远程平台上创建
    b. 本地创建

  3. 拆分任务
    a. 任务1:静态页面编写 2h
    b. 任务2:逻辑联调 2h

  4. 编写任务1

  5. 提交任务1 git commit -m ‘任务1 done’

  6. 编写任务2

  7. 提交任务2 git commit -m ‘任务2 done’

  8. 晚上下班前,都提交上去 git push

  9. 第二天,继续做需求,还是使用 store-xxx 这个分支
    a. 如果这个需求,就你一个人完成,也就是说 这个 store-xxx 分支,是你一个人玩得,就不用更新
    b. 如果这个需求,是多个人完成,大家都在 store-xxx 分支上编写代码的话,需要 git pull 一下。

  10. 编写任务5

  11. 提交任务5 git commit -m ‘任务5 done’

  12. 提交合并请求。

六、Git分支合并操作(工作场景)

1.本地操作合并

  1. 收到同事通知,要将 A 分支 合并到 Master 分支
  2. git status查看当前工作空间是否干净。干净则往下操作,否则先处理干净
  3. git checkout master切换到需要被合并的合并上 ,Master分支
  4. git pull拉取一下最新的代码
  5. git merge origin/A合并分支,将 A 分支合并到当前所在分支
  6. 可能会出现冲突,如果有冲突就解决
    a.img
    b. git status查看冲突的文件是什么
    c. 找同事,一起来看这个冲突该如何解决
    d. 解决完之后,需要重新add commit push
  7. git push推送到远程。
  8. git branch -d A删除分支。同时通知同事,合并完成,你可以删除本地的分支了。

master a - b
feature-loginlogin a - b - c
wq a - b - d

feature-loginlogin => master
master a - b - c

wq => master a - b - c - d

2.远程操作合并

pull requests

七、合并分支时解决冲突

  1. 原因

    两个分支在同一个代码上的某一个位置做了修改,这些 git 合并时不知道该听那个分支的。

  2. 解决方案

    1. 找到有冲突的文件
    2. 删除这个文件中的特殊标记
    3. 找到相应的开发人员去商量到底如何处理这个情况,用你的,还是用我的,或者两个都保留
    4. git add
    5. git commit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp项目搭建 请求配置

uniapp项目搭建 请求配置请求配置utils/request/index.js代码分析几个常用的方法配置文件的引入编写接口,并测试调用每个人项目用的请求接口不一样,这里就看下实现思路就好了 请求配置 在 uniapp 当中有封装好的 request 插件, request插件地址 在项目的 utils/request/index.…

【华为设备命令最全大合集,快快收藏】

01 华为交换机基础配置命令 01 常用命令视图 02 创建VLAN //用户视图,一般display命令查看信息比较多。 system-view //准备进入系统视图。 [Huawei]vlan 100 //创建vlan 100。 [Huawei-vlan100]quit //退回系统视图。 03 将端口加入到vlan中 [Huawei] interf…

数字源表如何助力miniled光电性能测试

概述 LED在光电子领域中是一种能将电能转化为光能的半导体二极管,包括砷化镓LED(红光)、磷化镓LED(绿光)、氮化镓LED(蓝光)等。Mini LED,则是指尺寸为50-200微米的LED芯片(参照《Mini LED商用显示屏通用技术规范》的定义),介于小间距LED和Mic…

软件配置 | mac M1 上 imagemagick 的安装

本文简单记录在 mac M1 上安装 Imagemagick 的过程及其简单使用。 2022 / 11 / 16 软件配置 | mac M1 上 imagemagick 的安装安装brew1.2.make参考链接ImageMagick 是免费软件,以随时可用的二进制分发版或源代码形式提供,您可以在开放和专有应用程序中使…

02-Linux

1 Linux文件管理 1.1 touch命令 在Windows系统中,我们如果想创建一个文本文档或者word文件的时候,通常的做法是 鼠标右键---新建---文本文档,这样的话,我们就成功的创建了一个文件,而在Linux中,我们可以通…

好代码 ,坏代码:你的代码和其他工程师的代码

如果你以团队一员的身份编写代码,你所编写的代码很可能建立在其他工程师编写的代码层次的基础上,其他人也可能以你的代码为基础构建新的代码层次。如果你在工作期间解决了各种各样的子问题,并将其分解为清晰的抽象层次,其他工程师…

WebDAV之葫芦儿·派盘+百灵创作

百灵创作 支持webdav方式连接葫芦儿派盘。 心血来潮想写故事,于是进入了创作、码字状态,不写不知道一码吓一跳,这也太累了吧。 基于创作不易,码字辛苦。对文字,我始终怀有尊重与敬畏之心。不知有什么创作码字软件可以解决这些问题,提高写作效率呢?并且防止写好的文章…

spring框架源码十六、BeanDefinition加载注册子流程

BeanDefinition加载注册子流程时序图时序图1step0、new ClassPathXmlApplicationContextstep1、ClassPathXmlApplicationContext#ClassPathXmlApplicationContext(java.lang.String)step2、ClassPathXmlApplicationContext#ClassPathXmlApplicationContext(java.lang.String[],…

初识类和对象

即使是初学者应该对类和对象也不算陌生吧,是不是因为老有些人动不动就:你知道伐,Java是一款面向对象的语言……阿巴阿巴……我的老师告诉我Java难的一部分就是如何把一个对象给抽象出来,那阿涛不才,今天就先来会一会这…

超市售货统计程序

代码price{"牛奶":5.5,"可乐":6.7,"饼干":10,"糖果":10} day1{"day":"11.23","牛奶":10,"可乐":10,"饼干":10,"糖果":10} day2{"day":"11.24",&quo…

机器学习笔记之条件随机场(六)学习任务介绍(Learning)

机器学习笔记之条件随机场——学习任务介绍引言回顾:条件随机场求解边缘概率分布场景设计前向后向算法关于条件随机场的学习任务关于模型参数λ\lambdaλ求解梯度梯度求解梯度的简化过程总结引言 上一节介绍了使用前向后向算法求解基于链式条件随机场中某隐状态的边…

MySQL—优化数据库

优化MySQL数据库是数据库管理员的必备技能,通过不同的优化方式达到提高MySQL数据库性能的目的。本节将介绍优化的基本知识。 MySQL数据库的用户和数据非常少的时候,很难判断一个MySQL数据库性能的好坏。只有当长时间运行,并且有大量用户进行…

GoogLenet网络详解

GoogLenet VGG在2014年由牛津大学著名研究组vGG (Visual Geometry Group)提出,斩获该年lmageNet竞赛中Localization Task (定位任务)第一名和 Classification Task (分类任务)第二名。Classification Task (分类任务)的第一名则是GoogleNet 。GoogleNet是Google研发…

vue-router 使用与原理分析,测试结果来啦

简介 Vue Router 是Vue.js的官方路由。与Vue.js核心深度集成,让用Vue.js构建单页应用(SPA)变得更加简单。 对于开发和维护管理后台类的前端项目,页面结构和组合可能非常复杂,所以正确的理解和使用Vue Router就显得尤为…

[附源码]SSM计算机毕业设计ssm新冠疫苗预约接种信息管理JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Spring事务管理

认识事务 可以把一系列(多条sql语句)要执行的操作称为事务,而事务管理就是管理这些操作要么完全执行,要么完全不执行(很经典的一个例子是:A要给B转钱,首先A的钱减少了,但是突然的数…

EMQX数据流转MySQL踩坑日记:EMQX VER 4.2.3

总结: (0)数据库报错问题,详细参考这篇文档,链接,ln -s 源 目标 https://blog.csdn.net/weixin_42110159/article/details/118945136 (1)数据库建立数据,要注意大小写&am…

数字化开采|AIRIOT智慧矿山自动化生产解决方案

由于矿山地形复杂,生产自动化水平低,安全监管技术落后,事故频发等很多因素对煤矿开采技术提出了数据化、可视化、智能化的要求。通过目前的煤矿开采现状可以发现煤矿开采过程中,在生产、监管、巡检、安全、效率等方面还存在许多有…

图文详解Linux基础经典教程(08)——CentOS安装MySQL数据库

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 概述 之前,我们在CentOS中安装了JDK、Tomcat;接下来,我们在CentOS中采用YUM的方式安装MySQL5.6数据库。 安装前准备工作 在此&#xf…

面试常用算法归纳

最长子串、子序列 先说明下子串和子序列的问题:对于s “pwwkew"来说,其中一个子串为"wke”,而"pwke" 是一个子序列。 子序列:一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改…