1. 程式人生 > 資訊 >B站全面上線 UP 主版權保護計劃,一鍵維權打擊內容侵權

B站全面上線 UP 主版權保護計劃,一鍵維權打擊內容侵權

1、Git概述

  Git 是一個免費的、開源的分散式版本控制系統,可以快速高效地處理從小型到大型的各種專案。

  Git 易於學習,佔地面積小,效能極快。它具有廉價的本地庫,方便的暫存區域和多個工作流分支等特性。其效能優於 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具

1.1何為版本控制

  版本控制是一種記錄檔案內容變化,以便將來查閱特定版本修訂情況的系統。   版本控制其實最重要的是可以記錄檔案修改歷史記錄,從而讓使用者能夠檢視歷史版本,方便版本切換。

1.2 為什麼需要版本控制

  個人開發過渡到團隊協作

1.3版本控制工具

  (1)集中式版本控制工具   CVS、SVN(Subversion)、VSS……集中化的版本控制系統諸如 CVS、SVN 等,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過客戶端連到這臺伺服器,取出最新的檔案或 者提交更新。多年以來,這已成為版本控制系統的標準做法。   這種做法帶來了許多好處,每個人都可以在一定程度上看到專案中的其他人正在做些什麼。而管理員也可以輕鬆掌控每個開發者的許可權,並且管理一個集中化的版本控制系統,要 遠比在各個客戶端上維護本地資料庫來得輕鬆容易。   事分兩面,有好有壞。這麼做顯而易見的缺點是中央伺服器的單點故障。如果伺服器宕機一小時,那麼在這一小時內,誰都無法提交更新,也就無法協同工作。   (2)分散式版本控制工具   Git、Mercurial、Bazaar、Darcs……像 Git 這種分散式版本控制工具,客戶端提取的不是最新版本的檔案快照,而是把程式碼倉庫完整地映象下來(本地庫)。這樣任何一處協同工作用的檔案發生故障,事後都可以用 其他客戶端的本地倉庫進行恢復。因為每個客戶端的每一次檔案提取操作,實際上都是一次對整個檔案倉庫的完整備份   總結:分散式的版本控制系統出現之後,解決了集中式版本控制系統的缺陷:   1. 伺服器斷網的情況下也可以進行開發(因為版本控制是在本地進行的)   2. 每個客戶端儲存的也都是整個完整的專案(包含歷史記錄,更加安全)

1.4 Git 簡史

1.5 Git 工作機制

1.6 Git 和程式碼託管中心

2、Git安裝

3、Git常用命令

3.1設定使用者簽名

  (1)基本語法

#使用者名稱
git config --global user.name 使用者名稱
#郵箱 git config
--global user.email 郵箱

#檢視配置
cat ~/.gitconfig

  (2)例項實操

  全域性範圍的簽名設定:

  說明:

  (1)簽名的作用是區分不同操作者身份。使用者的簽名信息在每一個版本的提交資訊中能夠看到,以此確認本次提交是誰做的。Git首次安裝必須設定一下使用者簽名,否則無法提交程式碼。

  (2)這裡設定使用者簽名和將來登入 GitHub(或者其他程式碼託管中心)的賬號沒有任何關係。

3.2初始化本地庫

  (1)基本語法

git init

  (2)案例實操

  (3)結果檢視

3.3檢視本地庫狀態

  (1)基本語法

git status

  (2)例項操作

  3.3.1首次檢視(工作區沒有任何檔案)

  3.3.2新增檔案

  3.3.3再次檢視(檢測到未追蹤的檔案)

3.4新增暫存區

  3.4.1將工作區的檔案新增到暫存區

  (1)基本語法

git add 檔名

  (2)案例實操

  3.4.2檢視狀態(檢測到暫存區有新檔案)

  注意:可以使用命令 git rm --cached hello.txt刪除暫存區檔案,但是這個刪除只是刪除暫存區的檔案,工作區的檔案還是存在的,執行該命令之後再次執行gitstatus發現又變成紅色了

3.5提交本地庫

  3.5.1將暫存區的檔案提交到本地庫

  (1)基本語法

git commit -m "日誌資訊" 檔名

  (2)例項操作

  3.5.2檢視狀態(沒有檔案需要提交)

  注意:

  (1)可以使用命令 git reflog檢視版本資訊

  (2)可以使用命令 git log檢視詳細日誌

3.6修改檔案(hello.txt)

  3.6.1檢視狀態(檢測到工作區有檔案被修改)

  3.6.2將修改的檔案再次新增暫存區

  3.6.3檢視狀態(工作區的修改新增到了暫存區)

  3.6.4將暫存區的檔案提交到本地庫

  3.6.5檢視狀態(沒有檔案需要提交)

3.7歷史版本

  3.7.1檢視歷史版本

  (1)基本語法

#檢視版本資訊
git reflog

#檢視版本詳細資訊
git log

  (2)例項操作

  3.7.2 版本穿梭

  (1)基本語法

git reset --hard版本號

  (2)例項操作

  (a)首先檢視當前的歷史記錄,可以看到當前是在 23f10bc這個版本

  (b)切換到7330622版本,也就是我們第一次提交的版本

  (c)切換完畢之後再檢視歷史記錄,當前成功切換到了7330622版本

  (d)然後檢視檔案hello.txt,發現檔案內容已經變化

  Git切換版本,底層其實是移動的 HEAD 指標,具體原理如下圖所示

4、Git分支操作

4.1什麼是分支

  在版本控制過程中,同時推進多個任務,為每個任務,我們就可以建立每個任務的單獨分支。使用分支意味著程式設計師可以吧把自己的工作從開發主線上分離開來,開發自己分支的時候,不會影響主線分支的執行。對於初學者來說,分支可以理解為副本,一個分支就是一個單獨的副本。(分支底層其實也是指標的引用)

4.2分支的好處

  同時並行推進多個功能開發,提高開發效率

  各個分支在開發過程中,如果某一個分支開發失敗,不會對其他分支有任何影響。失敗的分支刪除重新開始即可。

4.3分支的操作

  4.3.1檢視分支

  (1)基本語法

git branch -v

  (2)案例實操

  4.3.2建立分支

  (1)基本語法

git branch 分支名

  (2)案例實操

  4.3.3修改分支

  (1)在master分支上做修改

  (2)新增暫存區

  (3)提交本地庫

  (4)檢視分支

  (5)檢視master分支上的檔案內容

  4.3.4切換分支

  (1)基本語法

git checkout 分支名

  (2)案例實操

  發現當前分支已經由master改為hot-fix

  下面,檢視hot-fix分支上的檔案內容發現與master分支上的內容不同

  在hot-fix分支上做修改

  新增暫存區

  提交本地庫

  4.3.5合併分支

  (1)基本語法

git merge 分支名

  (2)例項操作

  在master分支上合併hot-fix分支

  4.3.6產生衝突

  衝突產生的表現:後面狀態為 MERGING

  衝突產生的原因:

  合併分支的時候,兩個分支在同一個檔案的同一個位置有兩套完全不同的修改。Git無法替我們決定使用哪一個。必須認為決定信貸買內容。

  檢視狀態(檢測到檔案有兩處修改)

  4.3.7解決衝突

  (1)編輯有衝突的檔案,刪除特殊符號,決定要使用的內容

  特殊符號:<<<<<<< HEAD 當前分支的程式碼 ======= 合併過來的程式碼 >>>>>>> hot-fix

  (2)新增到暫存區

  (3)執行提交(注意:此時使用gitcommit命令時不能帶檔名)

  發現後面的 MERGING消失,變為正常

4.4建立分支和切換分支圖解

  master、hot-fix 其實都是指向具體版本記錄的指標。當前所在的分支,其實是由 HEAD決定的。所以建立分支的本質就是多建立一個指標。

  HEAD 如果指向 master,那麼我們現在就在 master 分支上。   HEAD 如果執行 hotfix,那麼我們現在就在 hotfix 分支上。   所以切換分支的本質就是移動 HEAD 指標。

5、Git團隊協作機制

5.1團隊內協作

5.2跨團隊協作

6、GitHub操作

  GitHub 網址:https://github.com/

  註冊三個賬號測試

6.1建立遠端倉庫

  建立完畢後

6.2遠端倉庫操作

  6.2.1建立遠端倉庫別名

  (1)基本語法

#檢視當前所有遠端地址別名
git remote -v

#建立遠端地址別名
git remote add 別名 遠端地址

  (2)示例操作

  6.2.2推送本地分支到遠端倉庫

  (1)基本語法

git push 別名 分支

  (2)示例操作

  其間,彈出下面的頁面,關於Personal Access Token的生成後面介紹

  此時,我們發現已經將我們的master分支上的內容推送到GitHub建立的遠端倉庫。

  6.2.3拉取遠端倉庫到本地庫

  (1)基本語法

git pull 別名 分支

  (2)例項操作

  6.2.4 克隆遠端倉庫到本地

  (1)基本語法

git clone 遠端地址

  (2)例項操作

  注意:本人操作之前先刪除了本地的憑據管理器,發現克隆的時候不用登入任何賬號

  克隆結果:初始化本地倉庫

  檢視一下遠端倉庫別名

  結論:clone會做如下操作

  (1)拉取程式碼

  (2)初始化本地倉庫

  (3)建立別名

  6.2.5 邀請加入團隊

  (1)選擇邀請合作者

  

  (2)填入想要合作的人

  

  (3)複製地址並通過微信釘釘等方式傳送給該使用者,複製內容如下:

  https://github.com/hrch001/git-shTest.git

  

  (4)在hrch002這個賬號中的位址列複製收到邀請的連結,點選接收邀請

  

  (5)成功之後可以在 hrch001 這個賬號上看到 git