天天看點

Git筆記

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

  git 易于學習,占地面積小,性能極快。它具有廉價的本地庫,友善的暫存區域和多個工作流分支等特性。其性能優于 subversion、cvs、perforce 和 clearcase 等版本控制工具

  版本控制是一種記錄檔案内容變化,以便将來查閱特定版本修訂情況的系統。

  版本控制其實最重要的是可以記錄檔案修改曆史記錄,進而讓使用者能夠檢視曆史版本,友善版本切換。

  個人開發過渡到團隊協作

  (1)集中式版本控制工具

  cvs、svn(subversion)、vss……集中化的版本控制系統諸如 cvs、svn 等,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過用戶端連到這台伺服器,取出最新的檔案或

者送出更新。多年以來,這已成為版本控制系統的标準做法。

  這種做法帶來了許多好處,每個人都可以在一定程度上看到項目中的其他人正在做些什麼。而管理者也可以輕松掌控每個開發者的權限,并且管理一個集中化的版本控制系統,要

遠比在各個用戶端上維護本地資料庫來得輕松容易。

  事分兩面,有好有壞。這麼做顯而易見的缺點是中央伺服器的單點故障。如果伺服器當機一小時,那麼在這一小時内,誰都無法送出更新,也就無法協同工作。

  (2)分布式版本控制工具

  git、mercurial、bazaar、darcs……像 git 這種分布式版本控制工具,用戶端提取的不是最新版本的檔案快照,而是把代碼倉庫完整地鏡像下來(本地庫)。這樣任何一處協同工作用的檔案發生故障,事後都可以用

其他用戶端的本地倉庫進行恢複。因為每個用戶端的每一次檔案提取操作,實際上都是一次對整個檔案倉庫的完整備份

  總結:分布式的版本控制系統出現之後,解決了集中式版本控制系統的缺陷:

  1. 伺服器斷網的情況下也可以進行開發(因為版本控制是在本地進行的)

  2. 每個用戶端儲存的也都是整個完整的項目(包含曆史記錄,更加安全)

Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記

  (1)基本文法

  (2)執行個體實操

  全局範圍的簽名設定:

Git筆記

   說明:

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

  (2)這裡設定使用者簽名和将來登入 github(或者其他代碼托管中心)的賬号沒有任何關系。

  (2)案例實操

Git筆記

   (3)結果檢視

Git筆記

   (2)執行個體操作

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

Git筆記

   3.3.2 新增檔案

Git筆記
Git筆記

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

Git筆記

  3.4.1 将工作區的檔案添加到暫存區

Git筆記

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

Git筆記

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

  3.5.1 将暫存區的檔案送出到本地庫

Git筆記

   3.5.2 檢視狀态(沒有檔案需要送出)

Git筆記

  注意:

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

Git筆記

   (2)可以使用指令 git log 檢視詳細日志

Git筆記
Git筆記
Git筆記

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

Git筆記

   3.6.2 将修改的檔案再次添加暫存區

Git筆記

   3.6.3 檢視狀态(工作區的修改添加到了暫存區)

Git筆記

   3.6.4 将暫存區的檔案送出到本地庫

Git筆記

   3.6.5 檢視狀态(沒有檔案需要送出)

Git筆記

  (2)執行個體操作

Git筆記

git reset --hard 版本号

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

Git筆記

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

Git筆記

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

Git筆記

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

Git筆記

   git切換版本,底層其實是移動的 head 指針,具體原理如下圖所示

Git筆記
Git筆記

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

Git筆記

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

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

Git筆記
Git筆記

   (2)案例實操

Git筆記

  (1)在master分支上做修改

Git筆記

  (2)添加暫存區

Git筆記

   (3)送出本地庫

Git筆記

   (4)檢視分支

Git筆記

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

Git筆記
Git筆記

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

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

Git筆記

   在hot-fix分支上做修改

Git筆記
Git筆記

  添加暫存區

Git筆記

   送出本地庫

Git筆記

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

Git筆記

  沖突産生的表現:後面狀态為 merging

Git筆記

   沖突産生的原因:

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

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

Git筆記

   (1)編輯有沖突的檔案,删除特殊符号,決定要使用的内容

  特殊符号:<<<<<<< head 目前分支的代碼 ======= 合并過來的代碼 >>>>>>> hot-fix 

   (2)添加到暫存區

Git筆記

   (3)執行送出(注意:此時使用git commit 指令時不能帶檔案名)

Git筆記

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

Git筆記

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

  head 如果指向 master,那麼我們現在就在 master 分支上。

  head 如果執行 hotfix,那麼我們現在就在 hotfix 分支上。

  是以切換分支的本質就是移動 head 指針。

Git筆記
Git筆記

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

  注冊三個賬号測試

Git筆記
Git筆記

  建立完畢後

Git筆記
Git筆記

  (2)示例操作

Git筆記

   (2)示例操作

Git筆記

  其間,彈出下面的頁面,關于personal access token的生成後面介紹

Git筆記

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

Git筆記
Git筆記
Git筆記

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

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

Git筆記

   檢視一下遠端倉庫别名

Git筆記

   結論:clone會做如下操作

  (1)拉取代碼

  (2)初始化本地倉庫

  (3)建立别名

  (1)選擇邀請合作者

   

Git筆記

   (2)填入想要合作的人

  

Git筆記

   (3)複制位址并通過微信釘釘等方式發送給該使用者,複制内容如下:

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

Git筆記

  (4)在hrch002這個賬号中的位址欄複制收到邀請的連結,點選接收邀請

Git筆記

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

(1)eclipse 特定檔案

Git筆記

 (2)idea 特定檔案

Git筆記

 (3)maven 工程的 target 目錄

Git筆記
Git筆記
Git筆記
Git筆記
Git筆記

  選擇要建立 git 本地倉庫的工程

Git筆記
Git筆記
Git筆記

  發現出現了 .git 檔案,并且 pom.xml 變成紅色,說明該檔案未添加到暫存區

  右鍵點選項目選擇 git—>add将項目添加到暫存區

Git筆記

  添加完成之後變成綠色了

Git筆記
Git筆記
Git筆記

  在 idea 的左下角,點選 version control,然後點選 log 檢視版本

Git筆記

   右鍵選擇要切換的版本,然後在帶單裡面點選 checkout revision。

Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記

  衆所周知,github 伺服器在國外,使用 github 作為項目托管網站,如果網速不好的話,嚴重影響使用體驗,甚至會出現登入補上的情況。針對這個情況,大家可以使用國内的項目托管網站—碼雲。

  碼雲是開源中國推出的基于 git 的代碼托管服務中心,網址是  https://gitee.com/ ,使用方式跟 github 一樣,而且它還是一個中文網站。

  進入碼雲官網位址:https://gitee.com/,點選注冊 gitee

Git筆記

  輸入個人資訊,進行注冊即可。

Git筆記

  帳号注冊成功以後,直接登入。

Git筆記

  點選首頁右上角的加号,選擇下面的建立倉庫

Git筆記
Git筆記

   idea 預設不帶碼雲插件,我們第一步要安裝 gitee 插件。

  如圖所示,在 idea 插件商店搜尋 gitee,然後點選右側的 install 按鈕。

Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記

  官網位址:https://about.gitlab.com/

  安裝說明:https://about.gitlab.com/installation/

  10.3.1 伺服器準備

Git筆記

   10.3.2 安裝包準備

    yum 線上安裝 gitlab- ce 時,需要下載下傳幾百 m 的安裝檔案,非常耗時,是以最好提前把所需 rpm 包下載下傳到本地,然後使用離線 rpm 的方式安裝。

    下載下傳位址:

      https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm

    注:資料裡提供了此 rpm 包,直接将此包上傳到伺服器/opt/module 目錄下即可。 

   10.3.3 編寫安裝腳本

  安裝 gitlab 步驟比較繁瑣,是以我們可以參考官網編寫 gitlab 的安裝腳本。 

   腳本内容

   給腳本增加執行權限

Git筆記

  然後執行該腳本,開始安裝gitlab-ce。注意:一定要保證伺服器 可以上網

Git筆記

  10.3.4 初始化 gitlab 服務

  執行以下指令初始化 gitlab 服務,過程大概需要幾分鐘,耐心等待…

  10.3.5 啟動 gitlab服務

  執行以下指令啟動 gitlab 服務,如需停止,執行 gitlab-ctl stop

   10.3.6 使用浏覽器通路 gitlab

  使用主機名或者 ip 位址即可通路 gitlab 服務。需要提前配一下 windows 的 hosts 檔案

Git筆記
Git筆記
Git筆記
Git筆記

  10.3.7 gitlab 建立遠端庫

Git筆記
Git筆記

   10.3.8 idea 內建 gitlab

Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記
Git筆記