2016-01-18 120 views
1

我已經編輯了我的倉庫中的一些文件並推送它們。
經過一些其他的工作,我注意到我保持一條線評論。
所以,我不想爲它創建一個新的提交,我想在之前的提交(不是最後一個提交)中更改它。
我認爲我可以使用提交ID,但我不知道如何或可能Git不容忍此功能。
如何在特定的提交上將修改的提交推送到遠程git倉庫

+0

使用帶有'git push'命令的'-f'標誌 – 1615903

+3

可能重複[如何將修改後的提交推送到遠程git repo?](http://stackoverflow.com/questions/253055/how-do- i-push-revised-commit-to-the-remote-git-repo) – 1615903

回答

4

您可以在交互模式做一個變基:

git rebase -i HEAD~10 

Git會提示您提交的名單,與最早的第一個顯示出來:

... 
pick ab89k22 Old commit 
pick ml9826x Another old commit 
pick xke82ml This is the commit you want to edit 
pick aow82md Here is your latest commit 

查找提交你想要編輯,並將pick更改爲edit

edit xke82ml This is the commit you want to edit 

然後保存文件並退出。 Git現在將開始rebase,並將停止在您想要編輯的提交,允許您進行更改。一旦您完成這些改變,你可以爲你modiifed每種文件類型

git add path/to/file 

,然後鍵入

git rebase --continue 

完成重訂。

請注意,在您的本地分支上編輯此提交時,您已有效地將重寫爲歷史記錄。這意味着,當你推到遠程,你將不得不分支出來,在你git push命令使用--force

git push origin master --force 

警惕的是重寫遠程歷史可能是危險取決於誰也與你分享這個分支。

如果你不要想重寫遠程歷史記錄,那麼更安全的賭注是將新的提交添加到你的分支。您也可以使用git revert刪除有問題的提交,然後添加要保留的更改。

+0

對不起我現在更新。 –

+0

當我完成我的更改後執行「git rebase --continue」。 Git說「工作樹很髒」,並顯示我的文件,顯示「需要更新」 –

+0

您需要添加已更改的文件,就像您通常在工作時一樣。不知道你是否也需要提交。 –

3

不要!

正如Tim指出的:重寫遠程歷史是危險的。

只要承認你犯了一個錯誤(並沒有推動它前徹底測試你的代碼),修復自己的錯誤,並使與消息

amend <COMMIT_HASH_YOU_WANT_TO_FIX> 

一個新的提交如果您在使用一個不錯的歷史查看器,它會生成一個鏈接出<COMMIT_HASH_YOU_WANT_TO_FIX>,所以你可以很容易地跳到錯誤的提交。

相關問題