Git教程--如何安裝Git & 如何高效地使用Git & 合理使用Git分支

      原作者:傑森科茨  翻譯&轉載:https://www.digitalocean.com/community/tutorials/how-to-use-git-effectively

 

介紹

現代軟件開發中不可或缺的工具是某種版本控制系統。版本控制系統允許您在源級別跟蹤軟件。您可以跟蹤更改,還原到以前的階段,然後分支以創建文件和目錄的備用版本。

最流行的版本控制系統之一是git分佈式版本控制系統。許多項目將文件保存在git存儲庫中,而像GitHub和Bitbucket這樣的站點已經使代碼共享和貢獻簡單而有價值。

在本指南中,我們將演示如何在Ubuntu 14.04 VPS實例上安裝git。我們將介紹如何以兩種不同的方式安裝軟件,每種方式都有好處。本教程假設您以非root用戶身份登錄,您可以在此處瞭解如何創建。

 

如何安裝Git

 

到目前爲止,git安裝和使用的最簡單方法是使用Ubuntu的默認存儲庫。這是最快的方法,但版本可能比最新版本更舊。如果您需要最新版本,請考慮按照git從源代碼編譯的步驟進行操作。

您可以使用apt包管理工具更新本地包索引。之後,您可以下載並安裝該程序:

  sudo apt-get update
  sudo apt-get install git

RedHat/Fedora/Centos系統

  • sudo yum install git

Mac OS X 系統

  • sudo brew install git 

這將下載並安裝git到您的系統。您仍然需要完成我們在“設置”部分中介紹的配置步驟,因此請立即跳到該部分

 

如何從源代碼安裝Git

更靈活的安裝方法git是從源代碼編譯軟件。這需要更長時間,並且不會通過您的軟件包管理器進行維護,但它允許您下載最新版本,並且如果您希望自定義,將允許您對所包含的選項進行一些控制。

在開始之前,您需要安裝git依賴的軟件。這在默認存儲庫中都可用,因此我們可以更新本地包索引,然後安裝包:

sudo apt-get update
sudo apt-get install build-essential libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip

安裝必要的依賴項後,您可以通過訪問GitHub上git項目頁面繼續獲取所需的git版本。

到達項目頁面時看到的版本是主動提交的分支。如果您需要最新的穩定版本,您應該使用項目標題左側的此按鈕將分支更改爲最新的非“rc”標記:

接下來,在頁面右側,右鍵單擊“下載ZIP”按鈕,然後選擇類似於“複製鏈接地址”的選項:

回到您的Ubuntu 14.04服務器上,您可以wget通過粘貼您複製的地址來鍵入並關注它。您複製的URL可能與我的不同:

wget https://github.com/git/git/archive/v1.9.2.zip -O git.zip

通過鍵入以下內容解壓縮您下載的文件並移動到生成的目錄中:

unzip git.zip
cd git-*

     現在,您可以通過鍵入以下兩個命令來創建包並進行安裝:

make prefix=/usr/local all
sudo make prefix=/usr/local install

既然已經git安裝了,如果要升級到更高版本,只需克隆存儲庫,然後構建並安裝:

git clone https://github.com/git/git.git

要查找用於克隆操作的URL,請導航到項目的GitHub頁面上所需的分支或標記,然後複製右側的克隆URL:

git clone URL

這將在您當前目錄中創建一個新目錄,您可以在其中重建包並重新安裝新版本,就像您上面所做的那樣。這將使用新版本覆蓋舊版本:

make prefix=/usr/local all
sudo make prefix=/usr/local install

 

如何設置Git

現在您已經git安裝了,您需要做一些事情,以便爲您生成的提交消息將包含您正確的信息。

最簡單的方法是通過git config命令。具體來說,我們需要提供我們的姓名和電子郵件地址,因爲git我們會在每次提交中嵌入此信息。我們可以通過鍵入以下內容來添加此信息:

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

我們可以通過鍵入來查看已設置的所有配置項:

git config --list

git配置

user.name=Your Name
[email protected]

如您所見,這種格式略有不同。信息存儲在配置文件中,您可以選擇使用文本編輯器手動編輯,如下所示:

nano ~/.gitconfig

〜/ .gitconfig內容

[user]
    name=Your Name
    [email protected]

您可以設置許多其他選項,但這些是需要的兩個必要選項。如果您跳過此步驟,則在提交時可能會看到git與此類似的警告:

git用戶名和電子郵件未設置時輸出

[master 0d9d21d] initial project version
 Committer: root 
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

    git config --global user.name "Your Name"
    git config --global user.email [email protected]

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

這樣可以爲您提供更多功能,因爲您必須修改已使用更正信息所做的提交。

您現在應該已經git安裝並準備好在您的系統上使用。

 

如何高效地使用Git

 

本文假設您已安裝git並且您的全局配置設置(即用戶名和電子郵件)已正確設置。如果不是這種情況,請參閱 git介紹教程

Git是一個非常有用的軟件,可以幫助簡化編程項目的開發。它沒有語言要求也沒有文件結構要求,讓開發人員可以決定如何構建工作流程。

在使用git進行開發之前,最好規劃好工作流程。工作流程決策通常基於項目的規模和規模。爲了現在對git有一個基本的瞭解,一個簡單的單分支工作流就足夠了。默認情況下,任何git項目上的第一個分支稱爲“master”。在本系列的後續教程中,您將學習如何創建其他分支。

讓我們創建我們的第一個項目並稱之爲“測試”。(如果您已經有一個要導入到git的項目,可以跳到該部分。)

 

創建工作區

就像您希望擁有一個良好,乾淨的工作環境一樣,同樣的想法適用於編碼的位置,特別是如果您要同時爲多個項目做出貢獻。一個很好的建議可能是在您的主目錄中有一個名爲git的文件夾,其中包含每個項目的子文件夾。

我們需要做的第一件事是創建我們的工作區環境:

user@host ~ $ mkdir -p ~/git/testing ; cd ~/git/testing

上面的命令將完成兩件事:1)它在我們的主目錄中創建一個名爲“git”的目錄,然後創建一個名爲“testing”的子目錄(這是我們的項目實際存儲的地方)。2)它將我們帶到我們項目的基本目錄。

進入該目錄後,我們需要創建一些將在我們的項目中的文件。在此步驟中,您可以跟隨並創建一些虛擬文件以進行測試,也可以創建您希望將成爲項目一部分的文件/目錄。

我們將創建一個在我們的存儲庫中使用的測試文件:

user@host~ /git/testing $ touch file

一旦所有項目文件都在您的工作區中,您需要開始使用git跟蹤文件。下一步解釋了這個過程。

將現有項目轉換爲工作空間環境

一旦所有文件都在你的git工作區中,你需要告訴git你想將當前目錄用作git環境。

user@host ~/git/testing $ git init
Initialized empty Git repository in /home/user/git/testing/.git/

初始化新的空存儲庫後,您可以添加文件。

以下內容將所有文件和目錄添加到新創建的存儲庫中:

user@host~/git/testing $ git add .

在這種情況下,沒有輸出是良好的輸出。不幸的是,如果有效的話,git並不會總是告訴你。

每次添加或更改文件時,都需要編寫提交消息。下一節將介紹提交消息的內容以及如何編寫提交消息。

 

創建提交消息

提交消息是一條簡短的消息,解釋您所做的更改。在發送編碼更改之前需要它(稱爲推送),這是與您的共同開發人員進行通信的好方法。本節將介紹如何創建它們。

提交消息通常相當短,在一到兩個句子之間解釋您所做的更改。在推送之前提交每個單獨的更改是一種好習慣。您可以根據需要推送儘可能多的提交。任何提交的唯一要求是它涉及至少一個文件並且它有一條消息。推送必須至少有一次提交。

繼續我們的示例,我們將爲初始提交創建消息:

user@host ~/git/testing $ git commit -m "Initial Commit" -a
[master (root-commit) 1b830f8] initial commit
 0 files changed
 create mode 100644 file

上述命令有兩個重要參數。第一個是-m,表示我們的提交消息(在本例中爲“Initial Commit”)將會跟隨。其次,-a表示我們希望將提交消息應用於所有添加或修改的文件。這對於第一次提交是可以的,但通常您應該指定我們要提交的單個文件或目錄。

我們本可以做到:

user@host~/git/testing $ git commit -m“Initial Commit” file

指定要提交的特定文件。要添加其他文件或目錄,只需在該命令的末尾添加一個以空格分隔的列表。

 

將更改推送到遠程服務器

到目前爲止,我們已經完成了本地服務器上的所有操作。如果您希望有任何簡單的方法來對文件進行版本控制,那當然可以選擇在本地使用git。但是,如果您想與開發人員團隊合作,則需要將更改推送到遠程服務器。本節將解釋如何執行此操作。

能夠將代碼推送到遠程服務器的第一步是提供存儲庫所在的URL併爲其命名。要配置要使用的遠程存儲庫並查看所有遠程控制器的列表(可以有多個遠程存儲庫),請鍵入以下內容:

$ git remote add origin ssh://[email protected]/repository.git 
$ git remote -v
origin ssh://[email protected]/repository.git(fetch)
origin ssh://[email protected]/repository.git(push)

第一個命令添加一個名爲“origin”的遠程,並將URL設置爲ssh://[email protected]/repository.git。

您可以根據需要爲遠程命名,但URL需要指向實際的遠程存儲庫。例如,如果您想將代碼推送到GitHub,則需要使用它們提供的存儲庫URL。

配置完遠程後,您現在可以推送代碼了。

您可以通過鍵入以下內容將代碼推送到遠程服務器:

$ git push origin master
計數對象:4,完成。
Delta壓縮最多使用2個線程。
壓縮對象:100%(2/2),完成。
寫入對象:100%(3/3),266字節,完成。
總計3(delta 1),重用1(delta 0)
至ssh://[email protected]/repository.git
   0e78fdf..e6a8ddc master  - > master

“git push”告訴git我們要推送我們的更改,“origin”是我們新配置的遠程服務器的名稱,“master”是第一個分支的名稱。

將來,當您提交要提交到服務器的提交時,只需鍵入“git push”即可。

我希望本文能夠讓您基本瞭解git如何有效地用於開發人員團隊。本系列的下一篇文章將對git分支及其如此有效的原因進行更深入的分析。

 

如何有效使用git分支

 

在版本控制系統領域,GIT可以說是靈活性方面最好的之一。學習語法並瞭解git如何最好地爲您的工作流程和環境提供服務非常容易。本教程將教您如何創建兩個分支(主和開發)以及如何將代碼從開發階段合併到生產中。分支的核心是一系列獨特的代碼更改,具有唯一的名稱。每個存儲庫可以有一個或多個分支。

默認情況下,第一個分支稱爲“master ”。

 

查看分支

在創建新分支之前,我們希望查看所有存在的分支。我們可以通過鍵入以下內容來查看所有現有分支:

git branch -a

在命令的末尾添加“-a”告訴GIT我們想要查看所有存在的分支,包括我們在本地工作空間中沒有的分支。

輸出看起來類似於以下內容:

* master
  remotes/origin/master

輸出第一行中“master”旁邊的星號表示我們當前在該分支上。第二行簡單地表明,在我們的遠程命名原點上,有一個分支,也稱爲master。

現在我們知道如何查看分支,現在是時候創建第一個分支了。

 

創建分支

如本文開頭所述,我們希望爲編碼環境提供開發和生產設置。

我們將默認的“主”分支視爲我們的生產,因此需要爲開發或預生產創建一個分支。

要創建名爲develop的新分支,請鍵入以下內容:

git checkout -b develop

假設我們還沒有名爲“develop”的分支,輸出結果如下:

Switched to a new branch 'develop'

如果已經存在該名稱的分支,GIT會告訴我們:

fatal: A branch named 'develop' already exists.

您可以使用git checkout命令在兩個分支之間來回切換:

git checkout master

要麼

git checkout develop

假設您嘗試切換到的分支存在,您將看到類似於以下內容的輸出:

切換到分支'主'

如果您嘗試切換到不存在的分支,例如

git checkout nosuchbranch

Git會告訴你:

error: pathspec 'nosuchbranch' did not match any file(s) known to git.

既然我們有多個分支機構,我們需要充分利用它們。在我們的場景中,我們將使用我們的“開發”分支來測試我們的更改,並使用主分支將它們發佈給公衆。

爲了說明這個過程,我們需要切換回我們的開發分支:

git checkout develop

 

改變我們的開發分支

在這個分支上,我們將創建一個名爲“develop”的新空白文件。在我們將它合併到主分支之前(在下一步中),它將不存在。

touch develop 

就像在上一個教程中一樣,我們需要告訴git我們要跟蹤這個新文件。

我們可以通過輸入以下命令添加“develop”文件:

git add develop 

上面的命令集將創建一個名爲“develop”的空白文件,並將其添加到GIT。

我們還需要提交此文件,該文件將此文件附加到我們當前所在的分支,即“develop”。

git commit -m "develop file" develop 

此文件現在存在於develop分支上; 正如我們要發現的那樣,它在主分支上不存在。

首先,我們將確認我們目前正處於開發分支。我們可以通過輸入以下內容來完成此操作

git branch 

輸出應類似於以下內容:

* develop
  master

我們之前瞭解到,分支名稱旁邊的星號表示我們當前在該分支上。

運行“ls”命令將向我們顯示存在兩個文件:

ls

輸出將告訴我們,我們的兩個文件分別命名爲“file”和“develop”:

develop file

合併分支之間的代碼

有趣的部分是在我們切換回我們的主分支之後,我們可以使用git checkout命令:

git checkout master

爲了確保我們在主分支上,我們可以運行以下類型:

git branch 

輸出將告訴我們哪個分支是一個,由星號表示。

  develop
* master

再次運行“ls”,似乎我們的新文件丟失了。

file

它不會丟失 - 它在我們的開發分支上,我們在我們的主分支上。

在我們的場景中,此文件表示對已通過我們的開發分支上的所有測試的任何文件(或整個新文件)的任何更改,並且已準備好投入生產。在分支之間移動代碼的過程(通常從開發到生產)稱爲合併

重要的是要記住合併時,我們想要在我們想要合併的分支上。

在這種情況下,我們希望從我們的開發分支(存在“develop”文件)合併到我們的主分支。

牢記這一點,考慮到我們已經在主分支上,我們所要做的就是運行merge命令。

我們可以傳遞給merge命令的一個選項,即“--no-ff”,意味着我們希望git在合併之前保留所有提交消息。這將使跟蹤更改在將來更容易。

要將更改從開發分支合併到主分支,請鍵入以下內容:

git merge develop --no-ff

該命令的輸出將類似於以下內容:

Merge made by the 'recursive' strategy.
 0 files changed
 create mode 100644 develop

再次運行ls命令將確認我們的“develop”文件現在位於我們的主分支上。

develop file

我們現在需要做的最後一件事就是在我們的遠程服務器上進行此更改是爲了推動我們的更改,我們可以藉助git push命令來完成這些更改。

git push

您將看到類似於以下的輸出,確認您從開發分支到遠程服務器上的主分支的合併:

Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 332 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To ssh://[email protected]/repository
   9af2dcb..53649cf  master -> master

結論

按照上面的教程,您應該有一個有效的雙分支工作流程設置,並希望能夠了解分支在GIT中的工作原理。請在留言中讓我們知道你的想法!

 

    英文原作者:傑森科茨  

 

 

如果您對上述的教程仍然感覺還有些不足,可以查看視頻教程:

Git入門:https://www.imooc.com/learn/1052

版本控制工具Git:https://www.imooc.com/learn/208

Git&Github的使用 https://classroom.udacity.com/courses/ud775

 

其他說明:

安裝 Git

現在,你將有機會親自使用 Git,並在 Asteroids 版本庫上練習使用這些命令。爲此,必須安裝 Git。如果已安裝 Git,請使用命令 git --version 查看其版本。如果版本爲 1.8 或更高,則可以繼續觀看下一個視頻。否則,強烈建議你進行升級,因爲 Git 在版本 1.8 中添加了許多新功能,而且我們假定你裝有該版本。

克隆版本庫,要克隆版本庫,請運行 git clone(後跟空格和版本庫 URL)。

Asteroids URL,使用以下 URL 克隆 Asteroids 版本庫:

$ git clone https://github.com/udacity/asteroids.git

退出 git log

要停止查看 git log 的輸出,請按 q(表示退出)。

獲得彩色輸出

要獲得彩色的 diff 輸出,請運行 git config --global color.ui auto

從命令行復制並粘貼

爲了完成本測試題,需要複製並粘貼一些提交的 ID。

Windows

要在 Git Bash 中複製並粘貼,請按照此頁面中的說明執行操作。

Mac

要在 Mac 上的終端中複製並粘貼,請使用 Cmd+C 和 Cmd+V。

Ubuntu

要在 Ubuntu 上的終端中複製並粘貼,請使用 Ctrl+Shift+C 和 Ctrl+Shift+V。

使用 git log 和 git diff

請注意,運行 git log 會列出最近的提交及其相關信息(包括提交 ID)。運行 git diff(後跟兩個提交 ID)會比較這兩個提交的代碼版本。如果需要複習,可以重新觀看此視頻.

輸入提交 ID

如果輸入提交 ID 的前四個或更多個字符更爲輕鬆,則你可以這樣做,而不必粘貼整個 ID。

思考:使用 Git 瀏覽歷史

既然你已具有親自使用 Git 的經驗,現在請將以下問題和你對它的想法添加到你的反思文件中:

如何使用命令 git log 和 git diff 來查看文件的歷史記錄?

在你更新了文檔後,單擊“下一項”,與 Sarah 一起將更多概念添加到圖中。然後,你將學習如何使用 Git 恢復到文件的以前版本。

快速編輯模式

要開啓快速編輯模式以便在 GitBash 中更輕鬆地進行復制和粘貼,請按照此處的說明操作。

最新的提交

最新的提交的提交 ID 爲 3884eab839af1e82c44267484cf2945a766081f3。在檢出較舊的提交後,可使用此提交 ID 返回到最新的提交。

git checkout 的格式

Caroline 爲檢出“Revert controls”提交而鍵入的命令是 git checkout b0678b161fcf74467ed3a63110557e3d6229cfa6

輸入Commit ID

如果輸入提交 ID 的前四個或更多個字符更爲輕鬆,則你可以這樣做,而不必粘貼整個 ID。

 

參考資料:https://classroom.udacity.com/courses/ud775/lessons/2980038599/concepts/29607789520923

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章