這裡的合併指的是自動合併,是採用三路合併演算法完成的。提前是存在第三方。
只有兩個版本是無法自動合併的,因為無法知道以哪個版本為準。
所以合併時存在三方:
本地版本
遠端版本
公共版本
這裡列的命令都能進行自動合併時,只是細節上不同。
其中merge, push, pull, rebase是類似的,都是對兩個分支合併,從分支溯源到公共結點,再進行三路合併
revert有點不一樣,如果在頂端執行
git revert b
相當於以b為祖先節點,將向a與d兩個方向的分支合併.
這裡主要描述其產生的補丁檔案的index,這個是其能進行自動合併的基礎。
git stash 與git diff產生的補丁是一樣的
先從diff開始
對工作目錄檔案進行修改後,執行
git diff
diff --git a/test.txt b/test.txt
index 1b80f94..829de97 100644
--- a/test.txt
+++ b/test.txt
@@ -1,5 +1,6 @@
some text.
some text.
some text.
+some comment.
some text.
-some text.
+another comment.
index 後面的兩個hash (1b80f94,829de97) 其實對應的是前後兩個檔案 , 最後的"100644"是檔案屬性,不用理。
使用指令將這兩個檔案顯示出來:
git show 1b80f94
some text.
some text.
some text.
some text.
some text.
git show 829de97
fatal: ambiguous argument '829de97': unknown revision or path not in the working tree.
這個應該是git沒有收錄當前檔案造成的。此時,執行
git stash
然後再將其顯示出來,執行:
git stash show的含義是顯示最頂部的stash。-p即–patch,意思是以補丁的形式顯示。
與git diff的結果是一樣的,此時再執行
完全就是之前工作目錄未收錄的樣子。
反過來,可以對工作目錄的版本進行hash求值,判斷是否與index的一樣:
結果是一樣的。
涉及合併是因為它能應用補丁,而且可以反向應用(-r)。
只要補丁中包含的index在倉庫中,意味著有祖先版本與目標版本,就沒有合併不了的補丁,無非就是手工處理衝突。
這兩個漢字,其實是utf-8 bom與字母』s』的編碼被當成簡體中文顯示造成的。以下是維基對utf-8 bom的描述:
utf-8
the utf-8 representation of the bom is the (hexadecimal) byte sequence 0xef,0xbb,0xbf.
下面是工具對這兩個漢字的解碼與再編碼結果:
計算檔案的hash值:
git hash-object
顯示hash的檔案內容
git show
…(img-b0zxvent-1610445224957)]
計算檔案的hash值:
git hash-object
顯示hash的檔案內容
git show
git合併分支相關操作
在開發過程中偶爾會遇到bug需要緊急修復,這時我們一般會新建乙個單獨分支專門用來修復bug,目的是不影響已有開發進度,這就涉及到新建分支 合併分支 打tag等操作,今天在這裡給大家做乙個簡單分享 1 在master分支下,建立新分支hotfix並切換到hotfix,請在切換之前確認當前分支所有修改已...
git 相關命令
簡單用法 git cherry pick git如何進行分支管理?1 建立分支 建立分支很簡單 git branch 分支名 2 切換分支 git checkout 分支名 該語句和上乙個語句可以和起來用乙個語句表示 git checkout b 分支名 3 分支合併 比如,如果要將開發中的分支 d...
git相關命令
1.根據已有分支建立新分支dev git checkout b dev 2.檢視當前分支 git branch 3.提交該分支到遠端倉庫 git push origin dev 4.從遠端分支獲取dev git pull origin dev 5.為本地分支設定預設提交獲取分支 git branch...