2016-09-19 15 views
0

私のコミットツリーを見て、私は相対的な古いを見たが間違った説明でコミットしました。 私はそれを変更したいと思います。それは可能ですか?どうすればいい?既存のプッシュされたコミットを変更するには?

コミットは既にサーバーにプッシュされています。コミットは古いコミットであり、その後多くのコミットがプッシュされます。私はメッセージではなく、内容を変更したいと思います。

+0

http://stackoverflow.com/a/179147 – mm759

+3

[既存の未処理のコミットを修正する方法は?](http://stackoverflow.com/questions/179123/how-to-modify-existing-unpushed -commits) – Vampire

+0

私はこれを試しましたが、古いコミットでは動作しません。または、私はちょうどそれを古いものに適用する方法を理解していないかもしれません。@ mm759 –

答えて

2

とにかく、そのコミットからツリー全体を書き換える必要があります。force push(推奨しません)を実行する必要があります。 rewordリストから

git rebase -i HEAD~n # Displays a list of the last n commits on the current branch 

何かのように、

pick e499d89 Delete CNAME 
pick 0c39034 Better README 
pick f7fde4a Change the commit message but push the same commit. 

# Rebase 9fdb3bd..f7fde4a onto 9fdb3bd 

変更pick保存

pick e499d89 Delete CNAME 
reword 0c39034 Better README #line to change the message 
pick f7fde4a Change the commit message but push the same commit. 

# Rebase 9fdb3bd..f7fde4a onto 9fdb3bd 
  • 様およびコミットリストファイルを閉じます。結果として得られる各コミットファイルで、 新しいコミットメッセージを入力し、ファイルを保存して閉じます。

    その後

    git push --force 
    

このhelps.for詳細https://help.github.com/articles/changing-a-commit-message/

3

が可能ということであると思いますか?

はい、itzmeontvの答えは

私はそれをどのように行うことができ、このカバー?

Do not。コミットメッセージはコミットの一部であり、SHA1ハッシュに影響します(親コミットのような他のメタデータとともに)。したがって、メッセージを変更

は、後続のすべてがちょうど彼らの親を変更するをコミットを(ツリー上の同じ効果を持つ)新しいコミットを作成し、ひいては書き換えます。

つまり、元のコミットの新しいバージョンから始まる並列の複製タイムラインを作成します。元のタイムラインに対して働いている人は誰もが不満です。

+1

あなたの履歴の書き換えをすべての人に納得させても、ガベージコレクションまで古いコミットが残っていて、永遠に生きたい場合はタグ付けすることができます。 – Useless

関連する問題