私はgit commitとそれに続くPushを行いました。コミットメッセージを変更したいのですが。私が正しく理解しているならば、私がそのような変更をする前に誰かがリモートリポジトリから引っ張ったかもしれないのでこれはお勧めできません。誰も引っ張っていないことを私が知っていればどうなりますか?
これを行う方法はありますか?
それが最新のコミットであれば、単純にこれを実行できます。
git commit --amend
これでエディタに最後のコミットメッセージが表示され、メッセージを編集できます。 (古いメッセージを消去して新しいメッセージを使用したい場合は、-m
を使用できます。)
それからあなたがプッシュするとき、これをしなさい:
git Push --force-with-lease <repository> <branch>
あるいは "+"を使うこともできます。
git Push <repository> +<branch>
あるいは--force
を使うこともできます。
git Push --force <repository> <branch>
これらのコマンドを使用するときは注意してください。
他の誰かが同じブランチに変更をプッシュした場合、おそらくそれらの変更を破棄したくないでしょう。 --force-with-lease
オプションは、最も上流の変更があると中止されるので最も安全です。
ブランチを明示的に指定しない場合、Gitはデフォルトのプッシュ設定を使います。デフォルトのプッシュ設定が「マッチング」の場合は、同時に複数のブランチでの変更を破棄することができます。
すでに引っ張っている人は誰でもエラーメッセージを受け取るでしょう、そして彼らは次のようなことをすることによって更新する必要があります(彼ら自身は何も変更を加えていないと仮定して)
git fetch Origin
git reset --hard Origin/master # Loses local commits
reset --hard
を使用するときは注意してください。ブランチに変更があると、それらの変更は破棄されます。
破壊されたデータは本当に古いコミットメッセージですが、--force
はそれを知らず、他のデータも喜んで削除します。 --force
は、「データを破壊したいのですが、破壊されているデータは確実にわかっています」と考えてください。しかし、破壊されたデータがコミットされると、reflogから古いコミットを回復することができます。データは実際には破壊されるのではなく、 orphaned です。
あなたがデータを破壊しているとは思わないなら、--force
... 悪いことが起こるかもしれない から離れてください。
これが--force-with-lease
がやや安全である理由です。
言うだけ :
git commit --amend -m "New commit message"
その後
git Push --force
パーティーに遅れるかもしれない、これは私がここで見ていない答えです。
Step1 :最後に影響を受けたn
コミットに対して対話的なリベースを行うためのgit rebase -i HEAD~n
。
gitはそれらのコミットを処理するためにエディタをポップアップします。このコマンドに注意してください:# r, reword = use commit, but edit the commit message
、それはまさに我々が必要としているものです。
Step2 :msgを更新したいコミットのpick
をr
に変更してください。エディタを保存して閉じます。
ステップ3 :以下のコミットファイルで、必要に応じてコミットメッセージを更新します。
Step4 :すべてのコミットの後、メッセージが更新されます。あなたはリモコンを更新するためにgit Push -f
をすることを望むかもしれません。
コンソールでこれら二つのステップを使用しなさい:
git commit --amend -m "new commit message"
その後
git Push -f
完了:)
Push --force
を複数の参照と一緒に使用すると、結果としてそれらはすべて変更されます。 gitリポジトリがPush toに設定されている場所に注意を払うようにしてください。幸いなことに、更新するブランチを1つ指定することで、プロセスをわずかに保護する方法があります。 gitのmanページから読んでください。
--forceはプッシュされたすべての参照に適用されるため、Push.defaultをmatchingに設定したり、remoteで設定された複数のプッシュ宛先と共に使用したりすると、現在のブランチ以外の参照が上書きされる可能性があります。彼らの遠隔の対応物の後ろに厳密に)。プッシュを1つのブランチのみに強制するには、参照仕様の前にある+を使用してプッシュします(たとえば、Push Origin + masterと入力してプッシュをマスターブランチに強制します)。
最後のコミットではなく、古いコミットを変更する場合は、ここで説明されているrebase
コマンドを使用する必要があります。 Githubヘルプページ 、 古いまたは複数のコミットメッセージのメッセージを修正するセクション
コマンド 1 。
git commit --amend -m "New and correct message"
その後、
コマンド 2 。
git Push Origin --force
git commit --amend
次に、現在のウィンドウのメッセージを編集してから変更します。その後する
git Push --force-with-lease
別の選択肢は、エラーを含むコミットオブジェクトを参照する追加の "errata commit"(およびPush)を作成することです - 新しいerrata commitも訂正を提供します。エラータコミットとは、実質的なコードの変更はしないが重要なコミットメッセージを含むコミットです。たとえば、readmeファイルに空白文字を1つ追加し、その変更を重要なコミットメッセージでコミットするか、gitオプション--allow-empty
を使用します。これは、リベースよりも確実に簡単で安全で、真の履歴を変更することはなく、ブランチツリーをきれいに保ちます(最新のコミットを修正する場合はamend
を使用するのも良い選択ですが、errataコミットは良い選択です)。より古いコミット)このようなことが起こることはめったにありませんが、単に間違いを文書化するだけで十分です。将来、gitログで機能キーワードを検索する必要がある場合、その元のコミットで間違ったキーワードが使用されていたため(元のタイプミス)、元の(誤った)コミットが表示されない可能性があります。次に、errata commitで、タイプミスがあった元のコミットをあなたに示します。これが例です:
$ git log commit 0c28141c68adae276840f17ccd4766542c33cf1d 作成者:First Last 作成日:水8月8日15時55分52秒2018年-0600 []エラータコミット: このコミットには実質的なコードの変更はありません このコミットは前回のコミットメッセージの修正を文書化するためだけに提供されています これはコミットオブジェクトに関連していますe083a7abd8元の不正確なコミットメッセージ: 背景色を赤に変更しました 訂正(*ハイライト表示*): 背景色を*青*に変更しました [ commit 032d0ff0601bff79bdef3c6f0a02ebfa061c4ad4 作成者:First Last 日付:Wed Aug 8 15:43:16 2018年-0600 いくつかの中間コミットメッセージ ] commit e083a7abd8deb5776cb304fa13731a4182a24be1 作者:最初の最後の 日付:Wed Aug 8 13:31:32 2018 -0600 背景色をに変更しました。赤
これは私にとってはかなりうまくいきます、
git checkout由来/ブランド名
すでにブランチにいる場合は、pullまたはrebaseを実行したほうがよいでしょう。
git pull
または
git -c core.quotepath=false fetch Origin --progress --Prune
後であなたは単に使用することができます
git commit --amend -m "Your message here"
またはテキストエディタを開きたい場合は、
git commit --amend
コメントが多い場合は、テキストエディタを使用することをお勧めします。あなたはコマンドで好みのテキストエディタを設定することができます
git config --global core.editor your_preffered_editor_here
とにかく、コミットメッセージの変更が終わったら、それを保存して終了してください。
そして走る
git Push --force
そして、あなたは終わりました
あなたがbitbucketパイプラインを使っているなら同じ問題についての追加情報
メッセージを編集する
git commit --amend
断絶する
git Push --force <repository> <branch>
それから--forceをパイプラインのPushコマンドに追加します
git ftp Push --force
これにより、以前のコミットを削除して現在のコミットをプッシュします。
最初のプッシュ後に--forceを削除する
私はそれをbitbucketパイプラインで試してみました