git命令操做邏輯

git merge

分支合併有兩種方式:git

  1. fast-forward,假設從master分支建立一條新的分支develop,在develop分支上進行了一些修改,可是在此期間master分支沒有進行任何修改,那麼在將develop分支合併到master分支的時候,只是簡單的將master分支的指針右移。以下所示

 圖片描述

  1. 建立新的commit,若是被合入代碼的分支和合入分支都進行了修改,則此時須要建立一個新的commit,此時這個commit的祖先有兩個,即被合入分支以前的最後一個commit和合入分支以前的最後一個commit。以下所示

 圖片描述

進行合併操做時,從一個分支合併過來,這個分支的提交記錄也將合併到當前分支。在上圖中不能看出來但通過試驗證實,執行git log操做時,合入的分支的commit會按時間順序插入當前分支。

git revert

使用git revert來進行回退時,方式爲建立一個新的commit。
圖片描述spa

git reset

git reset執行的結果和git revert是同樣的,可是它的內部邏輯確實不同的。
圖片描述
從上圖咱們能夠知道,使用git reset命令的時候,不會建立一個新的commit來表示回退,而是直接HEAD指向回退的commit:2。指針

這裏須要注意的是雖然回退到了commit:2,可是commit:2以後的提交不會刪除掉。咱們能夠使用git reflog來從新找到歷史操做記錄。
相關文章
相關標籤/搜索