這裏是我的情況。如何刪除我的分支中的特定提交
1)我分叉一個項目從別人
2)我創建了一個獨立分支和編輯它的一些文件
3)我創建了從該分支pull請求和它合併到碩士礦。
4)現在我的主人包含這些提交。
5)我創建了第二個分支。並編輯了一些文件。
6)然後我創建了一個'原始'項目回購的拉請求。
7)項目的所有者要求我刪除自己合併的那些提交,因爲不需要這些代碼。
現在,問題是:我無法弄清楚如何從我的單獨分支中刪除提交。有人能幫我嗎 ???做
這裏是我的情況。如何刪除我的分支中的特定提交
1)我分叉一個項目從別人
2)我創建了一個獨立分支和編輯它的一些文件
3)我創建了從該分支pull請求和它合併到碩士礦。
4)現在我的主人包含這些提交。
5)我創建了第二個分支。並編輯了一些文件。
6)然後我創建了一個'原始'項目回購的拉請求。
7)項目的所有者要求我刪除自己合併的那些提交,因爲不需要這些代碼。
現在,問題是:我無法弄清楚如何從我的單獨分支中刪除提交。有人能幫我嗎 ???做
最簡單的事情就是變基上origin/master
你的新分支。
您從此開始。
A - B - C [master]
[origin/master]
A,B和C是現有的提交。 master
是您當地的分支,origin/master
跟蹤您看到上游master
分支的最後一個地方。他們都指向承諾C.
將新分支合併到master
之後,您就有了類似的內容。
1 - 2 - 3 [master]
/
A - B - C [origin/master]
上游保持在C,但您的本地master
現在是3承諾通過它。您當地的master
受到本地提交的污染。
當你讓你的第二個分支脫離主人並承諾它,你有這個。
4 - 5- 6 [second]
/
1 - 2 - 3 [master]
/
A - B - C [origin/master]
正如你所看到的,second
還包含1,2,3 - 從第一分公司工作。要解決這個問題,請將4,5和6移動到origin/master
之上。
git rebase --onto origin/master master second
,說從一切(但不包括)master
(幷包括)second
走上origin/master
。那是4,5和6.結果是這樣。
1 - 2 - 3 [master]
/
A - B - C [origin/master]
\
4' - 5' - 6' [second]
注:這是假定4,5,6不依賴於1,2,和3。如果他們這樣做,離開一切,因爲它是並注意在拉請求的依賴。
一般而言,與上游儲存庫工作時從... origin/master
master
提交任何內容。這可以確保您的拉取請求不會受到本地更改或其他拉取請求的影響。
在你的情況,你可以嘗試執行
的git的復位 - 硬commit_hash
其中commit_hash
是在提交前第一承諾刪除。在兩次合併之前,您現在有一個初始狀態的主分支。在這一點上,只是再次從你的第二個分支合併,它應該工作
另一種解決方案是嘗試:
git的變基-i commit_hash
其中commit_hash
之前再次提交是首先承諾刪除。在文本編輯器中爲你打開git,你需要刪除你想刪除的兩個提交的兩行。保存文件,關閉編輯器,git將完成rebase操作,刪除兩個提交。
警告
兩個指令都將改寫歷史的git,你需要執行強制混帳推
混帳推--force
你可能會通知主人你」對Git不太熟悉,並且禮貌地要求他們修復這個問題。 – Schwern