我正在處理一個專案并解決問題,我正在為每個拉取請求 (PR) 創建一個不同的分支。
上次我用他們的 PR 創建了兩個不同的分支并解決了這兩個問題。現在的問題是我的兩個拉取請求都與我在不同分支上推送的代碼混淆了。我在以下命令的幫助下在 git bash 上創建了一個分支:git branch branch_name
然后git checkout branch_name.
我的提交圖現在看起來像這樣:
aaaaa (feature/c)
bbbbb (feature/b)
ccccc
ddddd (feature/a)
eeeee
fffff
ggggg
hhhhh (master, origin/master)
誰能指導我如何將每個 PR 的代碼彼此分開?以便:
feature/c不會包含feature/band的變化afeature/b不會包含的變化feature/a
uj5u.com熱心網友回復:
解釋發生了什么:
這是你開始的地方:
* ----- * ----- *
origin/main
您進行第一次提交并最終陷入這種情況:
* ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- *
origin/main. Feature A
現在您創建了一個拉取請求并準備好使用下一個功能。
如果你繼續在這個分支上作業,新的 PR 將包含 Feature A 的所有更改以及你提交的所有內容:
* ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- *
origin/main. Feature A. FB
相反,您應該確保再次從 origin/main 為 FB 創建一個分支。有很多方法可以做到這一點:
git branch fb
git checkout fb
git reset origin/main --hard
或者在一個命令中完成所有這些:
git checkout -b FB origin/main
這樣,在向 FB 添加一些提交后,你最終會得到這個;
* ----- * ----- * ----- * FB
/
* ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- *
origin/main. Feature A
要解決您當前的困境,您可以將 FA...FB 重新設定為 origin/main 或創建一個新分支并將 FA 之后的提交挑選到您的新分支中。
git rebase --onto origin/main fa fb
或者,您可以進行互動式 rebase,在其中洗掉 origin/main...FA 之間的提交。
git checkout -b fbfixed origin/main
git cherry-pick fa..fb
也可以看看:
- https://stackoverflow.com/a/2474371/736079
最后的技巧是對 FB 進行互動式變基:
git rebase -i origin/main..fb
這應該顯示 origin/main 和 FB 之間的提交串列。將 origin/main 之后的所有提交標記為 drop 并包括 FA,然后執行 rebase:
k 12344 FB
k 27362
k 37383
d nsnsnsn FA
d hshscd
d rnsees
d rhsnsn
d snrrirh
d rifitbrn
d usbrve
這將從分支 FB 中洗掉 FA 的提交。它將保留原始 FA 的完整性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/411249.html
標籤:
