2016-09-14 54 views
1

有人推下面一行到我們的倉庫:取消從單線具體承諾的一部分,混帳推後

git = ['a', 'w', 'e', 's', 'o', 'm', 'e', BugSyntaxErrorBug] 

但它實際上應該是:

git = ['a', 'w', 'e', 's', 'o', 'm', 'e'] 

由於比許多人推人我想從這個特定的推動中重寫它。這背後的想法是,如果有人會拉這個代碼的舊版本,代碼將工作。

謝謝:)

+0

如果你只是想撤銷這一小小的改變,你可以手動,提交和推送嗎?或者你想在提交之前重置整個回購? –

+1

這當然有可能。您是否閱讀過Git Book的[重寫歷史記錄](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History)部分?這可能是開始的地方。 – larsks

回答

2

這就是我該怎麼做的。

標記這些以便在出現問題時可以恢復。

git tag MyOldCommit BADCOMMIT 
git tag MyOldMaster master 

,如果你需要,你可以恢復主不變與

git branch -f master MyOldMaster 

現在籤壞承諾一個新的分支

git checkout -b MyFixedCommit BADCOMMIT 

移除有問題的字節後,更換舊commmit與新的一個。

git commit --amend -m"my commit message" 

回到你的老枝主分支

git checkout master 

底墊主(只有主!!!)到MyFixedCommit

git rebase --onto MyFixedCommit BADCOMMIT master 

git會重新上場(提交按提交)從BADCOMMIT到主控端的變化到MyfixedCommit。你將不得不解決Git發現的任何衝突。

!!由於您正在重寫歷史記錄,所以master的提交鏈現在將與其他用戶的標籤和分支不同,它們引用舊的主提交鏈!