Git相關知識點學習分享

我是辰兮,很高興你能來閱讀,這篇文章是我初學Git的相關學習的總結,分享給初學者參考,如有不足歡迎指出,分享獲取新知,大家一起進步。


一、什麼是Git

1、Git是一個開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。
2、 Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。
3、 Git 與常用的版本控制工具 CVS, Subversion 等不同,它採用了分佈式版本庫的方式,不必服務器端軟件支持

Git是目前世界上最先進的分佈式版本控制系統(沒有之一)


拓展知識點

版本控制器的作用:一個項目開發期間,需要不停的提交補丁(BUG修復)和建立分支。這些工作繁瑣,並且消耗大量精力。所以需要一個工具進行管理:版本控制器。


二、 Git和SVN的區別

GIT不僅僅是個版本控制系統,它也是個內容管理系統(CMS),工作管理系統等。

Git 與 SVN 區別點:
1、GIT是分佈式的,SVN不是:這是GIT和其它非分佈式的版本控制系統,例如SVN,CVS等,最核心的區別。
2、GIT把內容按元數據方式存儲,而SVN是按文件:所有的資源控制系統都是把文件的元信息隱藏在一個類似.svn,.cvs等的文件夾裏。
3、GIT分支和SVN的分支不同:分支在SVN中一點不特別,就是版本庫中的另外的一個目錄。
4、GIT沒有一個全局的版本號,而SVN有:目前爲止這是跟SVN相比GIT缺少的最大的一個特徵。
5、GIT的內容完整性要優於SVN:GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞。

小結 :分佈式 - 存儲數據的方式 - 分支 - 版本號 內容完整性


三、Git工作流程

參考網上常見的圖解:常見的基礎概念

在這裏插入圖片描述

  • Workspace:工作區: 就是你的工作目錄
  • Index / Stage:暫存區: 它像個緩存區域,臨時保存你的改動
  • Repository:倉庫區(或本地倉庫)
  • Remote:遠程倉庫

ps: 本地倉庫和遠程倉庫在本質上沒有太大區別,只不過一個是本地電腦,一個是遠程電腦.


工作流程

1、git clone 克隆遠程資源到本地目錄,作爲工作目錄;克隆

2、然後在本地的克隆目錄上添加或修改文件;修改

3、如果遠程修改了,需要同步遠程的內容,直接git pull就可以更新本地的文件;跟新

4、本地在修改之後,可以通過git status 查看修改的文件。然後使用git add 添加修改的文件暫到緩衝區;git add添加到緩存

5、在添加之後,可以使用git commit添加到當前的工作區;git commit添加到工作區

6、在修改完成後,如果發現錯誤,可以撤回提交併再次修改並提交;

7、git push將本地的修改推送到遠程的git服務器。git push


在這裏插入圖片描述

HEAD:相當於一個指針,指向你最近一次提交後的結果

  • git status 查看狀態
  • git add . 添加到暫存區
  • git commit - m"" 用於提交暫存區的文件
  • 簡寫:git commit -a -m “” 用於提交跟蹤過的文件,相當於git add和git commit -m的組合技
  • git log 查看提交歷史

Git的基本工作流程修改--暫存--提交更新

1、在工作目錄中修改文件

2、暫存文件,將文件的快照放入暫存區域

3、提交更新,找到暫存區域的文件,將快照永久性存儲到Git倉庫目錄

關於遠程代碼倉庫

通過之前對git代碼倉庫的描述,我們知道git commit其實只是提交了新版本到本地代碼倉庫,要想其他人看到你的改動,之後必須push到一個公開的server上纔可以。實際上這臺server上的代碼倉庫和你本地的代碼倉庫並無二致,只是大家都用這個server上的代碼倉庫作爲標準版本而已。


四、git涉及到的概念詳解

1、工作區:就是你在電腦裏能看到的目錄。
2、暫存區:英文叫stage, 或index。一般存放在 “.git目錄下” 下的index文件
(.git/index)中,所以我們把暫存區有時也叫作索引(index)。
3、版本庫:工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫在這裏插入圖片描述
Git的三種狀態:

①已提交(committed):表示數據已經安全的保存在本地數據庫中

②已修改(modified):表示修改了文件,但還沒保存到數據庫中

③已暫存(staged):表示對一個已修改文件的當前版本做了標記,使之包含在下次提交的快照中

如果Git目錄中保存着的特定版本文件,就屬於已提交狀態

如果作了修改並已放入暫存區域,就屬於已暫存狀態

如果自上次取出後,作了修改但還沒有放到暫存區域,就是已修改狀態

初次接觸:我的困惑關於master分支和develop分支區別

master分支和develop分支

  • 首先要知道master和develop並行。
  • master上始終是最穩定的代碼,develop是正在開發的代碼。

master分支:master分支只負責管理髮布的狀態。在提交時使用標籤記錄發佈版本號。

develop分支:develop分支是針對發佈的日常開發分支。剛纔我們已經講解過有合併分支的功用。


拓展案例:多分支A、B、C並行開發時合併策略

場景描述:

項目AB分支同時進行開發時,A分支開發過程中有其他分支B上線,並且B分支上線版本已同步(merge)到master,則須合併已上線版本到正在開發的分支A上,避免A分支上線時覆蓋B分支的代碼,導致功能倒退。

命令行合併步驟:

1.切換到開發分支A:

  • git checkout 【開發分支】

2.合併master到開發分支(因爲B已經同步到master,於是將master合併到A,保證A上涵蓋B以上線的最新代碼):

  • git merge --no-ff master

3.將合併後代碼推送到遠程庫:

  • git push origin 【開發分支】

五、個人開發常用命令

以下總結了Git常見的開發命令並進行了解釋

git init : 初始化本地項目

  • 將本地項目初始化 git 項目,直觀表現是在該項目同級目錄下多了 .git 隱藏目錄,其存儲着 git 版本庫相關信息.此後當前項目便具備了本地管理的能力,可以與 git 進行交互.

git clone : 克隆遠程項目

  • 同 git init 一樣的作用,也是創建本地倉庫,只不過 git init 是直接將本地項目作爲本地倉庫,而git clone 是將遠程項目克隆到本地並作爲本地倉庫. 由此可見,git clone 比 git init 多了一層遠程倉庫的概念.

git add : 添加文件

  • 將工作區的提交記錄添加到暫存區,暫存區是工作區和版本庫交互的橋樑,暫存區積累到一定量的提交記錄時可以批量提交到版本庫,這一點暫存區有點像緩存.

git commit : 提交文件

  • 將暫存區的版本提交到版本庫,從而形成工作區->暫存區->版本庫的基本鏈路,本地工作區的版本控制流程大致如此.

git push : 推送文件

  • 如果是使用 git clone 命令克隆的本地項目,當工作到一定程度時可能需要將這部分工作成果推送到遠程倉庫,這時候使用 git push命令完成本地版本的推送流程.

特殊情況

  • 如果是使用 git init命令初始化的本地項目,可能沒有遠程倉庫,自然也就不需要推送.如果後來創建了遠程倉庫,那麼你自然是想要將本地倉庫推送到遠程倉庫的,因此你需要準確告訴 git 你要推送到哪個遠程倉庫.
  • 使用 git remote add origin [email protected]:username/repos.git ;命令添加遠程倉庫信息,這樣就建立了本地倉庫和遠程倉庫的關聯,以後就可以正常推送到遠程倉庫了.

關於分支相關操作:

1、查看分支:git branch -a

2、創建分支,加上-b上創建完分支後,切換的新的分支工作:git checkout -b dev

這時候修改的文件都是在dev分支,不會對master分支的文件進行修改。

3、合併分支

  • git checkout master
  • git merge dev

The best investment is to invest in yourself

在這裏插入圖片描述

2020.05.14 記錄辰兮的第64篇博客

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