2017-10-19 47 views
-1

我在我的遠程分支中有一個提交,我想刪除該提交。有什麼辦法可以做到嗎?我是這個分支的唯一用戶。以下是一個屏幕截圖。需要從位桶中刪除特定提交

Click here to view the screen shot

+0

爲什麼不讓它進入,只是撤銷更改? – Henry

+0

確切地說,我應該這樣做。感謝快速指引。 –

+0

您可以在命令行的本地回購中使用'git回覆',然後推送結果。 – Henry

回答

0
git reset --hard HEAD~1 

這將重置您的工作的分支,那麼你需要將其推至到位桶。您所有的本地更改都將被刪除,請注意使用它。

+0

如果你這樣做,它不能被推回:更新被拒絕,因爲你當前分支的提示是在 – Henry

+0

@Henry你不能強迫推? – puhlen

+0

@ puhlen你可以,但如果你不小心,這可能會影響其他分支,這有點危險。 – Henry

0

定期的git工作流程基於假設時間總是前進。因此,標準做法是不要刪除提交,因爲您必須爲此重寫歷史記錄。相反,您添加一個新的提交來撤消更改。甚至有這樣的命令:git revert

實際上刪除一個提交是一個不同的故事,它可能很容易或很難,這取決於它後面有多少提交,分支和合並。在最簡單的情況下,您只有一個分支,沒有合併,也沒有任何更改取決於您要刪除的提交。在其他情況下,您可能會遇到很多衝突,甚至可能會選擇在提交後犧牲整個歷史記錄。我不知道你的情況是什麼。

最簡單的例子,假設你的當前分支是master和要刪除提交C,和你的歷史從Cmaster是提交的線性序列,並D是提交以下C,你可以這樣做這樣的:

git checkout -b temp C~1 
git cherry-pick D..master 
git branch -f master 
git checkout master 
git branch -D temp 
git push -f origin master 

謹防雖然,這將打破比你以外的任何資源庫,他們將不得不重新工作。不推薦,除非你一個人工作。第二個注意事項:如果您嘗試刪除敏感信息(例如偶然發生的密碼),由於git在內部工作的方式,這可能不會真正刪除數據。