Git学习笔记(最终篇)

news/2024/9/18 12:06:00/ 标签: git, 学习, 笔记

文章目录

  • 远程仓库
    • 一. 配置远程连接
    • 二. 添加远程仓库
      • 推送本地仓库内容到远程仓库
    • 三. 推送步骤
    • 四. 远程库克隆
    • 五. 创建与合并分支
      • 1. 创建新分支
      • 2. 切换分支
      • 3. 创建并立即切换到该分支
      • 4. 合并分支
    • 六. 处理冲突
    • 七. 分支管理策略
    • 八. bug分支
    • 九. 多人协作
    • 十. 推送分支
    • 十一. 抓取分支

远程仓库

一. 配置远程连接

本地Git仓库和GitHub仓库之间的传输是通过SSH加密传输的,所以需要配置ssh key。

二. 添加远程仓库

要将本地代码库连接到远程仓库,可以使用以下git命令:

  1. 首先,将本地代码库初始化为Git仓库(如果尚未完成)
git init
  1. 添加远程仓库的URL,其中是自定义名称,是远程仓库的URL
git remote add <remote-name> <remote-url>
  1. 可以使用以下命令确认远程仓库是否已成功添加
git remote -v

此后,您就可以使用git push命令将代码推送到远程仓库,或使用git pull命令从远程仓库拉取代码。

推送本地仓库内容到远程仓库

  1. 如果是新建的远程仓库,即远程仓库是空的时候,要加上-u参数
git push -u origin master
  1. 如果仓库不是空的,就不需要-u参数
git push origin master

在 Git 命令中,git push -u origin master 中的 -u 或 --set-upstream 参数是用来设置当前分支与远程分支之间的上游(upstream)关系的。

当你克隆一个仓库并开始工作时,Git 会自动为你设置本地 master 分支(如果你使用的是较新版本的 Git,则可能是 main 分支)来跟踪远程仓库中的同名分支(例如 origin/master)。但是,如果你从现有的本地仓库中创建了一个新的分支,并且想要将这个新分支推送到远程仓库,Git 并不会自动设置这个新分支的上游关系。

这时,你可以使用 git push -u origin 命令来推送新分支到远程仓库,并同时设置该分支的上游关系。这里的 应该替换为你的新分支名。在你给出的例子中, 是 master,尽管这通常用于已存在的默认分支。

三. 推送步骤

  1. 初始化:本地建库(即文件夹),git init
  2. 添加到仓库:代码文件放入本地库,git add .
  3. 提交git commit -m “注释内容”,提交到仓库
  4. 新建远程仓库并关联:在Github上设置好SSH密钥后,新建一个远程仓库git remote add origin https://github.com/******.git关联
  5. 推送git push (-u) origin master,把本地仓库的代码推送到远程仓库Github上

四. 远程库克隆

要从远程仓库克隆代码到本地,可以使用以下git命令:

git clone <remote-url>

其中是远程仓库的URL。执行此命令后,Git将在当前目录下创建一个新目录,其中包含克隆的代码库副本。如果想指定不同的目录名,可以将目录名作为可选参数添加到命令中:

git clone <remote-url> <directory-name>

在执行git clone命令时,还可以通过添加其他标志来更改默认行为,例如指定要克隆的分支、禁用克隆时自动检查的文件等。

五. 创建与合并分支

1. 创建新分支

git branch <branch_name>

这将在当前所在的提交上创建一个名为 <branch_name> 的新分支。

2. 切换分支

要切换到新创建的分支,可以使用以下命令:

git checkout <branch_name>

3. 创建并立即切换到该分支

创建并立即切换到该分支,可以使用以下命令:

git checkout -b <branch_name>

4. 合并分支

合并分支可以使用以下命令:

git merge <branch_name>

这会将 <branch_name> 分支中的更改合并到当前分支。

六. 处理冲突

当两个分支上的代码修改了同一部分,并且尝试将这两个分支合并时,就会发生代码冲突。Git提供了以下步骤来解决冲突:

  1. 运行 git status 命令查看哪些文件包含冲突。
git status
  1. 编辑有冲突的文件,手动解决文件中的冲突。
  2. 对编辑后的文件进行 git add,标记为已解决冲突的文件。
    使用 git commit 提交更改,Git 会自动生成一个合并提交,其中包含各自分支中的更改。
git add
git commit

注意:在解决冲突前,最好先备份当前的代码状态,以免不小心破坏代码库。另外,在处理冲突之前,可以通过运行 git diff 命令来查看冲突的源代码,以便更好地理解要解决的问题。

七. 分支管理策略

在 Git 中,常见的分支管理策略包括以下几个方面:

  1. 主分支:主分支通常是最稳定的分支,用于发布生产版本。在 Git 中,主分支通常是 master 分支或者 main 分支。
  2. 开发分支:开发分支通常从主分支派生而来,在其上进行新功能或修复错误的开发。在 Git 中,通常使用 develop 分支作为开发分支。
  3. 特性分支:特性分支是为了开发单独的功能而创建的分支。这些分支通常从开发分支派生而来,并在实现目标后被合并回开发分支。在 Git 中,通常使用 feature/ 分支命名约定来表示特性分支。
  4. 发布分支:发布分支是用于准备发布版本的分支,通常从主分支派生而来。这些分支应该包含与发布相关的所有更改,并且应该经过全面测试和审核后再合并回主分支。在 Git 中,通常使用 release/ 分支命名约定来表示发布分支。
  5. 热修复分支:热修复分支通常用于快速修复紧急问题,例如安全漏洞或崩溃。这些分支通常从主分支派生而来,并且只包含必要的更改。在 Git 中,通常使用 hotfix/ 分支命名约定来表示热修复分支。

通过采用合适的 Git 分支管理策略,可以帮助团队更好地组织和管理代码,提高团队的协作能力和生产效率。除了上述常见的分支管理策略,还可以根据团队的具体需求和工作流程定制适合自己的分支管理策略。

八. bug分支

在 Git 中,通常使用 bug 分支用于修复代码中的错误或缺陷。当发现 bug 时,可以从当前开发分支(如 develop 分支)创建一个 bug 分支,在该分支上进行错误修复。修复完成后,可以将更改提交到 bug 分支,并将其合并回开发分支和主分支。

以下是一个典型的使用 Git bug 分支的流程:

  1. 从当前开发分支(如 develop 分支)创建一个新的 bug 分支
git checkout -b bug/fix-xxx
  1. 在 bug 分支上进行错误修复,包括必要的测试和代码审查
  2. 提交更改并推送到远程仓库
git add .
git commit -m "Fix xxx bug"
git push origin bug/fix-xxx
  1. 将 bug 分支合并回开发分支(如 develop 分支)
git checkout develop
git merge --no-ff bug/fix-xxx
  1. 测试修复是否正确,如果一切正常,则将开发分支合并回主分支(如 master 分支)
git checkout master
git merge --no-ff develop

通过使用 Git bug 分支,可以帮助团队更好地管理和修复代码中的错误和缺陷,同时保持代码库的稳定性和可靠性。

九. 多人协作

Git 是一个优秀的多人协作工具,以下是 Git 多人协作的一些最佳实践:

  1. 使用分支:使用分支可以帮助团队成员在不影响主分支的情况下进行开发和测试,避免代码冲突和错误。建议采用主分支、开发分支、特性分支、发布分支、热修复分支等分支管理策略。
  2. 提交规范:每次提交代码时应该附加有意义的提交信息,描述本次提交的更改内容和目的。建议采用语义化版本号和提交信息模板等规范,以便更好地记录和追踪代码变更历史。
  3. 定期合并:团队成员应该定期将自己的分支合并回主分支或者开发分支。这可以避免较大的代码冲突和错误,并且保持代码库的整洁和可维护性。
  4. 代码审查:通过代码审查可以确保代码的质量和一致性,并且可以识别和纠正潜在的问题和错误。建议采用 pull request 和 code review 等工具和流程,以便团队成员对彼此的代码进行审查和反馈。
  5. 团队协作:团队成员之间应该保持及时和有效的沟通,共享技术和经验,并尽可能避免个人行为和偏见对项目和团队产生不良影响。

通过采用上述最佳实践,可以帮助团队高效协作、保证代码质量和稳定性,并提高团队的生产力和创造力。

十. 推送分支

在 Git 中,推送分支指将本地的分支提交到远程仓库中,使得其他团队成员可以访问和获取该分支的代码。以下是在 Git 中推送分支的一些常用命令:

  1. 推送当前分支到远程仓库,并与远程分支关联:
git push -u origin <branch-name>
  1. 推送当前分支到远程仓库,并与远程分支合并:
git push origin <branch-name>
  1. 强制推送当前分支到远程仓库(不推荐):
git push -f origin <branch-name>
  1. 删除远程分支:
git push origin :<branch-name>git push --delete origin <branch-name>

在推送分支时,通常会遇到冲突等问题。如果发生冲突,需要先解决冲突,然后再进行推送。

十一. 抓取分支

在 Git 中,抓取分支指从远程仓库拉取最新的代码和分支信息,并在本地创建相应的分支。以下是在 Git 中抓取分支的一些常用命令:

  1. 拉取所有远程分支并更新本地分支:
git fetch --all
  1. 拉取一个特定的远程分支到本地:
git fetch origin <branch-name>
  1. 在本地创建基于远程分支的新分支:
git checkout -b <new-branch-name> origin/<remote-branch-name>
  1. 拉取远程分支并自动与本地分支关联:
git checkout --track origin/<remote-branch-name>git checkout -t origin/<remote-branch-name>

抓取分支时,需要注意避免覆盖当前分支中未提交的更改。如果本地分支和远程分支存在冲突,需要解决冲突后才能将更改合并到本地分支中。

通过抓取分支可以使得开发者获取最新的代码和分支信息,在本地进行代码修改和测试,并将更改推送回远程仓库以进行协作开发。


❤️❤️❤️Git完结撒花😊❤️❤️❤️


http://www.ppmy.cn/news/1516318.html

相关文章

【PHP入门教程】PHPStudy环境搭建+composer创建项目

文章目录 PHP 的历史PHP 的用途PHP 的特点和优势PHP 环境搭建环境准备安装window 安装CentOS / Ubuntu / Debian 安装 第一个Hello World使用Apache服务运行命令行运行代码 Composer安装 Composer&#xff1a;安装途中报错解决&#xff1a;初始化项目创建文件最终文件目录Compo…

【JVM】OOM与调优(一)

OOM与调优 方法区 import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method;public class MetaspaceOverFlowTest {/*** 模拟CGLIB向元空间写入数据*/public static void …

【计算机网络】socket网络编程 --- 实现一些简易UDP网络程序

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

Python-断点续传的方式下载GPM降水数据

下载GPM卫星降水数据 全球卫星降水计划 (GPM) 是一项国际卫星任务&#xff0c;由NASA和JAXA合作开展&#xff0c;利用多传感器多卫星多算法结合卫星网络和雨量计反演得到更高精度的降水数据&#xff0c;其能够提供全球范围基于微波的3h以内以及基于微波红外的半小时的雨雪数据…

Django 后端架构开发:文件云存储,从本地存储到腾讯COS桶集成

⭐ Django 后端架构开发&#xff1a;文件云存储&#xff0c;从本地存储到腾讯COS桶集成 目录 ☁️ 文件云存储 - 项目使用云存储&#x1f4bb; 文件云存储 - 项目中使用本地存储&#x1f4dd; 文件云存储 - 概述和创建项目&#x1f310; 腾讯COS桶 - 概述&#x1f4da; 腾讯CO…

C++系列-多态的基本语法

多态的基本语法 多态的含义静态多态动态多态 多态的底层原理多态中的final和overridefinaloverride: 多态的应用和优点计算器简单实现电脑组装的实现 《游山西村》 南宋陆游 莫笑农家腊酒浑&#xff0c;丰年留客足鸡豚。 山重水复疑无路&#xff0c;柳暗花明又一村。 箫鼓追…

XML 总结

XML 总结 XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。它由万维网联盟&#xff08;W3C&#xff09;在1998年定义&#xff0c;旨在提供一种标准化、结构化的方式来组织数据。XML的设计目标是既易于人类阅读&#xff0c;也易于机器解析。本文…

React.js如何使用Bootstrap

在 React.js 项目中使用 Bootstrap 有多种方法&#xff0c;主要包括直接引入 Bootstrap CSS 文件和使用 React Bootstrap 库。下面将详细介绍这两种方法。 方法一&#xff1a;直接引入 Bootstrap CSS 文件 这是最简单的方式&#xff0c;只需在项目中引入 Bootstrap 的 CSS 文…

HTTPS 通信时是对称加密还是非对称加密?

HTTPS通信中对称加密和非对称加密的使用 非对称加密&#xff1a;在SSL/TLS握手期间&#xff0c;用于安全地交换对称密钥&#xff08;Pre-Master Secret&#xff09;。客户端使用服务器的公钥加密对称密钥&#xff0c;服务器使用私钥解密。 对称加密&#xff1a;握手完成后&…

Python将Word文档转为PDF

Python办公之——PDF添加水印_python pdf添加水印-CSDN博客 掌握Python技巧&#xff1a;PDF文件的加密和水印处理-CSDN博客

Tomcat使用及负载均衡(最全源码安装及配置使用教程)

目录 一 Tomcat概述 1.1 Tomcat 简介 1.2 Tomcat 下载 二 Tomcat 单主机配置 2.1 Tomcat 环境配置 2.2 Tomcat 安装与添加系统启动 2.3 Tomcat 启动与停止 三 Tomcat 配置文件及反向代理 3.1 配置文件详解 3.2 反向代理实现Tomcat部署 四 Memcached安装 4.1 简介 …

Redis:Redis为什么快

文章目录 一、Redis为什么快二、Redis的单线程模型三、高效的数据结构1、跳表 四、内存的高效使用五、I/O多路复用机制六、网络优化 一、Redis为什么快 单机的Redis每秒可以支撑十几万的并发&#xff0c;相对于MySQL来说&#xff0c;性能是MySQL的十几倍。速度快主要有一下因素…

在IDEA中使用Git

在IntelliJ IDEA&#xff08;通常简称为IDEA&#xff09;中使用Git进行版本控制是一种高效且集成度高的做法。以下是在IDEA中使用 Git的详细步骤和说明&#xff1a;一、安装与配置Git 安装Git&#xff1a; 前往Git的官方网站下载并安装Git。 安装过程中&#xff0c;建议勾选“…

游戏app激励视频广告预加载位置,最大化广告收益

最近收到很多游戏类App开发者咨询激励视频广告&#xff0c;在帮助开发者分析产品的时候&#xff0c;特别是一些初级开发者的App产品&#xff0c;发现用户进入这些App&#xff0c;或者打开某个功能时就弹出激励视频广告&#xff0c;这样是违规的&#xff0c;并且用户看完广告也是…

python应用之内置hashlib库的哈希算法介绍

hashlib 是 Python 的一个内置模块&#xff0c;提供了像 SHA1, SHA256, MD5 等哈希算法。可以接受任意长度的字节数据作为输入&#xff0c;并输出一个固定长度的“哈希值”&#xff0c;通常用于校验数据的完整性。而且该算法是不可逆的&#xff0c;不能通过哈希值反算出原始数据…

【大数据】数据仓库的定义、数据模型及其建设与设计

1. 数据仓库 1.1 定义 数据仓库不是数据的简单堆积&#xff0c;而是从大量的事务型数据库中抽取数据&#xff0c;并将其清理、转换为新的存储格式,即为决策目标把数据聚合在一种特殊的格式中。公认的数据仓库之父 W.H. Inmon 将其定义为&#xff1a;“数据仓库是支持管理决策…

css设置input单选radio多选checkbox样式

最近接手一个古老的项目&#xff0c;要修改里边的主题颜色&#xff0c;使用css的var方法一路轻松&#xff0c;最后在input的单选radio和多选checkbox被踩了刹车&#xff0c;也是有几年没做这种原始的项目手生了&#xff0c;最后经过几番折腾后&#xff0c;通过input的伪元素将其…

AI学习记录 - 怎么理解 torch 的 torch.nn.BatchNorm2d

画图不易&#xff0c;有用就点个赞 这里创建了一个随机张量&#xff0c;形状为 (4, 3, 4, 4)&#xff0c;分别对应 形状为 (batch_size, num_channels, height, width) batch_size&#xff1a;批次 num_channels&#xff1a; 通道&#xff08;什么是通道看上一章节&#xff0…

深入剖析ASP.NET Core中的身份验证与授权:构建安全可靠的Web应用

深入探讨ASP.NET Core中的身份验证与授权 在现代Web应用程序中&#xff0c;身份验证和授权是保护资源、管理用户访问的重要组成部分。ASP.NET Core 提供了强大的身份验证和授权机制&#xff0c;支持多种身份验证方案&#xff0c;并允许开发者灵活地控制用户的访问权限。在本文…

FreeRTOS学习笔记>内存管理

1. 内存的概念与分类 在计算系统中&#xff0c;内存用于存储变量和中间数据。系统的内存可以分为两种&#xff1a; 内部存储空间&#xff08;RAM&#xff09;&#xff1a;通常指随机存储器&#xff0c;数据存取速度快&#xff0c;可以随机访问&#xff0c;但掉电后数据会丢失…