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

第一次使用 Git 遠距工作

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

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]刪除
最新教學 更多>
  • 如何在 PDO 中有效地使用帶有 LIMIT 子句的陣列參數
    如何在 PDO 中有效地使用帶有 LIMIT 子句的陣列參數
    利用 PDO 陣列參數和 LIMIT 子句在 PHP 中,使用 PDO 執行具有參數陣列和 LIMIT 子句的資料庫查詢可能會帶來挑戰。讓我們探討一下如何有效地解決這種情況。 背景:在利用陣列將參數傳遞給 PDO 語句時嘗試使用 LIMIT 子句執行查詢時會出現此問題。預設情況下,LIMIT子句中的...
    程式設計 發佈於2024-11-08
  • 如何在 C++ 中為互動式應用程式實作非阻塞控制台輸入?
    如何在 C++ 中為互動式應用程式實作非阻塞控制台輸入?
    C 中的非阻塞控制台輸入在現代C 中,非阻塞控制台輸入允許在程式運行時無縫處理使用者命令繼續運行並輸出訊息。此功能在互動式應用程式和遊戲中通常至關重要。 C 11 解決方案:實現非阻塞控制台輸入的一種有效方法是使用單獨的控制台線。這種方法允許主程式繼續執行,同時後台執行緒監視控制台的輸入。以下程式碼...
    程式設計 發佈於2024-11-08
  • 哪些 JSF 2.0 框架最適合建立 CRUD 應用程式?
    哪些 JSF 2.0 框架最適合建立 CRUD 應用程式?
    推薦的 JSF 2.0 CRUD 框架在 JSF 2.0 中,由於內建功能,開發 CRUD 應用程式變得輕而易舉。使用 @ViewScoped bean 和 的組合提供了堅實的基礎。 輕量級實作對於具有最小依賴性的輕量級方法,以下程式碼片段示範如何實作CRUD運算:// Bean: @Manage...
    程式設計 發佈於2024-11-08
  • 如何在 HTML 中將單選按鈕和標籤對齊在同一行?
    如何在 HTML 中將單選按鈕和標籤對齊在同一行?
    將單選按鈕和標籤定位在同一行上在HTML 表單中,可以將單選按鈕及其關聯標籤在一行上對齊具有挑戰性的。為此,可以採用多種 CSS 技術。 建議的 HTML 結構定位標籤與輸入元素:<label for="one">First Item</label> &l...
    程式設計 發佈於2024-11-08
  • 如何取得 Windows/IIS 伺服器上的完整 URL 以進行準確重新導向?
    如何取得 Windows/IIS 伺服器上的完整 URL 以進行準確重新導向?
    取得Windows/IIS 伺服器上目前頁面的完整URL在Windows/IIS 伺服器上管理重新導向時,擷取至關重要完整的URL 以確保準確性。然而,此任務可能會帶來挑戰,特別是在處理移動到新資料夾位置的 WordPress 安裝時。 遇到的一個挑戰是 $_SERVER["REQUEST...
    程式設計 發佈於2024-11-08
  • 如何透過 Matplotlib 的物件導向方法使用 Seaborn 視覺化?
    如何透過 Matplotlib 的物件導向方法使用 Seaborn 視覺化?
    以物件導向的風格使用Seaborn 進行繪圖視覺化Seaborn 是一個廣泛使用的用於資料視覺化的Python 包,它利用Matplotlib 函式庫。透過提供物件導向的接口,Matplotlib 有助於複雜繪圖的建立和管理。本文討論如何利用seaborn的功能,同時維持Matplotlib的物件導...
    程式設計 發佈於2024-11-08
  • 如何使用字串插值將 CSS 屬性設定為 SASS 中的 mixin 值?
    如何使用字串插值將 CSS 屬性設定為 SASS 中的 mixin 值?
    將 SASS Mixin 值設為 CSS 屬性建立通用邊距/填入 mixin 時,可能需要將 CSS 屬性設為 mixin 值。為此,需要使用字串插值。 CSS 屬性的字串插值要使用變數作為 CSS 屬性名稱,需要字串插值 (#{$var})。 範例下面的 mixin 示範如何使用字串設定 CSS ...
    程式設計 發佈於2024-11-08
  • 如何解決 Webpack 和 Babel 的「You May Need an Appropriate Loader」錯誤?
    如何解決 Webpack 和 Babel 的「You May Need an Appropriate Loader」錯誤?
    解決Webpack 和Babel 的“您可能需要合適的加載器”錯誤遇到此錯誤意味著Webpack 需要合適的加載器來解釋文件。在這個特定實例中,Babel 將用於 ES6 編譯。若要解決此問題,請依照下列步驟操作:安裝ES2015 預設:npm install babel-preset-es2015...
    程式設計 發佈於2024-11-08
  • 執行上下文和呼叫堆疊
    執行上下文和呼叫堆疊
    为顶级代码创建全局执行上下文,即不在任何 fn 内的代码。因此,首先执行 fn 之外的代码。 fn-decln/exprsn 的 fn 主体内的代码仅在调用时执行。 执行上下文(EC) JS执行的环境。 存储一些要执行的代码的所有必要信息,例如局部变量、传递给 fn 的 args。 ...
    程式設計 發佈於2024-11-08
  • 是否有必要將字串傳遞給 setTimeout?
    是否有必要將字串傳遞給 setTimeout?
    向setTimeout 傳遞字串:一個必要性問題由於效能問題、潛在的安全風險及其不建議使用,許多開發人員不贊成向setTimeout 傳遞字串的做法地位。然而,在極少數情況下,這種語法可能是有益的。 棄用論點setTimeout 和 setInterval 的傳統語法涉及傳遞一個表示要執行的程式碼的...
    程式設計 發佈於2024-11-08
  • Hours是一個環境變量,我將使用ENV。冷靜冷靜,我先告訴你一件事
    Hours是一個環境變量,我將使用ENV。冷靜冷靜,我先告訴你一件事
    我們總是很匆忙,想要盡快開發,我們經常會採用舊習慣並構建舊軟體,我們可以改進的一個項目是這個叫做環境的小東西,讓我們進一步了解一下。 首先,我想在這裡展示 Laravel 配置概念的重點,我不會擔心其餘的模式,例如資源或其他類似的模式。 1 - 讓我們尋求知識! 不久前,我聽說我無法在我的瘋...
    程式設計 發佈於2024-11-08
  • 要記住的 useState:將變數儲存在 React 的記憶體中!
    要記住的 useState:將變數儲存在 React 的記憶體中!
    在 React 的世界中,管理元件的狀態對於建立動態和互動式應用程式至關重要。最強大的工具之一是 useState 鉤子。 在 React 世界中,狀態管理是創建互動式和動態應用程式的基石之一。 useState 是 React 中最常用的鉤子之一,是管理元件狀態的有效方法。在本文中,我們將研究 ...
    程式設計 發佈於2024-11-08
  • 實現訂單處理系統:部分分散式追蹤和日誌記錄
    實現訂單處理系統:部分分散式追蹤和日誌記錄
    1. Introduction and Goals Welcome to the fifth installment of our series on implementing a sophisticated order processing system! In our prev...
    程式設計 發佈於2024-11-08
  • 如何在不同瀏覽器中準確測量調整大小後的圖片的原始尺寸?
    如何在不同瀏覽器中準確測量調整大小後的圖片的原始尺寸?
    跨瀏覽器揭示客戶端調整大小圖像的原始尺寸確定已在客戶端調整大小的圖像的真實尺寸side 是許多Web 開發場景的關鍵任務。無論您是調整影像以實現響應式佈局,還是向使用者顯示原始尺寸,找到一個跨瀏覽器一致工作的可靠解決方案至關重要。 選項 1:釋放 OffsetWidth 和 OffsetHeight...
    程式設計 發佈於2024-11-08
  • Python什麼時候會遇到「FileNotFoundError: No Such File or Directory」?
    Python什麼時候會遇到「FileNotFoundError: No Such File or Directory」?
    FileNotFoundError 疑難排解:沒有這樣的檔案或目錄 嘗試開啟檔案時,您可能會遇到「FileNotFoundError:[Errno 2&]嘗試開啟檔案時,您可能會遇到「FileNotFoundError:[Errno 2&]嘗試開啟檔案時,您可能會遇到「FileNotFoundErr...
    程式設計 發佈於2024-11-08

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

Copyright© 2022 湘ICP备2022001581号-3