在我的本地倉庫中,我有一個提交的提交信息不正確。意外推送提交:更改git提交消息
我已經與git push
發表不正確的提交信息。
現在遠程回購(這是GitHub的託管)具有不正確的提交消息,太。
我已經嘗試過git commit --amend
,卻發現它不會在這種情況下適合我,因爲我一直以來的一個不正確了額外的提交。
你會如何解決這種情況?
在我的本地倉庫中,我有一個提交的提交信息不正確。意外推送提交:更改git提交消息
我已經與git push
發表不正確的提交信息。
現在遠程回購(這是GitHub的託管)具有不正確的提交消息,太。
我已經嘗試過git commit --amend
,卻發現它不會在這種情況下適合我,因爲我一直以來的一個不正確了額外的提交。
你會如何解決這種情況?
簡單的解決方案(但請做這個前仔細閱讀這整個的答案):
git rebase -i <hash-of-commit-preceding-the-incorrect-one>
pick
到reword
就行了。git push --force
更新GitHub。這將意味着用戶將會發布以前發表的資料庫的修改版本。如果任何人在您將錯誤提交給錯誤的提交信息之後從您的回購中拉出或取回,並且在您修復它時,他們將在稍後遇到一些困難。所以請確保你在嘗試這個之前能夠接受這個結果。
因爲這是我的家庭項目,這將是一個好的解決方案。謝謝! – jonny 2011-02-17 17:51:33
而不是去全重訂路線一個承諾:
git reset --soft head~
git commit -m "The message you wanted to use"
git push -f
你可以看到在git-reset手冊頁的選項。
對於一個項目,只要你在做事上,改變的歷史不應該是一個問題。
如果你有改變過多個分支(即,與錯誤的消息犯存在於多個分支)的老提交信息,你可能想使用
git filter-branch -f --msg-filter 'sed "s/<old message>/<new message>/g"' -- --all
更換提交信息。
Git將創建一個臨時目錄用於重寫並在refs/original /中額外備份舊引用。
-f
將強制操作的執行。如果臨時目錄已經存在,或者已經存在參考文獻refs/original,則這是必需的。如果不是這樣,你可以放棄這個標誌。
--
分開修訂選項
--all
過濾分支選項將確保,所有分支和標籤被改寫。
由於舊引用的備份,你可以很容易地回到狀態執行命令前。
說,要恢復你的主人和訪問分支old_master:
git checkout -b old_master refs/original/refs/heads/master
您滿意後與更改使用 混帳推-f 推更改您的公開回購。
請注意,你應通知你的合作者關於這個,因爲從第一項開始修改一個提交的所有散列值已被更改。
如果您沒有將代碼推送到遠程分支(Github/Bitbucket),您可以在命令行上更改提交消息,如下所示。
git commit --amend -m "Your new message"
如果您正在對特定分支進行操作,請執行此操作。
git commit --amend -m "BRANCH-NAME: new message"
如果您已經推動了代碼錯誤信息,那麼你需要更改信息時要小心。即在您更改提交消息並嘗試再次推送後,最終出現問題。要使其順利執行這些步驟。當您使用力推直接,你可能最終與代碼問題,其他開發商都在同一分支上工作:做
git commit --amend -m "BRANCH-NAME : your new message"
git push -f origin BRANCH-NAME # Not a best practice. Read below why?
重要事項之前 請閱讀完整的答案。因此,爲了避免衝突,那你需要做的力推
git commit --amend -m "BRANCH-NAME : your new message"
git pull origin BRANCH-NAME
git push -f origin BRANCH-NAME
這是最好的做法改變提交信息時,如果它已經推前拉從你的分支代碼。
併發症(?):還有一些其他的提交後'擰'(由我發佈) – jonny 2011-02-17 17:32:33
這不是一個重複的[我如何推動修改提交遠程git回購?](http:// stackoverflow .COM /問題/ 253055 /怎麼辦-I-推修改提交到最遠程的git回購)? – 2014-04-03 10:05:21