簡體   English   中英

Git - 如何壓縮選定的提交?

[英]Git - How to squash selected commits?

我有以下 git 歷史:

        X --- X --- X --- X --- X feature_branch 
       /           /                        
X --- X --- X --- X develop

正如您在某些時候所看到的,develop 分支已合並到 feature_branch。 現在我想合並 feature_branch 來開發,我想在功能分支歷史中只有兩個提交:

  • 提交一(壓扁所有功能分支提交)
  • 提交二(將開發合並到功能分支提交)

我嘗試使用git rebase -i develop但它沒有顯示合並開發到功能分支提交。

怎么做 ?

Edit1git rebase -i HEAD~6 之后(6 因為在功能分支提交 3 之后合並是一個單獨的提交,它在上圖中稍微簡化了一點)我有這樣的事情:

pick 1efad76 feature commit1
pick bae14d6 feature commit2
pick 3de7c48 feature commit3
pick 01dbb6a develop commit3
pick 674b2aa develop commit4
pick db5d9be feature commit4
pick 9cbe436 feature commit5

合並提交可見為兩個開發提交 - 開發 commit3 和開發 commit4。 如何放“s”來實現我的目標? 我應該以某種方式重新排序這些提交嗎?

您應該能夠通過執行以下操作來達到預期的結果:

git rebase -i HEAD~5根據需要換出 5 個提交

從那里,您將能夠進行fixup ,這將壓縮提交,並丟棄提交的日志消息。

慢慢來,確保你閱讀了 git 告訴你的內容,如果你犯了一個錯誤 - git reflog已經涵蓋了你 - 你可以reset到歷史中的任何一點並使用reflog撤消許多事情 - 它讓我出局之前的許多泡菜! 更多信息在這里

一旦您完成了交互式 rebase,並且您已經獲得了您想要的提交歷史記錄,如果您完成了該功能,您可以繼續進行快速合並開發(見下文) -或繼續您的功能,直到准備就緒。

git checkout develop
git fetch
git pull
git merge --ff-only feature_branch

pull將自動執行fetch ,但我個人偏好在pull之前查看正在更新的內容。

注意:如果你提交了一個 pull-request,那么它會為你做一些這樣的事情,或者如果它不能,就會警告你並告訴你該怎么做 ;)

如果您正在繼續您的功能,並且develop經常更新,那么最好讓您的功能與開發保持同步。

你可以做一個git rebase origin/develop或只是develop - 但同樣,我的偏好是與origin - 我將首先fetch

暫無
暫無

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

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