Git學習筆記(二)

2021-07-10 03:52:19 字數 2661 閱讀 2750

1)分支:

>git branch -m master mymaster

-m引數告訴git要執行分支移動(重新命名)操作。另外兩個引數分別是分支原名稱和新名稱。

>git branch

檢視分支。該命令沒有引數,git顯示本地版本庫中所有的本地分支名稱。

結果中,前面帶星號的分支是當前檢出的分支,即當前工作目錄樹的分支。

2)建立分支的時機:

①實驗性更改:

②增加新功能:

③bug修復:

3)建立分支的命令:

>git branch new

建立分支命令git branch後,加上新的分支名稱。

>git branch  檢視分支

建立的快捷方式:

>git checkout -b alternate master

git checkout 命令後加上引數-b,就可以一步完成建立分支並檢出該分支。

4)在其他版本控制工具中,檢出有時是指把某個檔案的某個版本檢出,有時是指把版本庫的某個中體版本檢出。

在git中,檢出是指把版本庫的某個整體版本檢出。如果命令引數是分支,就把分支末梢的版本檢出,同時設定,將來提交改動時,提交到該分支上。

5)分支合併:即把兩條或多條分支合併到一起。

①直接合併:把李那條分支上的歷史軌跡合併,交匯到一起。

②壓合合併:將一條分支上的若干個提交條目壓合成乙個提交條目,提交到另一條分支的末梢。要小心使用壓合提交,因為大多數情況下,每個提交都應該作為乙個單獨的條目存在於里式記錄中。如果某條分支上的所有提交都密切相關,應隨後作為乙個整體記錄時,適合做壓合提交。

③揀選合併:揀選另一條分支上的某個提交條目的改動帶到當前分支上。

①直接合併:

>git checkout master

>git merge alternate

這樣alternate分支上的修改就合併到主分支上了。

②壓合合併

>git checkout master   切換到master分支上。

>git merge --squash contact

此時contact分支上的兩個提交已經合併到當前工作區並暫存,但是還沒有作為乙個提交,提交到版本庫中。

>git status

>git commit -m "add contact page"  -m "has primary and secondary email"

③揀選合併:

>git checkout contact

然後在contact.html檔案中新增一條新連線。

>git commit -m "add link to twitter" -a

>git checkout master

>git cherry-pick dee82a2  :dee82a2是剛才的提交名稱 

>git cherry-pick -n dee82a2 

>git status

>git commit

要揀選多個提交,

6)合併衝突處理:

衝突:git不能自動合併時,稱之為衝突。衝突總是發生在對不同分支上的同一檔案的同一文字塊以不同的方式修改,並試圖合併的時候。

若發生衝突,開啟衝突檔案:

<<<<<<<<<<<********************=

emcascipt

>>>>>>>>>>>>about2:about.html

解析:《後面跟隨的是當前分支中的**:

>>>>>>>>>>>>>後面跟隨的是另一條分支中的**:

**********====上下是衝突的內容

head指向當前分支末梢的那個提交。

7)有些分支沒有必要長期儲存,比如分支中的**已經打了標籤並已發布。

由於已經打了標籤,git刪除該分支時,從版本樹起始到此標籤間的全部歷史軌跡均會保留,這時刪除分支操作只是刪除分支本身的名稱。因此可以說,該分支「沒有必要長期儲存」。

而在其他版本控制工具中,刪除分支通常意味著刪除分支上的所有歷史軌跡。這時就不能說因為「分支中**已經打了標籤」,該分支就「沒有必要長期儲存」。

>git log head~10..head

10)檢視版本之間的差異:

git diff檢視工作拷貝和版本庫中最新版本(head)之間的差異。

>git diff 18f822e

上面命令顯示的是18f822e這個版本和當前工作目錄樹間的差異。

>git diff --stat 1.0

可以統計新標籤之後的**量

>git blame hello.html

可以檢視特定**塊的歷史資訊。該命令輸出結果是**塊中每行**前附加字首資訊,其中包括提交名稱、提交人和提交時間。

>git blame -l 12,13 hello.html

顯示hello.html的第12,13行日誌。

>git blame -l 12,+2 hello.html

>git blame -l "/<\/body>/",+2 hello.html

使用正規表示式。

>git blame -l "/<\/body>/",-2 4333289e^ -- hello.html

>git blame -l "/<\/body>/",-2 4333289e^ -- index.html

檢視檔案hello在4333289e之前提交的日誌。

Git學習筆記(二)

1.忽略檔案 git提供了一種可配性很強的機制來允許使用者將制定的檔案或目錄排除在版本控制之外,它會檢查 倉庫的根目錄下是否存在乙個名為.gitignore的檔案,如果存在的話就去一行一行的讀取這個檔案裡邊的內容並把每一行指定的檔案或目錄排除在版本控制之外。注意.gitignore中指定的檔案或目錄...

Git學習筆記 二

小白一枚。學習筆記。僅供參考。歡迎指錯。二 基本的git概念 git版本庫不僅儲存庫中所有檔案的完整副本,而且儲存版本庫本身的副本。git維護的兩個主要的資料結構 物件庫 object store 索引 index 索引 臨時的 動態的二進位制檔案,它描述的是版本庫的目錄結構。更準確地說,索引捕獲專...

Git 學習筆記二

git commit 只會提交暫存區裡的檔案 撤銷修改 git checkout readme.txt 此命令會讓檔案回到最近的一次git commit 或 git add 時候的狀態 上述的是丟棄工作區修改,如果新增到了暫存區,則使用 git reset head file 可以把暫存區的修改撤銷...