Git 簡介

已發表: 2022-06-30

當我開始構建網站時,我是“牛仔編碼”的,這意味著我經常在服務器上實時編輯文件。 我只花了幾個破碎的網站就意識到這是一個糟糕的主意。 然後我開始在我的計算機上本地構建站點。 我不止一次編輯了一個本地文件,只是為了將文件遷移到我的 FTP 客戶端中的錯誤位置。 有時這意味著我會覆蓋一個我無法修復的文件,而無需四處尋找我希望保留的一些備份副本。

如果您仍在處理 FTP 並且無法回滾文件,那麼是時候學習使用 Git 進行版本控制了。

什麼是版本控制?

版本控制系統 (VCS) 是一種軟件,可幫助軟件開發人員管理其代碼隨時間的變化。 一個好的 VCS 系統將跟踪所做的代碼中的每一次更改。 這意味著如果你破壞了某些東西,你可以回滾到之前工作的代碼版本,而無需嘗試點擊“撤消”直到一切正常。

在團隊環境中,VCS 將通過為您提供工具來幫助您與不同的成員合作,這些工具允許您在不同成員更新文件時將代碼更改合併在一起。

我在 Git 中做的一件事是為我構建的每個功能創建一個新分支。 這意味著我可以跟踪我在分支上所做的更改,但仍然可以通過返回主分支來恢復站點的當前狀態。 稍後我們將詳細討論此工作流程。

什麼是 Git?

Git 是一個版本控制系統,但它不是唯一的。 主 WordPress 存儲庫通過 SVN 運行,但您也可以找到 Git 副本。 還有 Mercurial、Visual Source Safe、VESTA 和許多其他選項。

儘管有所有這些選項,但幾乎每個人都使用 Git,所以它是我們今天要學習的版本控制。

基本 Git 術語和命令

在深入研究如何使用 Git 的機制之前,我們需要了解一些術語。 我們只會介紹您會經常遇到的條款。

有關您可能遇到的所有內容的更完整列表,請查看此 Git參考或this Git 命令的完整列表

添加:對代碼進行更改後,您將使用命令 git add 將更改添加到,以便可以提交它們。

分支:分支是與主要工作項目不同的存儲庫版本。 所有存儲庫都帶有一個主分支,或者在較舊的項目中更常見的是一個主分支。 由於 master 這個詞的歷史問題,最近 Git 和 Github 開始將默認分支名稱從 master 更改為 main。 Git 2.28 還允許您為任何新項目設置默認分支名稱。

Checkout :您使用git checkout命令在存儲庫中的不同分支之間切換。 當您使用此命令時,Git 會更改文件的內容或添加和刪除分支之間不同的文件。

克隆git clone命令用於從源存儲庫製作存儲庫的副本。 您將使用此命令獲取遠程存儲庫的本地副本,以便您可以處理代碼。

提交:一旦你使用了git add ,你需要使用git commit才能將文件的狀態保存在 git 中。

initgit init為您創建一個空存儲庫,其中包含 Git 需要操作的所有基本文件。

合併:在一個分支上進行更改並添加並提交它們後,您可以使用 git merge 命令將這些更改遷移到其他分支。

Origin :這是存儲庫主要版本的默認名稱。 我通常把我的改成比原產地更具描述性。 如果我正在使用 Github,那麼我會更改 Git 中的設置,以便 origin 變為 github。 這有助於我保持頭腦清醒。

Push :使用在本地版本的存儲庫中所做的提交更新遠程分支。

存儲庫:這也可以稱為“存儲庫”,是所有文件的目錄,以及對這些文件的更改的 Git 歷史記錄。

狀態git status向您顯示工作存儲庫的當前狀態。

.gitignore :這是一個隱藏文件,其中包含 Git 不會跟踪的文件模式。 如果您的.gitignore文件中有.DS_Store ,那麼它將忽略 macOS 經常放在文件夾中的所有討厭的文件。

託管 Git 存儲庫

在深入研究之前要了解的另一件事是,雖然您的存儲庫不需要遠程位置,但沒有遠程位置會降低使用 Git 的一些好處。 如果沒有託管在其他地方的遠程存儲庫,如果您的計算機死機或被盜,您將無法備份您的代碼。

Github 和 Bitbucket 是託管 Git 存儲庫的兩個更受歡迎的地方,因為它們大多是免費的,而且您可以擁有私有存儲庫。 這確實意味著你的代碼在別人的服務器上,所以如果你不喜歡這個想法,你可以在你的服務器上使用 Gitlab 來託管存儲庫。

安裝 Git

在 macOS 上,安裝 git 的最簡單方法是打開終端並鍵入 git,它將提示您下載 Xcode 命令行工具來安裝 git。 完成後,您可以運行 git –version 查看您擁有的 git 版本。 如果這不起作用,還有其他幾種方法可以在 macOS 上安裝 git。

對於 Windows 用戶,您可以使用官方 Git 安裝程序安裝 Git。 Git 還與 Github 桌面應用程序捆綁在一起,我們將在稍後討論。

如果你在 Linux 上,git 應該與你的包管理器捆綁在一起,或者你可以看看這些在 Linux 上安裝 git 的方法。

配置 Git 默認值

安裝 Git 後,您需要對其進行配置,以便每次提交都使用您的姓名和電子郵件以及提交消息,以使用您的首選編輯器輸入與提交相關的任何評論。 我們將研究通過終端應用程序在 macOS 中設置這些的方法。

git config --global user.name "Your Name"將設置您計算機上每次提交的名稱。

git config --global user.email "[email protected]"將設置與您所做的每個提交相關聯的電子郵件地址。

git config --global core.editor vim將成為 Git vim 的默認編輯器。 雖然我喜歡 vim,但它並不是每個人都喜歡的編輯器。 如果您使用 Atom,那麼您將使用 git config –global core.editor “atom –wait” 或 git config –global core.editor “subl -n -w” 來獲取 Sublime Text。

如果您喜歡 IDE,那麼Visual Studio Code還可以讓您在應用程序中直接使用 Git,如果您願意的話, PHPStorm 也是如此

建立存儲庫

現在我們已經安裝和配置了 git,讓我們開始一個基本的存儲庫。 打開終端並通過鍵入mkdir test-repository創建一個名為 test-repository 的文件夾。 然後鍵入cd test-repository以更改為您的 test-repository 目錄並鍵入git init

此時,您的文件夾中將有一個名為.git的隱藏目錄。 由於它是一個隱藏文件,您需要在終端中鍵入ls -a以列出隱藏文件。

使用 git 添加

現在讓我們通過在終端中輸入touch test.txt來創建一個文件。 接下來鍵入git status以查看您剛剛添加的文件。

如您所見,我們創建的新文件顯示為紅色,並告訴我們其狀態未跟踪。 這意味著 Git 可以看到該文件,但沒有任何記錄。

輸入git add test.txt告訴 Git 暫存這個文件,然後再次輸入git status ,Git 應該會告訴你它知道文件已更改。

將文件提交到 Git

現在我們已經添加了我們的文件,我們需要提交它,以便 Git 保存文件的狀態。 我們可以在一行中完成此操作,而無需使用以下命令打開我們的默認編輯器。

git commit -m 'adding our first file'

標誌-m告訴 git 單引號內的單詞是命令附帶的註釋。

現在我們的存儲庫中有一個文件,其狀態已保存。

創建一個分支

當你開始接觸分支時,Git 的真正威力就出現了。 假設您想在 test.txt 文件中寫一堆,但不確定最終是否會保留它,並希望確保您可以返回到當前的空白文件。 我們可以用一個分支來做到這一點。

要創建一個分支,我們可以輸入git checkout -b new-branch 。 這是在我們簽出分支的同時創建分支的快捷方式,也是我每次需要創建分支時使用的快捷方式。

現在打開我們的test.txt文件,向其中添加一些文本並保存。 然後如上使用git addgit commit保存文件的狀態。

接下來,輸入git checkout master切換回默認的主分支,然後再次查看test.txt文件的內容。 您會注意到您鍵入的所有文本都已被刪除。 Git 甚至會刪除僅在一個分支上的新文件,儘管它確實會保留它的記錄,因此它不會消失。

合併一個分支

現在,我們喜歡我們在文件中編寫的任何內容,所以讓我們將它與我們的主分支集成。 確保您在主分支上並鍵入git merge new-branch以集成您的更改。

如果您現在查看test.txt的內容,您將在主分支上找到您離開時所做的更改。

在 WordPress 中使用 Git

雖然上面的示例非常簡單,但這就是您在項目中開始使用 Git 所需的全部內容。 那麼讓我們來談談如何使用 Git 獲得一個 WordPress 項目。

首先要考慮的是文件夾層次結構中的哪個級別應該是 Git 存儲庫的根。 如果您正在構建一個主題,那麼您可以將主題文件夾作為您的存儲庫。 如果您正在構建插件,同樣的邏輯也適用。

我通常同時使用主題和插件,所以我經常使用 wp-content 文件夾作為我的存儲庫的位置。 當我這樣做時,我確保忽略上傳文件夾,這樣我就不會將所有圖像和上傳的文件添加到存儲庫中。 它們使存儲庫變得混亂,並且會減慢 Git,因為它不擅長壓縮圖像文件。

如果我正在處理整個部署工作流程,那麼我會將根 WordPress 文件夾作為我的 Git 存儲庫的主要位置。 然後我確保將wp-content/uploadswp-config.php添加到我的.gitignore文件中。 wp-config.php特定於每個 WordPress 安裝,所以我不希望它部署在任何其他版本的文件上,這會導致站點停止工作。

您可以看到我用作每個項目起點的.gitignore文件的副本。 它假設您使用wp-content作為 Git 存儲庫的根目錄,因此如果我在 WordPress 的根目錄下,我會更改一些忽略模式。

Git GUI 應用程序

雖然我們已經通過 Git 的命令行介紹了基礎知識,但並不是每個人都對命令行感到滿意,但我知道當我開始使用 Git 時我並不適應。 即使是現在,有時我也想在對我的設置進行任何更改之前查看 Git 正在做什麼的可視化表示。

幸運的是,有幾個很棒的 Git GUI 客戶端可供您使用,所以讓我們重點介紹一些。

Github 桌面 (Windows/macOS)

當您查看 Git GUI 客戶端時,一個很好的起點是使用 Github 桌面應用程序。

許多開源項目使用 Github 作為他們的代碼庫進行協作,並使用標準的 Github 流程來完成他們的工作。 Github 桌面客戶端旨在幫助您處理此流程,因此它將使創建拉取請求更容易。

如果您不確定什麼是拉取請求,請查看 Github 關於拉取請求的文檔

不幸的是,對於 Linux 用戶來說,沒有官方的 Github Desktop 應用程序,但是有一個 Github Desktop 的 fork 可以安裝在 Linux 系統上。

Git 塔 (Windows/macOS)

我使用的 Git GUI 是 Git Tower。 Git Tower 適用於 macOS 和 Windows。 當我開始使用 Git 時,我發現解決衝突以及查看此 GUI 中文件之間的不同之處更加容易。

工作副本 (iOS/iPadOS)

如果你像我一樣主要在 iPad 上工作,那麼你應該看看 Working Copy。 工作副本是一個功能齊全的 Git 客戶端,適用於 iOS 和 iPadOS。 它甚至具有快捷方式集成功能,因此您可以自動化部分 Git 工作流程。

包起來

雖然我們今天已經在您的 Git 知識方面涵蓋了很多基礎知識,但沒有一篇博客文章可以詳盡地介紹該主題。 您可以通過 Nexcess 幫助文檔以及這些優秀資源繼續學習。

  • Git 文檔
  • 專業 Git 書
  • Laracasts Git 課程
  • Git自己的外部資源

通過使用 Git 來管理您的客戶端項目,您可以避免頭疼的問題,因為如果您不再需要已完成的工作,您可以回滾更改或丟棄整個分支。 在你認為你已經回滾到足夠遠之前,不要再使用 Ctrl + Z,Git 會為你記錄這一切。