”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 第一次使用 Git 远程工作

第一次使用 Git 远程工作

发布于2024-11-08
浏览:748

First time working with Git remote

介绍

本周,我加深了对 Git 的理解,特别是使用 Git 遥控器。作为先决条件,在处理远程时熟悉 Git 合并至关重要。上周,我分享了我第一次使用 Git merge 的经验并讨论了一些最佳实践。本周,我在开发新功能时应用了这些知识,不是在我自己的存储库中,而是在合作者的存储库(我朋友 Mayank 的)中。同时,他在我的存储库中开发了一项功能,使我们能够使用 Git 练习远程协作。

新功能:支持TOML配置

目前,我过去几周开发的工具使用温度和模型等选项的默认值集,当用户不提供特定参数时应用这些值。此新功能的目标是通过添加对从用户主目录中的 TOML 文件读取配置设置的支持来扩展该工具的功能。

例如,如果用户在 C:\User\Anh\config.toml 中有一个配置文件,该工具现在将检查用户主目录中是否存在 .toml 文件。如果存在此类文件,该工具将读取该文件并应用其值来设置默认配置,从而覆盖内置默认值。但是,用户仍然可以提供命令行参数,该参数将优先于 TOML 文件值。

执行

为了实现这个功能,我利用了toml包来解析TOML配置文件的内容:


import * as toml from 'toml';


由于该工具将在用户的主目录中搜索 .toml 文件,因此我使用 Node.js 的内置 os 模块来检索主目录路径:


const os = require("os");
const homeDir = os.homedir();


从用户的主目录收集所有文件后,我迭代它们以查找以 .toml 结尾的隐藏文件(以点 . 开头的文件)。找到的第一个 .toml 文件被用作该工具的配置源。

笔记

  • 该工具将在主目录中查找隐藏的“点文件”(例如 .config.toml),其中包含 TOML 格式的默认选项。
  • 如果文件丢失,该工具将忽略此文件并继续使用 config.js 文件中的默认设置。
  • 如果文件存在但不是有效的 TOML,该工具将退出并显示相应的错误消息。
  • 如果 TOML 文件存在并且没有命令行参数覆盖其值,则将使用 TOML 文件中的设置(例如默认模型)。
  • 该工具将忽略 TOML 文件中任何无法识别的选项,以确保向后兼容性。

远程协作流程

如前所述,本周涉及练习 Git 远程工作流程以及 Git 与 Mayank 合并。为了开发他的存储库中的功能,我按照以下步骤操作:

  1. 分叉和克隆:我分叉了他的存储库并将其克隆到我的本地计算机。
  2. 创建分支:我在本地副本中创建了一个新分支并开始研究新功能。
  3. 提交和推送:进行更改后,我将它们提交到分支并将分支推送到我的分叉存储库。
 git push origin 

一旦 Mayank 将他的更改推送到新分支并请求拉取请求 (PR),我想在合并之前测试他的代码。这就是 git Remote 变得至关重要的地方:

  • 添加远程:我将他的存储库作为远程添加到我的本地计算机:

  git remote add  


  • 获取提交:我从他的存储库中获取了最新的提交和分支:

git fetch 


  • 跟踪分支:我创建了一个跟踪分支来跟踪他的更新,而不直接影响我的存储库:

git checkout -b  /


错误识别和解决

在测试过程中,我发现了 Mayank 分支中的两个关键问题:

  • 目录配置错误:该工具错误地从项目根目录而不是用户的主目录读取 TOML 文件。
  • 路径解析:代码使用相对文件路径,当我在我的机器上运行它时导致错误。我建议切换到绝对路径

// Resolve the path to the configuration file
const configPath = path.resolve(__dirname, "../.toml");

// Load configuration from config.toml
const config = loadConfig(configPath);


确定这些问题后,我通过 Slack 与 Mayank 进行了讨论,并合作寻找解决方案。我还直接就他的拉取请求提供了反馈。这个过程让我感觉自己正在为一个现实世界的协作项目做出贡献。一旦我对修复感到满意,我将他的分支合并到主分支并将其推送到我的远程存储库。

结论

使用 Git 远程和合并的过程非常具有教育意义。我现在对在共享代码库上进行协作更有信心了。以前,我经常会因不同开发人员的多次提交和贡献而感到不知所措,但现在我对 Git 工作流程有了更好的控制和理解。

通过研究此功能并集成 Git 遥控器,我获得了实践经验,这对于未来的项目来说是非常宝贵的。

版本声明 本文转载于:https://dev.to/anhchienvu/first-time-working-with-git-remote-5dbl?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 在UTF8 MySQL表中正确将Latin1字符转换为UTF8的方法
    在UTF8 MySQL表中正确将Latin1字符转换为UTF8的方法
    在UTF8表中将latin1字符转换为utf8 ,您遇到了一个问题,其中含义的字符(例如,“jáuòiñe”)在utf8 table tabled tablesset中被extect(例如,“致电。为了解决此问题,您正在尝试使用“ mb_convert_encoding”和“ iconv”转换受...
    编程 发布于2025-05-03
  • 在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在JTable中维护jtable单元格渲染后,在JTable中,在JTable中实现自定义单元格渲染和编辑功能可以增强用户体验。但是,至关重要的是要确保即使在编辑操作后也保留所需的格式。在设置用于格式化“价格”列的“价格”列,用户遇到的数字格式丢失的“价格”列的“价格”之后,问题在设置自定义单元格...
    编程 发布于2025-05-03
  • 如何实时捕获和流媒体以进行聊天机器人命令执行?
    如何实时捕获和流媒体以进行聊天机器人命令执行?
    在开发能够执行命令的chatbots的领域中,实时从命令执行实时捕获Stdout,一个常见的需求是能够检索和显示标准输出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    编程 发布于2025-05-03
  • Python元类工作原理及类创建与定制
    Python元类工作原理及类创建与定制
    python中的metaclasses是什么? Metaclasses负责在Python中创建类对象。就像类创建实例一样,元类也创建类。他们提供了对类创建过程的控制层,允许自定义类行为和属性。在Python中理解类作为对象的概念,类是描述用于创建新实例或对象的蓝图的对象。这意味着类本身是使用类关...
    编程 发布于2025-05-03
  • CSS可以根据任何属性值来定位HTML元素吗?
    CSS可以根据任何属性值来定位HTML元素吗?
    靶向html元素,在CSS 中使用任何属性值,在CSS中,可以基于特定属性(如下所示)基于特定属性的基于特定属性的emants目标元素: 字体家庭:康斯拉斯(Consolas); } 但是,出现一个常见的问题:元素可以根据任何属性值而定位吗?本文探讨了此主题。的目标元素有任何任何属性值,属...
    编程 发布于2025-05-03
  • Java中Lambda表达式为何需要“final”或“有效final”变量?
    Java中Lambda表达式为何需要“final”或“有效final”变量?
    Lambda Expressions Require "Final" or "Effectively Final" VariablesThe error message "Variable used in lambda expression shou...
    编程 发布于2025-05-03
  • CSS强类型语言解析
    CSS强类型语言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    编程 发布于2025-05-03
  • 在共享主机上如何禁用魔术引号?无需php.ini权限
    在共享主机上如何禁用魔术引号?无需php.ini权限
    在共享主机上禁用魔术引号在共享主机上关闭魔法引号可能很棘手,尤其是当您无法访问php.ini时,尤其是使用php.ini。 php_flag magic_quotes_gpc关闭到.htaccess文件可能并不总是可行。该指令通常用于MOD_PHP环境,但是共享的托管提供商通常会使用SUEXEC/F...
    编程 发布于2025-05-03
  • 在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    编程 发布于2025-05-03
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-05-03
  • 如何在php中使用卷发发送原始帖子请求?
    如何在php中使用卷发发送原始帖子请求?
    如何使用php 创建请求来发送原始帖子请求,开始使用curl_init()开始初始化curl session。然后,配置以下选项: curlopt_url:请求 [要发送的原始数据指定内容类型,为原始的帖子请求指定身体的内容类型很重要。在这种情况下,它是文本/平原。要执行此操作,请使用包含以下标头...
    编程 发布于2025-05-03
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-05-03
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中可能会遇到一个冲突,其中3派对软件包将另一个带有导入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    编程 发布于2025-05-03
  • 在GO中构造SQL查询时,如何安全地加入文本和值?
    在GO中构造SQL查询时,如何安全地加入文本和值?
    在go中构造文本sql查询时,在go sql queries 中,在使用conting and contement和contement consem per时,尤其是在使用integer per当per当per时,per per per当per. [&​​&&&&&&&&&&&&&&&默元组方法在...
    编程 发布于2025-05-03
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-05-03

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3