2012-03-08 59 views
3

我的環境:如何在github中更改我的1推的git消息?

我正在團隊github私人存儲庫上工作。

我們只有主分支。

重現該問題:

  1. 我做了變化(我在談論單身並且沒有muilticase),並添加+承諾+推GitHub的私有庫。

  2. 我在推送後在github中看到了消息 - 而且我錯誤地想改變它。

  3. 如何更改推送的消息?

編輯: 及其對我很重要,沒有歷史將留下我的錯消息。

EDIT2: 已經將文件推他們在GitHub的倉庫,而不是隻在我的本地庫

回答

7

TL; DR

git commit -v --amend 
git push -f 

這將允許你編輯最後一次提交消息,並用您的編輯替換遙控器上的提交。

無論其

你最有可能還不如干脆推着修正。

更改現有承諾的唯一方法是:

git add changed # example, add changed to the commit 
git commit -v --amend # launch editor, edit commit message 

,讓您可以輕鬆地編輯上次提交(無論是內容,或提交信息)

你會發現,然後你可以「T推送到遠程的,當你嘗試它會用這樣的警告被拒絕:

 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:xxx/xxx.git' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 

它給你兩個選擇:

  1. 拉第一,再次推
  2. 力推動(git push -f

如果拉之前,首先 - 你將會把未編輯提交回你的歷史,它仍然存在,但你沒有問題推送到你的遠程分支。原始提交將作爲合併顯示在歷史記錄中。

如果強制推送,你是從字面上迫使遠程分支接受你當地的歷史和覆蓋遠程分支的歷史。

從混帳自己不由自主的也許是最適合用來形容爲什麼強迫推通常是一個壞主意:

通常情況下,命令拒絕更新遠程裁判是不是本地的祖先ref用來覆蓋它。此標誌禁用檢查。 這可能會導致遠程存儲庫丟失提交;小心使用它。

在上下文中,「失去的承諾」將舊版本的提交您編輯的 - 但它也可能包括改變同事推你的第一推,並強制推在兩者之間。由於這個原因,這是一個冒險的操作。

如果你需要它是可以做到的 - 但無論哪種迅速行動起來(這樣就沒有人下載borked提交),或者你知道會造成任何其他開發商推和拉那個分支問題。

+0

謝謝,請參閱我的編輯 – Yosef 2012-03-08 11:06:27

3

如果沒有其他人已經得到了與故障信息提交的是,你可以你的頭指針復位的狀態,你前作出承諾:

git reset --soft HEAD^ 

這將撤消上次提交,並把文件在那個提交階段,你可以再次提交一個新的消息。請注意,您必須使用--force進行推送,因爲您實際上覆蓋了服務器上的歷史記錄:

git commit -m 'new and correct message goes here' 
git push --force origin master