我對 git 有點困惑,所以我創建了一個玩具示例,讓我了解如何解決我的問題。假設我有一個 repo,其中一個檔案requirements.txt如下所示:
# requirements.txt
A
B
C
D
假設我在一個新分支中添加了兩行代碼:
git checkout -b newbranch
git add .
git commit -m "B2 B3"
git checkout master
git merge newbranch
# requirements.txt
A
B
B2
B3
C
D
但隨后協作歷史繼續在 master 中,其他人創建新內容,添加、更新或洗掉其他檔案等等。從遠程倉庫拉出 master 后,我的 master 上的需求檔案看起來像這樣(我以前的更改被新的提交洗掉了,還有 C ):
# requirements.txt
A
B
C1
C2
D
E
現在我想恢復添加的 B1 和 B2 行newbranch,但不洗掉其他人在 master 上所做的事情。也就是說,我想要的輸出是:
Whatever GitMagicCommands to do this??:
# requirements.txt:
A
B
B2
B3
C1
C2
D
E
我可以使用哪些 Git 命令以最好的方式完成此任務(我假設可能存在沖突)?
uj5u.com熱心網友回復:
鎬搜索可以提供幫助:git log -SB2將為您提供:
- 您介紹 B2 的提交 C1
- 并且,為了您的資訊,洗掉B2 的提交 C2。
然后你可以git cherry-pick C1,假設它只修改了一個檔案:
git cherry-pick C1
如果沒有,您可以使用/從 C1 中只挑選一個檔案。git showgit apply
git show "C1" -- requirements.txt | git apply --index -
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/466873.html
標籤:混帐
下一篇:合并/變基遠程跟蹤分支
