git使用之基本語法和理解

git簡介

git是分佈式版本管理工具,首先需要安裝該軟件,可到官網下載。 git依靠快照和指針來管理各個文件,所以速度很快。而分佈式的意義是每個git倉庫都是平等且相同的(初始狀態或更新之後)。
  git命令不做詳解,可參考git提示和官方文檔,git官方文檔:https://git-scm.com/book/zh/v2 。其他相關教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

git倉庫

git目錄是包含.git隱藏目錄的目錄,一般使用git init 初始化一個目錄成爲git目錄。git目錄包含三個區域:工作區、暫存區(stage)、倉庫(commit區)。
工作區存放原始文件,一般是項目文件;通過使用git add 文件名 將工作區文件放入到暫存區,此時被添加的文件已被追蹤,可以通過git status 命令查看;git commit 文件名 將暫存區文件提交到倉庫。
一般的git倉庫分爲本地倉庫和遠程倉庫,須知遠程倉庫和本地倉庫是一樣的概念,並無特殊。遠程倉庫作爲備份點,通常的做法是在本地倉庫進行操作,然後推送到遠程倉庫。
初次獲取遠程倉庫,使用命令:git clone 遠程倉庫地址 [本地倉庫命名] 且只會克隆master分支
後續獲取遠程倉庫的命令是git pull。
本地倉庫推送到遠程倉庫命令:git push origin [分支],推送只會將當前分支的倉庫推送到遠程分支,未commit的(即工作區和暫存區文件)不會被推送。

分支的理解

初始化git目錄後可以使用git branch命令查看當前分支,只有一個master分支,其他的分支需要手動創建和銷燬。
master分支和其他分支本質上是一樣的,只是它標記該分支作爲主分支或主線。
爲什麼要使用分支?分支具有很多優點,一般主分支不作具體開發工作,只做合併其他分支和發佈版本使用,開發測試工作則由其他手動創建的分支完成,每個分支可以完成各自獨立的任務,然後再合併到master分支,分支之間並無干擾。
深入理解分支需要明白下面幾句話:

  1. 所有的分支共用工作區和暫存區,而每個分支的倉庫是獨立的。
    可以做如下測試:在master分支使用git checkout -b dev新建dev分支並切換到dev分支,在dev中新建文件,即工作區文件,未commit之前,使用命令git checkout master切換到master分支,git status查看,可以看到新建的文件,而在dev中commit之後再切換到master查看,就看不到新建的文件了;另一個測試是在dev中新建文件,切換到master分支並提交,此時新建文件是屬於master分支的,dev分支中並無此文件。這就驗證了暫存區是共用的了。
  2. 新建分支依附於根分支,根分支的文件會自動添加到其附屬分支上(內部原理是使用指針而不是拷貝一份)。
    舉例:master分支有文件m.txt,master分支作爲根分支新建dev分支,則dev分支此時的內容和master一樣。dev又新建了文件d.txt,又作爲根分支新建了feature分支,則feature分支有兩個文件m.txt和d.txt。如果其他人更新了master分支,pull到本地後,master分支內容改變,但dev和feature分支內容並沒有改變,因爲其依附於原來的根分支master的提交點(每次提交都是一個提交點)。
  3. 分支的push和pull也是獨立的。
    本質上本地分支和遠程分支交互時操作的是倉庫,由於倉庫是獨立的,所以分支的操作也是獨立的,即推送和拉取分支並不會更新其他的分支。

創建其他分支的目的是完成細化的任務,完成後必須要合併到master分支,首先要先切換到master分支,然後使用命令git merge 分支名 合併。如果合併時有衝突要先解決衝突,解決之後使用命令git add表示衝突已解決,然後就可以正常合併了。
有時候在一個分支工作時需要新建其他的分支完成其他的工作,比如修復bug,爲避免干擾和衝突,當前分支的暫存區和工作區必須清空(上面第一句話:共用暫存區),一種方法是commit;還有一種方法是使用命令git stash將當前暫存區內容隱藏起來,等新分支完成任務回到原分支後,再使用命令git stash pop恢復即可。但此命令只能操作暫存區內容,所以工作區內容必須先add到暫存區才能stash。
待續…

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