所以我們正在使用 GitFlow 作業模式。
我有一個名為 的分支feature/foo,我剛剛在那里完成了我的工單并創建了一個拉取請求,該分支 ( feature/foo) 將與我們的頭分支合并develop
所以現在,我需要繼續處理其他功能,但我需要我剛剛完成的作業feature/foo,所以我創建了一個新分支develop
git co -b feature/foo2
并合并上一個分支的更改,我做了更改:
git merge feature/foo
現在我在那里進行更改,但是當我嘗試創建 的拉取請求時feature/foo2,上一個分支中的所有提交和檔案也出現了。
解決這個問題的最佳方法是什么?我能做些什么不同的事情?
uj5u.com熱心網友回復:
解決這個問題的最佳方法是什么?
如果是我,我會離開它并繼續前進。一旦第一個 PR 完成并feature/foo合并到develop中,您的第二個 PR 應該能夠被更新,這樣前一個 PR 的更改就會消失1。但是,如果你的 PR 上有一個 rebase 或 squash 合并策略,并且第一個分支被重寫,即使更改會從 PR 中消失,提交也不會。如果您不想在第二個 PR 中看到這些提交,則在第一個 PR 完成后,您可以執行“花式”變基feature/foo2來更新它:
git fetch
git rebase feature/foo feature/foo2 --onto origin/develop
git push --force-with-lease
請注意,在上面的命令中,您希望使用 的本地副本feature/foo和遠程副本develop,這就是為什么將其指定為origin/develop.
我能做些什么不同的事情?
一些可能適用于您的選項:
- 您可以跳過依賴于尚未合并的功能的功能
develop并選擇其他功能。 - 您可以采取行動更快地完成第一個 PR。(也許嘗試與審閱者會面并立即對其進行審閱和完成。)
旁注:當您必須開始處理依賴于尚未完成的另一個分支的功能時develop,假設其他分支是最新的(特別是如果您使用變基作業流程),那么您可以只從前一個分支分支您提出的多命令方法。代替:
git switch -c feature/foo2 origin/develop
git merge feature/foo
你可以簡單地做:
git switch -c feature/foo2 feature/foo
1這取決于實作,但許多 PR 工具會在源分支更改時自動更新 PR,并且還提供一種在目標分支更改時更新 PR 的機制,盡管您可能必須選擇“重新啟動合并”或相似的。
uj5u.com熱心網友回復:
創建 PR 時,您可以指定PR 將合并到的基本分支。
如果將基本分支指定為feature/foo,將顯示的差異將是feature/foo2和之間的差異feature/foo。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/483507.html
