」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 第一次使用 Git 遠距工作

第一次使用 Git 遠距工作

發佈於2024-11-08
瀏覽:696

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]刪除
最新教學 更多>
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-05-02
  • 如何使用node-mysql在單個查詢中執行多個SQL語句?
    如何使用node-mysql在單個查詢中執行多個SQL語句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    程式設計 發佈於2025-05-02
  • C++中如何將獨占指針作為函數或構造函數參數傳遞?
    C++中如何將獨占指針作為函數或構造函數參數傳遞?
    在構造函數和函數中將唯一的指數管理為參數 unique pointers( unique_ptr [2啟示。通過值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法將唯一指針的所有權轉移到函數/對象。指針的內容被移至功能中,在操作...
    程式設計 發佈於2025-05-02
  • 在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-02
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-05-02
  • 如何高效地在一個事務中插入數據到多個MySQL表?
    如何高效地在一個事務中插入數據到多個MySQL表?
    mySQL插入到多個表中,該數據可能會產生意外的結果。雖然似乎有多個查詢可以解決問題,但將從用戶表的自動信息ID與配置文件表的手動用戶ID相關聯提出了挑戰。 使用Transactions和last_insert_id() 插入用戶(用戶名,密碼)值('test','tes...
    程式設計 發佈於2025-05-02
  • 為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    程式設計 發佈於2025-05-02
  • 人臉檢測失敗原因及解決方案:Error -215
    人臉檢測失敗原因及解決方案:Error -215
    錯誤處理:解決“ error:( - 215)!empty()in Function openCv in Function MultSiscale中的“檢測”中的錯誤:在功能檢測中。”當Face Cascade分類器(即面部檢測至關重要的組件)未正確加載時,通常會出現此錯誤。 要解決此問題,必...
    程式設計 發佈於2025-05-02
  • 左連接為何在右表WHERE子句過濾時像內連接?
    左連接為何在右表WHERE子句過濾時像內連接?
    左JOIN CONUNDRUM:WITCHING小時在數據庫Wizard的領域中變成內在的加入很有趣,當將c.foobar條件放置在上面的Where子句中時,據說左聯接似乎會轉換為內部連接。僅當滿足A.Foo和C.Foobar標準時,才會返回結果。 為什麼要變形?關鍵在於其中的子句。當左聯接的右側...
    程式設計 發佈於2025-05-02
  • Java的Map.Entry和SimpleEntry如何簡化鍵值對管理?
    Java的Map.Entry和SimpleEntry如何簡化鍵值對管理?
    A Comprehensive Collection for Value Pairs: Introducing Java's Map.Entry and SimpleEntryIn Java, when defining a collection where each element com...
    程式設計 發佈於2025-05-02
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-05-02
  • 在JavaScript中如何並發運行異步操作並正確處理錯誤?
    在JavaScript中如何並發運行異步操作並正確處理錯誤?
    同意操作execution 在執行asynchronous操作時,相關的代碼段落會遇到一個問題,當執行asynchronous操作:此實現在啟動下一個操作之前依次等待每個操作的完成。要啟用並發執行,需要進行修改的方法。 第一個解決方案試圖通過獲得每個操作的承諾來解決此問題,然後單獨等待它們: c...
    程式設計 發佈於2025-05-02
  • 您如何在Laravel Blade模板中定義變量?
    您如何在Laravel Blade模板中定義變量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配變量對於存儲以後使用的數據至關重要。在使用“ {{}}”分配變量的同時,它可能並不總是最優雅的解決方案。 幸運的是,Blade通過@php Directive提供了更優雅的方法: $ old_section =...
    程式設計 發佈於2025-05-02
  • 用戶本地時間格式及時區偏移顯示指南
    用戶本地時間格式及時區偏移顯示指南
    在用戶的語言環境格式中顯示日期/時間,並使用時間偏移在向最終用戶展示日期和時間時,以其localzone and格式顯示它們至關重要。這確保了不同地理位置的清晰度和無縫用戶體驗。以下是使用JavaScript實現此目的的方法。 方法:推薦方法是處理客戶端的Javascript中的日期/時間格式化和...
    程式設計 發佈於2025-05-02
  • 如何檢查對像是否具有Python中的特定屬性?
    如何檢查對像是否具有Python中的特定屬性?
    方法來確定對象屬性存在尋求一種方法來驗證對像中特定屬性的存在。考慮以下示例,其中嘗試訪問不確定屬性會引起錯誤: >>> a = someClass() >>> A.property Trackback(最近的最新電話): 文件“ ”,第1行, attributeError:SomeClass實...
    程式設計 發佈於2025-05-02

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3