工作中我是怎么使用git的--git教程 上


本篇為上篇,介紹基本概念和一個人的基本git操作流程

中篇
下篇

上篇

起步

在教程之前,我們先來做一個git的"Hello, World!"。沒有安裝git的同學可以進入點擊進入官網下載。以下內容以Windows系統舉例。

  1. 創建一個新目錄leney
  2. 進入該目錄,右鍵選擇 Git Bash Here。
  3. 在命令框中輸入命令git init。好了一個git倉庫就搭建完成了,接着我們往里面添加內容。
  4. 新建一個README.md文件,輸入Hello, World!,保存。
  5. 回到命令框,輸入命令git add .,再輸入命令git commit -m "Hello, World!"
  6. 至此,一次git操作就算完成了,你可以再輸入命令git log查看剛剛提交的內容。

git的五塊區域

首先,我們花幾分鍾的時間來了解一下git的基本概念。在git中有五塊主要區域:工作區,緩存區,貯藏區,本地倉庫,遠程倉庫。

git五塊區域

  • 工作區,也就是我們平時對文件進行的增刪改,都是在工作區中。
  • 緩存區,工作區中的文件在確定准備commit時,需要通過add命令添加到緩存區,之后才能通過commit生成提交記錄。
  • 貯藏區,在緩存區中的文件通過stash命令可以進入貯藏區,也可以隨時提取出來。
  • 本地倉庫,就是本地的git倉庫了,我們在起步就成功創建了一個本地倉庫。
  • 遠程倉庫,就是遠程的git倉庫了,可能是來自於github, gitee或者公司自己搭建的gitlab, gitea等等平台。

我們對文件的增刪改首先會反映在工作區,然后通過add進入緩存區,再通過commit形成一次提交記錄,每一次提交均會生成一串唯一編碼。一個個提交記錄就組成了我們需要的版本。

這里給不熟悉git的各位提兩點建議。

  1. 可以將工作區和緩存區合並成一個區域來看待,但是要記住在git操作過程中需要先add才能commit。以下我將合並的區域稱為開發區
  2. 可以忽略貯藏區,並且建議盡量不要去使用stash命令,不建議使用的原因我會在分支一節給出。

分支

分支創建和切換

然后我們要着重了解一下什么是分支。在剛才的起步中,命令框中會展示出我們當前所在的目錄和括號中的master,這個master便是我們當前所在的分支。分支和分支之間是互相獨立的,這保證了當我們在某個分支進行操作時不會影響到其他分支。現在讓我們來實際操作看看吧。

  1. 回到git倉庫目錄中,喚出命令框,輸入git checkout -b develop,來創建並切換到develop分支。
  2. 這里我們使用git branch來展示一下當前所有的分支,便可以得到master和develop。
  3. 新建文件leney.txt,輸入文字"這來自於develop",保存。
  4. 打開README.md,新增一行,輸入"分支切換 OK",保存。
  5. 使用addcommit命令來生成一次提交記錄。
  6. 現在我們通過git checkout master回到我們master分支,可以發現剛剛我們新建的leney.txt文件消失了,同時我們在README.md中的更改也不見了。

切換分支的注意點

通過以上的操作,我們便了解到分支的基本作用了。要注意,在切換分支時最好保證你當前開發區的內容均已進行addcommit,否則你開發區的內容會進入到你切換到的分支甚至與你要切換的分支內容沖突而切換失敗。這里我們實際操作看看。

  1. 剛剛我們在develop分支創建了leney.txt。
  2. 現在我們在master分支也創建一個leney.txt並輸入文字"這來自於master",保存。
  3. 現在我們使用git status,查看一下我們當前開發區都有什么內容,可以看到leney.txt出現在開發區中。
  4. 這次我們不進行addcommit,直接使用git checkout develop切換到develop分支。
  5. 可以看到出現一個報錯,這便是因為我們當前開發區的內容與要切換的分支內容沖突。
error: The following untracked working tree files would be overwritten by checkout:
        leney.txt
Please move or remove them before you switch branches.
Aborting

那么為了解決這個問題,我們可以通過三種方式

  1. 就是addcommit形成一次提交,從而清空我們的開發區(我推薦這個做法)。
  2. 通過stash命令將緩存區的內容保存到貯藏區(注意,這里只能保存緩存區的內容,工作區需要通過add進入緩存區)。
    但是stash命令會存在一個問題,無法生成提交記錄,也就無法體現在版本控制流程中。一旦由於忘記取出貯藏區的內容並進行過提交,下次取出時很可能帶來文件沖突而增加工作量。所以推薦大家使用addcommit形成提交記錄進行清空。
  3. 清除報錯信息中的文件的修改,也就是把之前修改的內容還原。

現在讓我們選擇方式3,放棄修改,把leney.txt文件刪除。

分支合並

剛才我們創建了leney.txt后想要切換到develop分支失敗,我們選擇把leney.txt文件刪除。現在讓我們把存在於develop分支上的leney.txt文件拿到master分支下,這里就需要使用到Git的分支合並merge功能。

  1. 確保當前在master分支,如果不是,請切換到master。
  2. 輸入命令git merge develop

可以看到leney.txt出現在我們的目錄中,這樣我們就合並成功了。

分支刪除

當我們不再需要某個分支時需要進行刪除,我們可以使用branch命令來進行,下面讓我們實踐一下。

  1. 確保當前在master分支,如果不是,請切換到master。
  2. 通過git branch delete-me創建新分支delete-me。
  3. 通過git branch可以看到我們剛剛創建的新分支。
  4. 使用命令git branch -d delete-me來刪除分支。

這樣,我們就完成了分支的刪除。對於分支的刪除有幾個注意點。

  • 刪除的分支不能是當前所在分支
  • 刪除的分支若是有未被合並到主分支(通常是master)的內容,則需要使用git branch -D

本地倉庫和遠程倉庫的同步

push

學會了本地倉庫的提交和分支操作,讓我們來試試看如何與遠程倉庫同步。這里我選擇的是Gitee

  1. 來到Gitee,參考幫助中心創建一個倉庫。(第一次使用的朋友記得在個人中心的SSH公鑰中添加自己電腦的公鑰,詳見Gitee幫助中心)。
  2. 到倉庫頁面招到我們的遠程倉庫的ssh地址並復制git@gitee.com:leney/test.git。
  3. 來到本地,通過git clone git@gitee.com:leney/test.git將遠程倉庫拉取到本地。
  4. 進入test目錄添加README.md,輸入文字"遠程倉庫 push OK",保存。
  5. 通過addcommit進行提交。
  6. 到這我們對本地倉庫的操作已經完成了,接着輸入命令git push便可以將我們當前對master分支的操作推送到遠程倉庫中。
  7. 來到Gitee倉庫便可以看到我們剛才的提交了。

pull

我們通過push可以將本地同步到遠程,那么遠程同步到本地就需要用到pull命令了。現在我們試一下。

  1. 回到目錄上一層再來做一次clone,這次我們輸入命令git clone git@gitee.com:leney/test.git test2,指定目錄名,避免目錄名相同報錯。
  2. 進入test2目錄我們可以看到這次拉去的內容有了README.me。沒錯,clone會默認拉取最新的內容。
  3. 現在我們打開README.md,輸入文字"遠程倉庫 pull OK",保存。
  4. 進行add, commit, push操作,這樣我們就又推送了新的提交到遠程倉庫。
  5. 來到原先的test目錄,使用git pull命令就可以拉取到我們剛剛在test2目錄中新增的內容了。

標簽

通常我們會經歷項目發布之后的更新迭代,和書本一樣有第一版第二版,也有比如《尼爾:機械紀元 ver.1.22474487139...》。在Git中的體現就是標簽了,當我們的項目開發到一定階段需要發布的時候,我們可以通過tag命令來打上標簽,那么來實踐下。

  1. 打開git bash,輸入命令git tag v1.0
  2. 輸入git tag來查看當前項目的所有標簽。
  3. 輸入git show v1.0來查看剛才我們創建的標簽的信息和對應的提交記錄。

好了,通過剛才的命令我們就成功標記了v1.0這個版本。當我們的項目達到下一次可以發布的時候,再次進行標記,就可以通過git checkout tag名來實現版本和版本之間的切換了。

同時,標簽也是可以推送到遠程的,通過git push origin --tags可以推送多有的標簽,而要推送某一個標簽則使用git push origin tag名,比如git push origin v1.0

最后,可以通過git tag -d tag名來刪除標簽。

最簡單的工作流程

在之前的章節中,我們通過add, commit成功進行了一次提交,通過checkout創建了分支並進行分支切換,使用push, pull讓本地倉庫和遠程倉庫進行同步,那么來到工作中又是怎么操作的呢?

  1. 首先我們需要通過clone到遠程倉庫獲取項目,生成一個和遠程倉庫關聯的本地倉庫。
  2. 然后切換到我們需要操作的分支,或是新建一個分支,再進行開發任務。
  3. 開發完畢后,使用addcommit生成提交記錄。
  4. 使用push同步到遠程,然后切換到其他分支繼續開發其他任務。

那這就是最簡單的做工作流程了,不過通常我們工作中會進行多人協同開發,操作和管理會復雜許多,下一期我將介紹一下git在多人協同開發的使用。

總結

總結一下本文涉及到的命令。

  • init創建一個本地倉庫。
  • clone將遠程倉庫拉取到本地倉庫。
  • add將文件從工作區添加到緩存區,本文使用了git add .來進行添加,也可以git add xxx來指定文件名。
  • commit將文件從緩存區提交到本地倉庫。
  • push將本地倉庫同步到遠程倉庫。
  • pull從遠程倉庫同步到本地倉庫。
  • checkout切換分支,git checkout -b xxx則可以創建並切換到xxx分支,沒有-b便是切換。
  • merge合並分支。
  • status查看當前工作區和緩存區的內容。
  • log查看提交記錄。
  • branch查看和操作倉庫所有分支。
  • stash將緩存區內容提交到貯藏區,Leney我不推薦使用。
  • tag可以在當前提交記錄生成一個標簽。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM