コマンドラインに手を触れずにSourceTreeで誤ったコミットメッセージを編集する方法を教えてください。
追加詳細:
結果:
以下は、 SourceTree for Windowsバージョン1.5.2.0 を使用して、前のコミット(これは最新のコミットではない)のコミットメッセージを編集する手順です。
直前編集したいコミットを選択します。たとえば、「FOOBAR!」というメッセージでコミットを編集したいとします。それから私はそれの直前に来るコミットを選択する必要があります:
選択したコミットを右クリックしてRebase children...interactively
をクリックします。
編集したいコミットを選択して、一番下のEdit Message
をクリックします。この場合は、 "FOOBAR!"というメッセージでコミットを選択しています。
コミットメッセージを編集して、OK
をクリックします。私の例では、 "SHAZBOT!SKADOOSH!"を追加しました。
対話的なリベースウィンドウに戻ったら、OK
をクリックしてリベースを終了します。
この時点で、すでにプッシュしたコミットをリベースしたので、新しい変更を強制プッシュする必要があります。しかし、Windows用のSourceTreeの現在の1.5.2.0バージョンでは、GUIを強制プッシュすることはできません。そのためには、コマンドラインからGitを使用する必要があります。
GUIからTerminal
をクリックして端末を開きます。
次のコマンドで端末から強制プッシュします。
git Push Origin <branch> -f
<branch>
はプッシュしたいブランチの名前で、-f
はプッシュを強制することを意味します。強制プッシュ上書きしますあなたのリモートリポジトリにコミットしますが、あなたは自分のリポジトリを他の人と共有していないと言ったので、あなたのケースでは問題ありません。
それだ!これで終わりです!
バージョン1.9.6.1。プッシュされていないコミット用。
注:この回答は、もともとSourceTree for Windowsの古いバージョンに関して書かれたもので、現在は古くなっています。
私の新しい回答を参照 SourceTree for Windowsの現在のバージョンについては、1.5.2.0。私は歴史的な目的のためにこの答えを残しています。
私はWindowsを使用しているので、コマンドラインツールもありませんし、使用方法もわかりません。(それが整理される唯一の方法ですか?GUIはgitのすべての機能をカバーしていませんか?—- オリジナルポスター
Git GUIについては、いいえ、Gitのすべての機能をカバーしていません。 彼らは近づかないGitで間違ったコミットメッセージを編集するにはどうすればよいですか? の回答の1つを確認することをお勧めします。Gitはコマンドラインから複数のソリューションがあるほど柔軟です。
SourceTreeには、実際にmsysgit bashシェルが既に付属している場合もあれば、標準のWindowsコマンドシェルを使用できる場合もあります。いずれにしても、「ターミナル」ボタンをクリックしてSourceTreeから開きます。
ここで、SourceTreeが使用するターミナル(bashまたはWindows)を設定します。
そうは言っても、SourceTreeでこれを行う方法の1つを次に示します。 コメントで 「誤ったコミットに戻る」ことを気にしないことを言ったので(これは実際にはリセットを意味すると仮定しますが、これはGitの別の操作です)、ここにあります手順:
Reset current branch to this commit
]を選択し、ドロップダウンからハードリセットオプションを選択することにより、SourceTreeでハードリセットを行います。 このコメント :について
既にBitbucketにプッシュされているため不可能な場合は、新しいリポジトリを作成して最初からやり直してもかまいません。
これは、レポで作業しているのはあなただけだということですか?これは重要です。なぜなら、コラボレーターに問題を引き起こすことなく、レポジトリの履歴を変更するのは簡単ではないからです(コミットを修正するなど)。ただし、レポで作業しているのは自分だけだと仮定すると、次に行うことは、変更された履歴をリモートに強制的にプッシュすることです。
ただし、障害のあるコミットにハードリセットを行ったため、強制的にプッシュすると、それ以降のすべての作業が失われることに注意してください。それで問題ない場合は、コマンドラインで次のコマンドを使用して強制プッシュを実行する必要があります。SourceTreeでオプションを見つけることができなかったためです。
git Push remote-repo head -f
また、これはBitBucketがプッシュをレポジトリに強制することを許可すると想定しています。
とにかくコマンドラインからGitの使用方法を実際に学習する必要がありますが、Gitの習熟度が向上します。 #ProTip、msysgitを使用し、ターミナルプロパティでクイック編集モードをオンにして、テキスト行をダブルクリックして強調表示し、右クリックしてコピーし、再度右クリックして貼り付けできるようにします。とても速いです。
コメントメッセージに英語以外の文字が含まれている場合、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
を押します。