和Git相关的一些问题

news2024/12/30 2:35:05

1. Git拉取项目的两种方式以及区别

方式

  1. Http:通过http方式的clone项目,不需要在git上手动绑定ssh,只需要在clone的时候输入账号,密码即可;
  2. SSH:通过ssh方式clone项目,需要手动绑定ssh密钥

区别

  1. Http方式适合匿名访问,适合开源项目,可以方便被别人克隆和读取(但没有push权限);
  2. SSh方式适合内部项目开发,只要配置了SSH key即可自由实现clone和push操作。

2. git rebase和git merge

git rebase和git merge命令处理的是同样的问题,这两个命令都用于把一个分支的变更整合进另一个分支——只不过他们达成同样目的的方式不同。

 现在,假设在 master 分支上的新提交与你正在开发的 feature 相关。需要将新提交合并到你的 feature 分支中,你可以有两个选择:merge 或者 rebase。

Merge 方式

最简单的方式是通过以下命令将 master 分支合并到 feature 分支中:

git checkout feature
git merge master

这会在 feature 分支中创建一个新的 merge commit,它将两个分支的历史联系在一起,请看如下所示的分支结构:

使用 merge 是很好的方式,因为它是一种 非破坏性的 操作。现有分支不会以任何方式被更改。这避免了 rebase 操作所产生的潜在缺陷(下面讨论)。

另一方面,这也意味着 feature 分支每次需要合并上游更改时,它都将产生一个额外的合并提交。如果master 提交非常活跃,这可能会严重污染你的 feature 分支历史记录。尽管可以使用高级选项 git log 缓解此问题,但它可能使其他开发人员难以理解项目的历史记录。

Rebase 方式

作为 merge 的替代方法,你可以使用以下命令将 master 分支合并到 feature分支上:

git checkout feature
git rebase master

这会将整个 feature 分支移动到 master 分支的顶端,从而有效地整合了所有 master 分支上的提交。但是,与 merge 提交方式不同,rebase 通过为原始分支中的每个提交创建全新的 commits 来 重写 项目历史记录。

 rebase 的主要好处是可以获得更清晰的项目历史。首先,它消除了 git merge 所需的不必要的合并提交;其次,正如你在上图中所看到的,rebase 会产生完美线性的项目历史记录,你可以在 feature分支上没有任何分叉的情况下一直追寻到项目的初始提交。这样可以通过命令 git loggit bisect 和 gitk 更容易导航查看项目。

但是,针对这样的提交历史我们需要权衡其「安全性」和「可追溯性」。如果你不遵循 [Rebase 的黄金法则],重写项目历史记录可能会对你的协作工作流程造成灾难性后果。而且,rebase 会丢失合并提交的上下文, 你也就无法看到上游更改是何时合并到 feature 中的。

对比

建议使用 git rebase。

rebase可以给你提供一套清晰的代码历史。相反的, merge会给你一套乱七八糟的代码历史。当你看到这样的代码历史的时候,我相信你绝对没有心情去研究每一个历史对应的代码。

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

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

相关文章

Linux——从零到精通

目录 前言: 一.Linux介绍 二.Linux基础命令 三.链接和文章从零到实战 基本信息介绍 Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱: 桌面环境 Linux为什么象征着企鹅 命名与读法 前言: 本篇文章结合所有从零到精通 Linux…

如何在jupyter notebook 中添加虚拟环境

一&#xff0e;如何在jupyter notebook 中添加虚拟环境 假设在D:\tf_training\envTraining创建了名为env_training的虚拟环境。 1.安装IPykernel < python2 > pip install ipykernel < python3 > pip install ipykernel 说明&#xff1a;最好进入到虚拟环境…

STM32单片机(九)USART串口----第九节:STLINK Utility

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

第24天-订单服务(订单确认、订单接口幂等、订单验价、锁定库存)

f# 1.Docker安装RabbitMQ docker run -d --name rabbitmq \ -p 5672:5672 -p 25672:25672 -p 15672:15672 \ -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PASSadmin \ --restartalways \ rabbitmq:management5672&#xff1a;AMQP端口25672&#xff1a;集群端口15672&…

和Cookie相关的一些问题

目录 1. Cookie储存在哪里&#xff1f; 2. 不同网站可以互相访问对方的Cookie吗&#xff1f; 3.二级域名能够读到一级域名的Cookie吗&#xff1f; 1. Cookie储存在哪里&#xff1f; Cookie是前后端共享的&#xff0c;故肯定是存在浏览器的。 在浏览器开发者工具中可以找到C…

### 4.1 Hadoop生态系统

狭义的Hadoop VS 广义的Hadoop 广义的Hadoop&#xff1a;指的是Hadoop生态系统&#xff0c;Hadoop生态系统是一个很庞大的概念&#xff0c;hadoop是其中最重要最基础的一个部分&#xff0c;生态系统中每一子系统只解决某一个特定的问题域&#xff08;甚至可能更窄&#xff09;…

UE5.2 Mobile安卓游戏 Graphics Profile工具使用总结

Android Graphics Profile工具 Android游戏Profile 图形帧的常用工具有: snapdragon profiler, renderdoc, 手机游戏APP环境 (1)opengl es3.1/3.2或者vulkan (2)UE5 Android 打Debug包 (3)USB连接电脑的设置: 手机连接电脑&#xff0c;开启USB传输文件模式&#xff0c;开…

全志V3S嵌入式驱动开发(解决32M spi-nor无法复位问题)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 之前制作spi-nor image的时候&#xff0c;就发现v3s存在无法复位的问题。只要进入linux之后&#xff0c;不管是console输入reboot指令&#xff0c;…

【C/C++解决读者-写者问题】

目录 一、问题描述二、问题分析三、三种策略实现1.读者优先策略2. 读写公平策略3.写者优先策略&#xff08;后续更新&#xff09; 一、问题描述 有读者和写者两组并发进程&#xff0c;共享一个文件&#xff0c;当两个或两个以上的读进程&#xff08;只是读数据&#xff0c;不会…

将数据转化为创新机会:8 种业务分析模型指南

当我们想要创新时&#xff0c;往往需要有实际的依据来支撑我们的想法。商业咨询顾问通常被认为是聪明的人&#xff0c;他们拥有模型化的分析思维&#xff0c;这种思维方式可以帮助他们更好地理解市场、竞争对手和客户需求。商业分析思维是一种系统性的思考方式&#xff0c;它可…

力扣 222. 完全二叉树的节点个数

题目来源&#xff1a;https://leetcode.cn/problems/count-complete-tree-nodes/description/ C题解1&#xff1a;层序遍历计算节点。 时间复杂度&#xff1a;O(n)空间复杂度&#xff1a;O(n) /*** Definition for a binary tree node.* struct TreeNode {* int val;* …

已开源!网易云信的热点探测平台实践

背景 对于一个互联网平台&#xff0c;特别是 toB 的 PaaS/SaaS 平台&#xff0c;热点 key 是一个绕不过去的问题。作为一个开放的系统&#xff0c;平台每天要承载来自大量的外部系统或者海量终端的请求&#xff0c;虽然所有的请求都需要满足开放平台定义好的鉴权规则&#xff0…

虚幻引擎(UE5)-大世界分区WorldPartition教程(四)

文章目录 前言一、Data Layers的使用1.添加Actor到Data Layers2.运行时处理 总结 上一篇&#xff1a;虚幻引擎(UE5)-大世界分区WorldPartition教程(三) 前言 Data Layers&#xff08;UE4中叫Layers&#xff09;用于将Actor划分到不同的Layer中&#xff0c;通过在编辑器和运行…

Qt在Ubuntu下如何进行桌面软件开发?

文章目录 0.引言1.新建项目2.编写第一个程序3.在Qt外部启动程序 0.引言 笔者研究的方向涉及在ubuntu中运行代码&#xff0c;早先是直接利用控制台运行代码文件&#xff0c;在控制台中虽然设法将代码精简到一个三个文件中&#xff0c;只需要在控制台运行这三个文件即可&#xff…

应用在5W~20W无线充电器中的电机驱动芯片

随着用电设备对供电质量、安全性、可靠性、方便性、即时性、特殊场合、特殊地理环境等要求的不断提高&#xff0c;使得接触式电能传输方式越来越不能满足实际需要。无线充电器是利用电磁感应原理进行充电的设备&#xff0c;其原理和变压器相似&#xff0c;通过在发送和接收端各…

基于深度学习的高精度条形码二维码检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度条形码二维码检测识别系统可用于日常生活中或野外来检测与定位条形码二维码目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的条形码二维码目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系…

2023上半年软考系统分析师科目一整理-07

2023上半年软考系统分析师科目一整理-07 信息资源规划&#xff08;Information Resource Planning&#xff0c;IRP&#xff09;是信息化建设的基础工程&#xff0c;IRP强调将需求分析与&#xff08; &#xff09;结合起来。IRP的过程大致可以分为7个步骤&#xff0c;其中&#…

微信小程序组件间通讯

1.父传子 1.1父组件 1.1.1wxml文件 <!-- 定义的my-props组件 --> <my-props count"{{count}}"></my-props> <!-- 分割线 --> <view></view> <view>父组件的count值:{{count}}</view> <button bindtap"ad…

一步一步学OAK之五:通过OAK相机实现边缘检测

目录 边缘检测简介Setup 1: 创建文件Setup 2: 安装依赖Setup 3: 导入需要的包Setup 4: 创建pipelineSetup 5: 创建节点创建相机节点创建边缘检测节点创建XLinkOut数据交互的节点 Setup 6:设置相关属性设置彩色相机的相关属性设置左侧和右侧的单目相机的相关属性设置边缘检测器的…

【计算机网络 - 第三章】运输层

目录 一、多路复用和多路分解 1、运输层端口号 2、概述 3、原理 1、无连接的多路复用与多路分解 - UDP 2、面向连接的多路复用与多路分解 - TCP 二、无连接运输——UDP用户数据报协议 1、UDP概述 2、UDP的优点 三、可靠数据传输原理 1、概述 2、rdt1.0——可靠信道上…