SourceTreeウィンドウでコミットメッセージを編集します(すでにリモートにプッシュされています)


203

コマンドラインに触れずにSourceTreeで誤ったコミットメッセージを編集するにはどうすればよいですか?

さらなる詳細:

  • これは最新のコミットではありません。
  • すべてがすでにBitbucketにプッシュされています。
  • これは非公開リポジトリであり、私が唯一の共同編集者です。
  • 以前のコミットはいつでも再コミットできるので、失ってもかまいません。
  • ただし、これまでに行ったコードの変更を失いたくない。

結果:

  • 現時点ではコメントと返信からは不可能に思えるので、新しいリポジトリを作成して最初からやり直します。あなたの助けをありがとう!

回答:


426

SourceTree for Windowsバージョン1.5.2.0を使用して、以前のコミット(最新のコミットではない)のコミットメッセージを編集する手順次のとおりです。

ステップ1

編集するコミットの直前のコミットを選択します。たとえば、メッセージ「FOOBAR!」でコミットを編集したい場合は、次に、その直前に来るコミットを選択する必要があります。

編集したいものの前のコミットを選択します。

ステップ2

選択したコミットを右クリックして、次をクリックしますRebase children...interactively

「インタラクティブに子をリベース」を選択します。

ステップ3

編集するコミットを選択Edit Messageして、下部にあるをクリックします。この場合、メッセージ「FOOBAR!」でコミットを選択しています。

編集するコミットを選択します。

ステップ4

コミットメッセージを編集して、をクリックしますOK。私の例では、「SHAZBOT!SKADOOSH!」を追加しました。

コミットメッセージを編集する

手順5

インタラクティブなリベースウィンドウに戻ったら、をクリックしOKてリベースを終了します。

[OK]をクリックして終了します。

手順6

この時点で、すでにプッシュしたコミットをリベースしたので、新しい変更を強制的にプッシュする必要があります。ただし、SourceTree for Windowsの現在の1.5.2.0バージョンでは、GUIを強制的にプッシュすることができないため、それを行うには、コマンドラインからGitを使用する必要があります。

TerminalGUIをクリックしてターミナルを開きます。

ターミナルをクリック

手順7

端末から次のコマンドを使用してforce-pushを実行します。

git push origin <branch> -f

どこ<branch>あなたがプッシュしたいというブランチの名前であり、-f手段はプッシュを強制します。強制プッシュリモートリポジトリのコミットを上書きしますが、他の人とリポジトリを共有していないと言ったので、これは問題ありません。

それでおしまい!完了です!


4
手順はMacバージョンでも基本的に同じです。
race_carr 14

2
注意:#でコミットメッセージを開始したい場合、これは機能しません。gitはそれをコメントとして扱い、コミットメッセージが空であることを通知します!
Daniel Edholm Ignat、2015

1
「これで完了です。これで完了です!」-ウサギが捕まえるかもしれないので、私にはわからないほど簡単です。プログラム機能を作成する代わりに、そのような重要でしばしば見られる状況のために。急いでタイプミスをしたら、頭をリセットして新しいコミットをもう一度作成する必要があります。
ランティエフ2015年

67
おかしい-なぜ彼らは単純な「コミットメッセージの編集」オプションを作らないのかしら。
ジョナサンアキノ2015

1
強制プッシュがGUIから利用できるようになりました。それ以外の場合は
完璧

43

バージョン1.9.6.1。UnPushedコミットの場合。

  1. 以前にコミットした説明をクリックします
  2. コミットアイコンをクリックします
  3. 新しいコミットメッセージを入力し、[コミットオプション]ドロップダウンから[最新のコミットの修正 ]を選択します。
  4. メッセージをコミットします。

13

コメントメッセージに英語以外の文字が含まれている場合、user456814が提供する方法を使用すると、それらの文字は疑問符に置き換えられます。(sourcetree Ver2.5.5.0でテスト済み)

だから私は次の方法を使わなければなりません。

注意:コミットが他のメンバーによってプルされた場合、以下の変更によりメンバーに混乱が生じる可能性があります。

ステップ1:sourcetreeのメインウィンドウで、repoタブを見つけ、「terminal」ボタンをクリックしてgitコマンドコンソールを開きます。

Step2

[状況A]:ターゲットコミットが最新のものです。

1) gitコマンドコンソールで、

git commit --amend -m "new comment message"

2)ターゲットコミットがリモートにプッシュされている場合は、強制的に再度プッシュする必要があります。gitコマンドコンソールで、

git push --force

[状況B]:ターゲットコミットが最新のものではありません。

1) gitコマンドコンソールで、

git rebase -i HEAD~n

最新のn個のコミットを押しつぶすことです。たとえば、最後のメッセージの前のメッセージを編集する場合、nは2です。このコマンドはviウィンドウを開き、各行の最初の単語は「pick」で、行の「pick」を「reword」に変更します編集したい。次に、:wqそのviウィンドウを保存して終了するための入力を行います。これで、新しいviウィンドウが開きます。このウィンドウで、新しいメッセージを入力します。:wq保存して終了するためにも使用します。

2)ターゲットコミットがリモートにプッシュされている場合は、強制的に再度プッシュする必要があります。gitコマンドコンソールで、

git push --force


最後に:sourcetreeのメインウィンドウで、を押しF5て更新します。


12

更新

注:この回答は、もともとSourceTree for Windowsの古いバージョンに関して書かれており、現在は古くなっています。

私の新しい答えを参照してください Windowsの、のためにSourceTreeの現行バージョンの1.5.2.0。この答えは歴史的な目的のために残しておきます。

元の回答

私はWindowsを使用しているので、コマンドラインツールを持っていないし、その使用方法もわかりません:(それがそれを整理する唯一の方法ですか?GUIはすべてのgitの機能をカバーしていませんか?— オリジナルポスター

Git GUIに関しては、いいえ。Gitのすべての機能を網羅しているわけではありません彼らも近づかないGitで誤ったコミットメッセージを編集するにはどうすればよいですか?の回答の1つを確認することをお勧めします。、Gitは柔軟性が高いため、コマンドラインから複数のソリューションを使用できます。

SourceTreeは、実際にはmsysgit bashシェルがすでに付属しているか、標準のWindowsコマンドシェルを使用できる場合があります。どちらの方法でも、[ターミナル]ボタンをクリックしてSourceTreeから開きます。

ここに画像の説明を入力してください

SourceTreeが使用するターミナル(bashまたはWindows)をここで設定します。

ここに画像の説明を入力してください

SourceTreeの問題を解決する1つの方法

そうは言っても、SourceTreeでこれを行う方法の1つを次に示します。コメントで「障害のあるコミットに戻す」ことは気にしないと述べので(これは、実際にはリセットすることを意味していると思いますが、これはGitの別の操作です)、手順は次のとおりです。

  1. SourceTreeで右クリックしてを選択Reset current branch to this commitし、ドロップダウンからハードリセットオプションを選択することにより、SourceTreeでハードリセットを不良コミットに実行します。ここに画像の説明を入力してください
  2. コミットボタンをクリックし、
  3. 下部にある「最新のコミットを修正する」というチェックボックスをクリックします。 ここに画像の説明を入力してください
  4. メッセージに必要な変更を加え、[コミット]をもう一度クリックします。出来上がり!

このコメント

すでにBitbucketにプッシュされているためにそれが不可能な場合は、新しいリポジトリを作成してやり直してもかまいません。

これは、あなただけがリポジトリで作業しているということですか?共同作業者に問題を引き起こさずに(コミットを修正するなどして)リポジトリの履歴を変更することは簡単ではないため、これは重要です。ただし、自分がリポジトリで作業している唯一の人だとすると、次に行うことは、変更した履歴をリモートに強制的にプッシュすることです。

ただし、誤ったコミットにハードリセットを行ったため、強制プッシュを行うと、それ以降に発生したすべての作業が失われることに注意してください。それが問題ない場合は、コマンドラインで次のコマンドを使用して強制プッシュを実行する必要がある場合があります。これは、SourceTreeで実行するオプションが見つからなかったためです。

git push remote-repo head -f

これは、BitBucketを使用してリポジトリへのプッシュを強制できることも前提としています。

とにかく、コマンドラインからGitを使用する方法を本当に学ぶ必要があります。これにより、Gitに習熟することができます。#ProTip、msysgitを使用し、ターミナルのプロパティでクイック編集モードをオンにします。これにより、ダブルクリックしてテキスト行を強調表示し、右クリックしてコピーし、もう一度右クリックして貼り付けることができます。それはかなり速いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.