Linux中國

掌握 Git 之美

使用 7 條簡單的 Git 命令開始你的軟體開發之旅

你是否曾經想知道如何學好 Git?你長期以來都是跌跌撞撞地在使用 Git。最終,你總需要掌握它的竅門。這就是我寫這篇文章的原因,我將帶你去啟蒙之旅。這兒是我關於如何加快 Git 學習過程的基本指南。我將介紹 Git 的實際情況以及我使用最多的 7 條 Git 命令。本文主要針對有興趣的開發人員和大學新生,他們需要關於 Git 的介紹以及如何掌握基礎知識。

你可以往前繼續閱讀整篇文章,或者只讀 TLDR; 部分,儘管這將使我很受傷。

TLDR;

在學習 Git 的過程中,請養成下面這些步驟的習慣:

  1. 隨時使用 git status
  2. 只更改那些你真正想更改的文件。
  3. git add -A 會是你的朋友。
  4. 隨時使用命令 git commit -m "meaningful messages"
  5. 做任何推送(push)之前先使用命令 git pull,但是這需要在你提交過一些更改之後。
  6. 最後,git push推送提交的更改。

良宵莫辜負

對任何開發人員來說,通常第一步都是選擇一個廣泛使用的地方託管他或她的代碼庫。那就是,GitHub。它是一切有關代碼的聚集地。要理解 GitHub 的概念,你先需要知道什麼是 Git。

Git 是一款基於命令行的版本控制軟體,在 Windows 和 Mac 系統上也有幾款可用的桌面應用。 Git 由 Linux 之父 Linus Torvalds 開發,Linus Torvalds 還是是計算機科學中最有影響力的人物之一。因為這一優勢,Git 已經成為絕大多數軟體開發人員關於共享和維護代碼的標準。這一大段話,讓我們將其細細道來。正如它的名字所說,版本控制軟體 Git 讓你可以預覽你寫過的代碼的所有版本。從字面上來說, 開發人員的每個代碼庫都將永遠存儲在其各自的倉庫中,倉庫可以叫做任何名字,從 pineappleexpress 都行。在此倉庫開發代碼的過程中,你將進行出無數次的更改,直到第一次正式發布。這就是版本控制軟體如此重要的核心原因所在。它讓作為開發人員的你可以清楚地了解對代碼庫進行的所有更改、修訂和改進。從另外一個方面說,它使協同合作更容易,下載代碼進行編輯,然後將更改上傳到倉庫。然而,儘管有了這麼多好處,然而還有一件事可以錦上添花。你可以下載並使用這些文件,即使你在整個開發過程中什麼事也沒有做。

讓我們回到文章的 GitHub 部分。它只是所有倉庫的樞紐(hub),這些倉庫可以存儲在其中並在線瀏覽。它是一個讓有著共同興趣的人相聚的地方。

千里之行始於足下

OK,記住,Git 是一款軟體,像任何其他軟體一樣,你首先需要安裝它:

Git - 安裝 Git,如果你希望從源代碼安裝 Git,你需要安裝這些 Git 的依賴庫: autotools —— 來自 git-scm.com

Tips:請點擊上面的鏈接,然後按照說明開始。

完成了安裝過程,很好。現在你需要在你的瀏覽器地址欄輸入 github.com 訪問該網站。如果你還沒有帳號的話需要新創建一個帳號,這就是你的起舞之處。登錄並創建一個新倉庫,命名為 Steve ,沒有什麼理由,只是想要一個名為史蒂夫的倉庫好玩而已。選中 「Initialize this repository with a README」 複選框並點擊創建按鈕。現在你有了一個叫做 Steve 的倉庫。我相信你會為你自己感到自豪。

現在開始在使用 Git

現在是比較有趣的部分。你將把 Steve 克隆到你本地的機器上。可以把這個過程看作從 Github 上複製倉庫到你的電腦上。點擊 「clone or download」 按鈕,你將看到一個類似下面這樣的 URL:

https://github.com/yourGithubAccountName/Steve.git

複製這個 URL 並打開命令提示符窗口。現在輸入並運行條命令:

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

Abrakadabra!Steve 倉庫已經被自動克隆到了你的電腦上。查看你克隆這個倉庫的目錄,你會看到一個叫做 Steve 的文件夾。這個本地的文件夾現在已經鏈接到了它的 「origin」 ,也就是 GitHub 上的遠程倉庫。

記住這個過程,在你的軟體開發工程人員的職業生涯中你一定會重複這個過程很多次的。完成所有這些準備工作之後,你就可以開始使用最普通且常用的 Git 命令了。

你現在已經開始在真實場景使用 Git 了

找到 Steve 目錄並在該目錄中打開命令提示符窗口,運行下面的命令:

git status

這會輸出你的工作目錄的狀態,讓你知道所有你編輯過的文件。這意味著它顯示了遠程庫中和本地工作目錄中之間的文件差異。status 命令被用來作為 commit 的模版,我將在這篇教程後面進一步談論 commit 。簡單的說,[git status][1] 告訴你你編輯過哪些文件,以給你一個你想要上傳到遠程庫的概述。

但是,在你做任何上傳之前,你首先需要做的是選擇你需要發送回遠程庫的文件。使用下面命令完成:

git add

接著在 Steve 目錄新建一個文本文件,可以取一個好玩的名字 pineapple.txt。在這個文件裡面隨便寫些你想寫的內容,返回命令提示符,然後再次輸入 git status。現在,你將看到這個文件以紅色出現在標記 「untracked files」 下面。

On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
  (use "git add <file>..." to include in what will be commited)

pineapple.txt

下一步就是將它添加到暫存區(staging)。暫存區可以看作是這樣的一個環境:你做過的所有更改在提交時都將捆綁為一個更改而被提交。現在,你可以將這個文件加入暫存區:

git add -A

-A 選項意味著所有你更改過的文件都會被加到暫存區等待提交。然而, git add 非常靈活,它也可以像這樣一個文件一個文件的添加:

git add pineapple.txt

這種方法讓你有能力選擇你想要暫存的每一個文件,而不用擔心加入那些你不想改變的東西。

再次運行 git status,你會看到如下輸出:

On branch master
Your branch is up-to-date with &apos;origin/master&apos;.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

new file:   pineapple.txt

準備好提交更改了嗎?開始吧。

git commit -m "Write your message here"

Git commit 命令會將存儲在暫存區中的文件和來自用戶的用於描述更改的日誌信息一起存儲在一個新的地方。-m選項加入了寫在雙引號內的信息。

再次檢查狀態,你會看到:

On branch master
Your branch is ahead of &apos;origin/master&apos; by 1 commit.
  (use "git push" to publish your local commits)
nothing to commit, working directory clean

所有的更改現在都被加入到一次提交當中了,同時會有一條與你所做相關的信息。現在你可以用 git push 將這次提交推送到遠程庫 「origin」了。這條命令就像字面意義所說,它會把你提交的更改從本地機器上傳到 GitHub 的遠程倉庫中。返回到命令提示符,然後運行:

git push

你會被要求輸入你的 GitHub 帳號和密碼,之後你會看到類似下面的這些內容:

Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 280 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/yourGithubUserName/Steve.git
   c77a97c..08bb95a  master -> master

就是這樣。你已經成功上傳了你本地的更改。看看你在 GitHub 上的倉庫,你會看到它現在包含了一叫做 pineapple.txt 的文件。

如果你是一個開發小組的一員呢?如果他們都推送提交到 「origin」,將會發生什麼?這就是 Git 真正開始發揮它的魔力的時候。你可以使用一條簡單的命令輕鬆地將最新版本的代碼庫 pull 到你本地的機器上:

git pull

但是 Git 也有限制:你需要有相匹配的版本才能推送到 「origin」。這意味著你本地的版本需要和 origin 的版本大致一樣。當你從 「origin」 拉取(pull)文件時,在你的工作目錄中不能有文件,因為它們將會在這個過程中被覆蓋。因此我給出了這條簡單的建議。在學習 Git 的過程中,請養成下面這些步驟的習慣:

  1. 隨時使用 git status
  2. 只更改那些你真正想更改的文件。
  3. git add -A 會是你的朋友。
  4. 隨時使用命令 git commit -m "meaningful messages"
  5. 做任何推送(push)之前先使用命令 git pull,但是這需要在你提交過一些更改之後。
  6. 最後,git push推送提交的更改。

嘿!你還在看這篇文章嗎?你已經看了很久了,休息一下吧!

休息好了嗎?好的!讓我們來處理一些錯誤。如果你不小心更改了一些你本不應該更改的文件後怎麼辦呢?不需要擔心,只需要使用 git checkout。讓我們在文件 pineapple.txt 里更改一些內容:在文件中加入一行,比方說,「Steve is mega-awesome!」 。然後保存更改並用 git status 檢查一下:

On branch master
Your branch is up-to-date with &apos;origin/master&apos;.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

modified:   pineapple.txt

no changes added to commit (use "git add" and/or "git commit -a")

正如預料的那樣,它已經被記錄為一次更改了。但是,假如 Steve 實際上並不是很優秀呢?假如 Steve 很差勁呢?不用擔心!最簡單的還原更改的方式是運行命令:

git checkout -- pineapple.txt

現在你會看到文件已經恢復到了先前的狀態。

但是假如你玩砸了呢?我是說,事情已經變得混亂,並且需要把所有東西重置到與 「origin」 一樣的狀態。也不需要擔心,在這種緊急情況下我們可以享受 Git 的美妙之處:

git reset --hard

git reset 命令和 --hard 選項一起可以拋棄自上次提交以來的所有更改,有些時候真的很好用。

最後,我想鼓勵你儘可能多地使用 Git。這是能夠熟練使用它的最好學習方式。除此之外,養成閱讀 Git 文檔的習慣。一開始可能會有些雲里霧裡,但是過段時間後你就會明白它的竅門了。

希望你們(小夥子和姑娘們)讀這篇文章的時候會和我寫它時一樣的開心。如果你認為這篇文章對別人有用,你盡可以與別人分享它。或者,如果你喜歡這篇文章,你可以在下面點下贊以便讓更多的人看到這篇文章。

via: https://hackernoon.com/how-to-master-the-art-of-git-68e1050f3147

作者:Adnan Rahić 譯者:zhousiyu325 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國