git merge

big_shark發表於2024-05-17

Merge types

  • fast-forward (常用)
  • Non fast-forward
    • recursive(常用) /ort
    • octopus
    • ours
    • subtree

快速合併

兩個分支一前一後,沒有分叉,快速分支不會建立一個合併節點。

合併更改但是不合並分支

使用 --squash 將feature分支上所有更改複製到當前的暫存區 並使用提交。實現非合併或獲取更改

#------------------- 合併更改 -------------------------
git merge --squash feature

Updating d160c4f..cb7113a
Fast-forward
Squash commit -- not updating HEAD
 feature/f1.txt | 0
 feature/f2.txt | 0
 2 files changed, 0 insertions(+), 0 deletions(-)
git: 'loh' is not a git command. See 'git --help'.

#------------------- commit -------------------------

git commit -m "merge feature"
[master 793e85d] merge feature
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 feature/f1.txt
 create mode 100644 feature/f2.txt

# log
commit 793e85deff025ea3ee55cf203afa2876f668142e (HEAD -> master)
Author: x
Date:   x

    merge feature

commit d160c4f0d6924df2ccd07f1107a462b41f0af039
Author: x
Date:   x

    “m2

image.png

非快速合併

如果兩個分支都有進行提交,此時需要建立一個合併節點。也是使用

# 處於 main 分支
git merge --no-ff feature

image.png

此時同樣可以使用 --squash 引數在不合並分支的前提下,在當前分支新增修改

git merge --squash  feature

image.png

相關文章