簡體   English   中英

合並還是Rebase?

[英]Merge or Rebase?

這是我目前的提交。

commit1 - commit 2 - commit3 - commit4 - cmmit5 (my-app branch)

我檢查了commit1並進行了更改

git checkout <commi1's SHA>
// made some changes
git add . && git commit -m "commit prime 1"
// made other changes
git add . && git commit -m "commit prime 2"

現在,我想在my-app分支的頂部合並(?)或rebase(?)。

我不關心提交5,我只是想將我當前更改的commit1放到my-app分支的頂部(不合並但是重寫!)。 所以輸出將低於

commit1 - commit 2 - commit3 - commit4 - cmmit5 - commit prime 1 - commit prime2" (my-app branch)
  • 我認為我不需要“合並” commit 5commit prime 2
  • 也許我應該使用rebase?

這是我當前的終端提示:

jbaaa at jo's computer ~/directory on (HEAD detached from 8a36f955fc)*

git狀態輸出:

HEAD detached from 8a36f955fc

什么都沒有,工作樹干凈。

假設commit5是

'12345'
''
''

commit1是

'1'
''
''

commit prime2是

'1' 
'prime1 and prime2'

最終結果必須是

'1'
'prime1 and prime2'

如果我們merge ,我們會得到這個結果。 我們如何避免它?

'12345'
'prime1 and prime2'

您處於所謂的“HEAD detached”狀態,這意味着您不在分支機構工作。 首先,將您當前的工作分成一個分支。

git checkout -b my-feature

如果要刪除提交5,請將您的工作重新設置為提交4。

git rebase <commit4's SHA>

你得到的將是這樣的:

c1 - c2 - c3 - c4 - c5 (my-app)
                \
                 p1 - p2 (my-feature)

由於您不關心提交5,請將my-app重置為my-feature(p2)。

git checkout my-app
git reset --hard my-feature

最后結果:

                 c5 # no branch
                /
c1 - c2 - c3 - c4 - p1 - p2 (my-app, my-feature)

我害怕使用rebase

如果您不確定變基,請在開始變基之前保持當前分支不變並創建新分支,例如:

git checkout -b my-feature-rebased

最后結果:

                 c5 # no branch
                /
c1 - c2 - c3 - c4 - p1 - p2 (my-app, my-feature-rebased)
 \
  p1 - p2 (my-feature) # backup

你可以使用git rest --hard <commit1 hash>將你的頭移到commit1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM