Git---3.Git 管理代碼快速上手

剛進入新公司,被告知團隊是用 Git 管理項目代碼 的,而你卻從來沒用過 Git。縱然同事告訴你「沒 事,先自學一下」「有問題可以問我」,但你肯定 不想一進公司就花太多時間在自我學習上,也不想 過多地打擾這些剛認識的同事。怎麼辦?

對你來說,最重要的是,先知道 Git 怎麼用。先把 最基本的掌握了,至於正規團隊使用 Git 有什麼額
外要求、Git 有什麼高級用法、Git 的原理這些,都 可以放在這之後。萬事開頭難,你先把 Git 最基本 的使用掌握了,後面的再一步一步來。

1.安裝 Git

點擊 這裏 去下載個 Git ,安裝到你的機器上。或 者如果你喜歡用 Homebrew 或 apt 什麼的來安裝 都好,總之,把它安裝好。

裝好以後,就可以正式開始上手 Git 了。

2.創建一個練習項目

學習的時候最好別拿團隊的正式項目練手,先在 GitHub 上建一個自己的練習項目。

訪問 GitHub (用別的平臺比如 bitbucket 什麼的也行) 註冊或登錄您的賬號 點擊右上角的「New Repository」來新建遠 程倉庫
在這裏插入圖片描述
進入倉庫設置頁面填寫信息:
① 是你的 倉庫名,這個倉庫名同樣會被 GitHub 設置爲 你的倉庫的根目錄的名稱;
② 是爲 .gitignore 設置項目類型, .gitignore 是 Git 倉庫中的一個特殊的文本文件,它裏面 記錄了你不希望提交到倉庫的目錄和文件的名 稱或類型,例如你的 /build 目錄;
把 ① 和 ② 填好之後,就可以點 ③ 來完成遠程倉庫的 創建了。
在這裏插入圖片描述
創建完的遠程倉庫大概長這樣:
在這裏插入圖片描述
點擊右邊的「Clone or download」,然後把倉庫 的 clone 地址複製到剪貼板:
在這裏插入圖片描述
那麼clone 地址是什麼?










3.把遠程倉庫取到本地

接下來就可以把遠程倉庫取下來了。取的方式很簡 單:在 Terminal 或 cmd 中切換到你希望放置項目 的目錄中,然後輸入:

git clone 你剛複製的地址

Git 就會把你的遠程倉庫 clone 到本地。在這個過 程中,你可能會需要輸入你的 GitHub 用戶名和密 碼:
在這裏插入圖片描述
輸入正確的用戶名和密碼以後,你會看到你的當前 目錄下多了一個新的子目錄,它的名字和剛纔新建 的 GitHub 倉庫名一致:
在這裏插入圖片描述
進入這個目錄,你會發現這裏除了你剛纔添加的 LICENSE.gitignore 文件外,還有一個叫做 .git 的隱藏目錄。
在這裏插入圖片描述
這個 .git 目錄,就是你的本地倉庫(Local Repository),你的所有版本信息都會存在這裏。 而 .git 所在的這個根目錄,稱爲 Git 的工作目錄(Working Directory),它保存了你當前從倉 庫中籤出(checkout)的內容。現在你在項目的目 錄下輸入:





git log

在這裏插入圖片描述
在這裏你只能看到一個提交,這個提交是 GitHub 幫你做的,它的內容是創建你的初始 .gitignoreLICENSE 這兩個文件。圖中第一行中的 commit 右邊的那一大串字符(09773235… 21411),是這個 commit 的 SHA-1 校驗和(如 果不知道什麼是 SHA-1,你可以暫時把它簡單理解 爲這個 commit 的 ID);後面括號裏的內容 (HEAD -> master …)稍後再講;第一行的下 面,依次是這個 commit 的作者、提交日期和提 交信息,其中提交信息記錄了這個提交做了什麼,是提交者填寫的(當然,這條提交信息是 GitHub 幫你寫的)。
簡單看一下這些信息,然後按 q 鍵退出吧,往下 繼續。

4.寫個提交試試

把遠程倉庫取到本地之後,你就可以開始嘗試提交 代碼了。不過爲了方便,你不必真的寫代碼,你可 以在工作目錄下創建一個文本文件,例如 shopping list.txt
在這裏插入圖片描述
在這裏插入圖片描述

Git 的提交是用的 commit 指令。不過…… 你現在 還不能直接提交。你現在在 Terminal 輸入:

git status

status 是用來查看工作目錄當前狀態的指令:
在這裏插入圖片描述
這段文字表述了很多項信息:

  • 你在 master branch
  • 當前 branch 沒有落後於 origin/master
  • 你有 untracked files (未追蹤的文件),文 件名是 shopping list.txt
  • 你可以使用 git add 來開始追蹤文件。

其中前兩條你可以暫時先不理,branch 的東西我 在後面會講。關於後兩條,簡單說一下:
從上面的信息可以看出, shopping list.txt 這 個文件目前屬於 “untracked” 狀態,它的意思是 Git 倉庫對它沒有進行任何記錄,你在提交的時候 不會把它提交上去,查看提交歷史也不會看到它。 總之,對於 Git 倉庫來說,它是不存在的。
而你現在想提交這個文件,所以首先,你需要用 add 指令來讓 Git 開始跟蹤它:

git add shopping\ list.txt

輸入這行代碼,Terminal 不會給你反饋信息。但這 時你再執行一次 git status 在這裏插入代碼片,你會發現顯示內容變了:
在這裏插入圖片描述
可以看到, shopping list.txt 的文字變成了綠 色,它的前面多了「new file:」的標記,而它的描 述也從 “Untracked files” 變成了 “Changes to be commited”。這些都說明一點: shopping list.txt 這個文件的狀態從 "untracked"(未跟 蹤)變成了 "staged"(已暫存),意思是這個文件 中被改動的部分(也就是這整個文件啦)被記錄進 了 staging area(暫存區)。

解釋一下 “stage” 這個詞,這個詞對我們中國 人可能有一些理解難度。按我們英語課本上的 內容來看,stage 是一個名詞,它的意思是「舞臺」。可是不論從詞性還是詞義,「舞 臺」都不太能解釋 "stage"或 “staging area” 的意思。實質上,Git 中的 stage 取自這個詞 的另一個意思:組織和準備某個事件。而 “staging area” 的意思也並不是「舞臺區域」,而是「用來彙集物品或材料以備使用的 區域」的意思。

.
所以 stage 這個詞在 Git 裏,是「集中收集改 動以待提交」的意思;而 staging area ,就 是一個「彙集待提交的文件改動的地方」。簡 稱「暫存」和「暫存區」。至於 staged 表示 「已暫存」,就不用再解釋了吧?

所謂的 staging area,是 .git 目錄下一個叫做 index 的文件(嗯,它的文件名並不叫 stage )。你通過 add 指令暫存的內容,都會被寫進這 個文件裏。
現在文件已經放進了暫存區,就可以提交了。提交 的方式是用 commit 指令:

git commit

在這裏插入圖片描述
然後你會進入這樣一個界面,這個界面是用來填寫 提交信息(commit message)的。根據操作系統 以及設置的不同,這個界面的編輯器可能是 nano
所以 stage 這個詞在 Git 裏,是「集中收集改 動以待提交」的意思;而 staging area ,就 是一個「彙集待提交的文件改動的地方」。簡 稱「暫存」和「暫存區」。至於 staged 表示 「已暫存」,就不用再解釋了吧?

或者 vi 或者別的什麼,總之如果你不會用它,那麼 建議你儘快上網搜搜它的用法,因爲 Git 的操作會 經常用到它。在這裏我只簡單說一下它的最基本用 法:

  • 在初始狀態下,你是在命令模式,不能編輯 這個文件,你需要按一下 “i”(小寫)來切換 到插入模式,然後就可以輸入你的提交信息 了:在這裏插入圖片描述
  • 在輸入完成後別按回車,而是要按 ESC 鍵返 回到命令模式,然後連續輸入兩個大寫的 “Z”(用 Shift 鍵或 Capslock 鍵都可以), 就保存並退出了。在這裏插入圖片描述
    這樣,一次提交就完成了。如上圖這樣,從界面中 你可以看到這次提交的簡單信息。這時如果你再執 行一次剛纔執行過的 git log (還記得這個指令是什麼意思嗎?它會列出你的提交歷史):
git log

在這裏插入圖片描述
可以看到,你的這條提交被列在了最上面,現在你 的提交歷史中有兩條記錄了。這說明,你已經成功 做了一次提交到本地倉庫,它已經被保存在了 .git 這個目錄裏的某個地方了。

5.更新文件後再來個提交

想來想去,我還是覺得把「java」刪掉吧:
在這裏插入圖片描述

趕緊把它提交上去。提交之 前先看看文件狀態是個好習慣:

git status

在這裏插入圖片描述
可以看到, shopping list.txt 又變紅了,不過 這次它左邊的文字不是 “New file:” 而是
“modified:”,而且上方顯示它的狀態也不是 “Untracked” 而是 “not staged for commit”,意 思很明確:Git 已經認識這個文件了,它不是個新
git status
文件,但它有了一些改動。所以雖然狀態的顯示有 點不同,但處理方式還是一樣的:



git add shopping\ list.txt

這時再 status 一下,就會看到 shopping list.txt 已經 staged (“to be commited”) 了:

git status

在這裏插入圖片描述
好,最後一步, commit

git commit

在這裏插入圖片描述
這時再看看 log ,你已經有三條 commit 了:

git log

在這裏插入圖片描述

6.把提交推送到中央倉庫

到現在爲止,已經寫了兩條提交,但它們都還在本 地倉庫。爲了把代碼分享出去,你還需要把這些提 交上傳到中央倉庫。如果你現在再看一下git log把提交推送到中央倉庫 status

git status

在這裏插入圖片描述
你會看到,Git 提示你的當前 branch 已經領先於 ( “ahead of” )'origin/master' 兩個提交了。就 像上面我說的,branch 這個概念我到後面再講, origin/master 的中的 origin 是遠端倉庫的名 稱,是你在用 clone 指令初始化本地倉庫時 Git 自動幫你起的默認名稱; masterorigin 上 的分支名稱。不過對於現在來說,可以暫時把 origin/master 簡單理解爲「中央倉庫」。也就 是說,這句話是告訴你,你的本地倉庫已經領先中 央倉庫兩個提交了。這兩個提交很明顯就是指的剛 才那兩個關於 shopping list.txt 的提交。

而這句話的下面也說明了,你可以使用 git push 來把你的本地提交發布(即上傳到中央倉庫)。所 以很簡單,照做吧:

git push

在這裏插入圖片描述
由於這是聯網操作,所以在這個過程 GitHub 會再 次向你索要賬戶和密碼。填入正確的賬戶和密 碼, push 操作就完成了。這時你再去你的 GitHub 倉庫頁面看一下:
在這裏插入圖片描述
你會發現 shopping list.txt 文件已經在上面 了,並且 commits 的數量從一個變成了 3 個。這 說明你已經成功把本地倉庫的提交推送到了服務器。


如果覺得一遍遍地輸入密碼很煩,可以按照 這 個頁面提供的方案來把密碼保存起來。 另外還有一個更簡單但安全性低一些的方案。 執行這行代碼:

git config credential.helper store

在這之後你只需要再輸入一次密碼, Git 就會 把你的密碼保存下來,這之後就再也不用輸入 了。說它「安全性低」,是因爲這條指令會讓 Git
把你的密碼以明文形式保存在你的電腦 上。具體這兩種保存密碼的方案選擇哪個,看 你自己了

7.小結

在這一節裏,描述了 Git 的最基本的工作模型:

  • 從 GitHub 把中央倉庫 clone 到本地(使用命 令: git clone
  • 把寫完的代碼提交(先用 git add 文件名 把文件添加到暫存區,再用 git commit 提 交)
    – 在這個過程中,可以使用 git status 來隨時查看工作目錄的狀態
    – 每個文件有 “changed / unstaged”(已修改), “staged”(已修改並暫存), “commited”(已提交) 三種狀態, 以及一種特殊狀態 “untracked”(未跟蹤)

  • 提交一次或多次之後,把本地提交 push 到 中央倉庫( git push )

8.注意

  • 以上所有的命令行操作都是 在項目工程上打開 “Git Bash Here” 這個命令行窗 口上操作的;
  • 所有的命令都有快捷提示補充功能 tab 鍵,比如輸入 “git status” 這個命令時,只需 要輸入 “git stat” 再按 tab 鍵就補充剩下的了,其 他也是;
  • 上面提到的都是一個文件一個文件的添加 到 staged,所以用 “git add 文件名”,添加所有 文件到暫存區可以直接用 “git add .”,提交直 接用 “git commit -m'你提交的信息’”,推到中央 倉庫也可以直接用"git push origin master"就好 了;
  • 上面提到輸入用戶名和密碼問題,只把 項目 clone 下來時不用"https 的那個 url",而是 用“ssh 的那個 url” 這樣就不需要每次操作輸入 用戶名和密碼了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章