web-dev-qa-db-ja.com

SourceTree Windows(すでにリモートにプッシュされている)でコミットメッセージを編集する

コマンドラインに手を触れずにSourceTreeで誤ったコミットメッセージを編集する方法を教えてください。

追加詳細:

  • これは最新のコミットではありません。
  • すべてが既にBitbucketにプッシュされました。
  • これは私的なリポジトリであり、私は唯一の共同編集者です。
  • いつでもコミットし直すことができるので、以前のコミットを失うことを気にする必要はありません。
  • しかし、これまでに加えられたコードの変更を失いたくはありません。

結果:

  • あなたのコメントや返答によると、現時点では不可能だと思われるので、新しいリポジトリを作成して最初からやり直します。ご協力ありがとうございます。
180
Community

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

ステップ1

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

Selecting commit before the one that I want to edit.

ステップ2

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

Selecting "Rebase children interactively".

ステップ3

編集したいコミットを選択して、一番下のEdit Messageをクリックします。この場合は、 "FOOBAR!"というメッセージでコミットを選択しています。

Select the commit that you want to edit.

ステップ4

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

Edit the commit message

ステップ5

対話的なリベースウィンドウに戻ったら、OKをクリックしてリベースを終了します。

Click OK to finish.

ステップ6

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

GUIからTerminalをクリックして端末を開きます。

Click Terminal

ステップ7

次のコマンドで端末から強制プッシュします。

git Push Origin <branch> -f

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

それだ!これで終わりです!

374
user456814

バージョン1.9.6.1。プッシュされていないコミット用。

  1. 以前に確定した説明をクリック
  2. 「コミット」アイコンをクリックします
  3. 新しいコミットメッセージを入力して、コミットオプションドロップダウンから "最新のコミットを推奨"を選択します。
  4. あなたのメッセージをコミットしてください。
28
Franc

更新

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

私の新しい回答を参照 SourceTree for Windowsの現在のバージョンについては、1.5.2.0。私は歴史的な目的のためにこの答えを残しています。

元の回答

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

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

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

enter image description here

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

enter image description here

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

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

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

このコメント :について

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

これは、レポで作業しているのはあなただけだということですか?これは重要です。なぜなら、コラボレーターに問題を引き起こすことなく、レポジトリの履歴を変更するのは簡単ではないからです(コミットを修正するなど)。ただし、レポで作業しているのは自分だけだと仮定すると、次に行うことは、変更された履歴をリモートに強制的にプッシュすることです。

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

git Push remote-repo head -f

また、これはBitBucketがプッシュをレポジトリに強制することを許可すると想定しています。

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

12
user456814

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

だから私は次の方法を使用する必要があります。

CAUTION:コミットが他のメンバーによって引っ張られた場合、以下の変更は彼らにとって混乱を引き起こすかもしれません。

Step1:ソースツリーのメインウィンドウでリポジトリタブを探し、 "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ウィンドウを開きます。各行の最初のWordは " pick "、編集したい行の" pick "を" reword "に変更します。それから:wqを入力してそのviウィンドウを保存して終了します。これで、新しいviウィンドウが開きます。このウィンドウに新しいメッセージを入力してください。保存して終了するにも:wqを使用してください。

2)ターゲットのコミットがリモートにプッシュされている場合は、もう一度強制的にプッシュする必要があります。 gitコマンドコンソールに次のように入力します。

git Push --force


最後:ソースツリーのメインウィンドウで、更新するにはF5を押します。

9
Hosi Golden