
Git是一種分布式版本控制系統,由Linux之父Linus開發。
所謂分布式版本管理系統,就是在每一台機器上都有一個完整的倉庫。
Git官網:git
在官網上可以擷取Git的安裝軟體。
除此之外,還可以下載下傳《progit》——這是最棒的Git學習資料,而且有中文版本。
從 <code>https://git-scm.com/downloads</code>官方下載下傳位址下載下傳對應的作業系統版本一步步安裝即可。
安裝完成之後,在任意目錄下,右鍵 <code>Git Bash Here</code>
全局配置郵箱和使用者名(<code>–global</code>表示全局配置,也可以不配置,每個倉庫單獨配置)
Git有四個工作區域:
工作區
簡單說工作區就是我們項目的目錄。
倉庫區/本地倉庫
工作區有一個<code>.git</code>目錄,其實這個不是工作區,是Git的版本庫,存儲了Git倉庫的所有版本資訊
暫存區
暫存區域是一個檔案,儲存了下次将送出的檔案清單資訊,一般在 Git 倉庫目錄中。 有時候也被稱作“索引”,
不過一般說法還是叫暫存區域。
遠端倉庫
對于分布式版本管理系統,遠端倉庫不是必須存在的,但是通常項目都會有遠端倉庫。例如<code>Github</code>就是我們非常熟悉的遠端倉庫。
基本的Git工作流程如下:
在工作目錄修改檔案
暫存檔案,将檔案快照放入暫存區
送出更新,找到暫存區的檔案,将快照永久性存儲到到 Git 倉庫區(本地)
将本地倉庫的變更推送到遠端倉庫
以上幾個區域的關系可以用下圖表示:
分支是為了将修改記錄的整個流程分開存儲,讓分開的分支不受其它分支的影響,是以在同一個資料庫裡可以同時進行多個不同的修改。
Git 為我們自動建立的第一個分支,也叫主分支,一般其它分支開發完成後都要合并到 master
在git中,檔案主要有四種狀态:
Untracked: 未跟蹤, 此檔案在檔案夾中, 但并沒有加入到git庫, 不參與版本控制. 通過<code>git add</code> 狀态變為<code>Staged</code>.
Unmodify(Committed): 檔案已經入庫, 未修改, 即版本庫中的檔案快照内容與檔案夾中完全一緻. 這種類型的檔案有兩種去處, 如果它被修改, 而變為<code>Modified</code>. 如果使用<code>git rm</code>移出版本庫, 則成為<code>Untracked</code>檔案
Modified: 檔案已修改, 僅僅是修改, 并沒有進行其他的操作. 這個檔案也有兩個去處, 通過<code>git add</code>可進入暫存<code>staged</code>狀态, 使用<code>git checkout</code> 則丢棄修改過, 傳回到<code>unmodify</code>狀态, 這個<code>git checkout</code>即從庫中取出檔案, 覆寫目前修改
Staged: 暫存狀态. 執行<code>git commit</code>則将修改同步到庫中, 這時庫中的檔案和本地檔案又變為一緻, 檔案為<code>Unmodify</code>狀态. 執行<code>git reset HEAD filename</code>取消暫存, 檔案狀态為<code>Modified</code>
看完上面的Git基礎,你可能有一些迷惑,接下來,我們以實際工作中開發的流程來加深對Git的了解吧。
可以通過在工作區使用<code>git init</code>來初始化一個Git倉庫,但通常開發中我們不會這樣做,因為實際的項目大部分已經進行了部分開發,并進行了版本管理,是以我們首先做的是從遠端倉庫克隆項目。
這裡我從Gitee(一般開發項目的遠端倉庫是部署在内網的GitLab) <code>fork</code>了一個開源項目,将這個項目作為遠端倉庫的項目:
點選<code>克隆下載下傳</code>,可以看到項目的路徑,
<code>HTTPS</code>是憑據式的路徑,使用此路徑,向遠端倉庫推送代碼的時候需要憑據(賬号密碼);
這種方式向遠端倉庫送出,會要求賬号密碼,輸入完成之後,Win10作業系統可以選擇記住憑據,這樣就不用每一次都輸入了,Win10作業系統管理憑據 <code>控制台 → 使用者帳戶 → 憑據管理器 → Windows憑據</code>![]()
全棧開發者Git使用指南一、Git基礎二、Git應用實踐
<code>SSH</code>是秘鑰式的路徑,向遠端倉庫推送代碼的時候,需要本地的私鑰和遠端倉庫的公鑰對應。
SSH配置可以參考 Windows配置Github、Gitee共存的Git環境,這裡就不詳細展開講解。
我已經進行了公私鑰的配置,是以這裡選擇SSH。
使用<code>git clone</code>指令克隆項目
項目已經成功克隆,接下來要進行我們的開發了。
通常開發不是在<code>Master</code>分支上,而是在開發分支上,使用 <code>git branch develop</code>建立一個新分支:
可以通過<code>git branch</code>指令列出所有分支:
可以看到我們建立的分支。
使用<code>git checkout develop</code>指令切換到建立的develop分支:
接下來,我們再develop分支上進行一些開發操作,我這裡對 redeme 進行了一些修改,需要把修改添加到暫存區。
首先通過 <code>git status</code>指令檢視工作區檔案狀态
接下來使用 <code>git add README.md</code>指令(可以使用<code>git add .</code>添加所有修改)将更改添加到暫存區
可以看到檔案已經添加。
接下來使用`git commit -m "