Git合併相關命令細節

2021-10-14 14:53:27 字數 2506 閱讀 2595

這裡的合併指的是自動合併,是採用三路合併演算法完成的。提前是存在第三方。

只有兩個版本是無法自動合併的,因為無法知道以哪個版本為準。

所以合併時存在三方:

本地版本

遠端版本

公共版本

這裡列的命令都能進行自動合併時,只是細節上不同。

其中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...