問題タブ [git-amend]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - ソフトリセットと修正後に最後のコミットに戻る
私は2つのコミット(ローカル)を持っていて、私の歴史は次のとおりでした:A - B:
- コミット A では、ファイルmyfile_v1.txt
- コミット B では、他の複数のファイル。
- 私の作業ディレクトリで、最初のコミットのファイルを少し修正して更新しました: myfile_v2.txt
何かをプッシュする前に履歴をきれいにするために、コミット A を修正し、ファイルを新しい形式に置き換えたいと思いました。
これは私がしました :
reset --soft
Aでadd
myfile_v2.txtcommit --amend
これで、コミット A に修正されたファイルが含まれていることがわかりますが、以前の HEAD に戻る方法も、B を再度コミットしないとこれが可能かどうかもわかりません。
何か案は?
git - 特定のコミットのコミット メッセージを変更する
注: this oneと同様の質問ですが、いくつかの重要な変更があります。
コミットIDを指定して、コミットの日付を書き換える次の関数があります。
rewrite-commit-message
コミットメッセージを変更する同様の機能を実装しようとしています。私が欲しいのは:
- この関数は、 と の
rewrite-commit-message
2 つのパラメータを受け入れます。commit_id
new_commit_message
- 古いコミット メッセージを知る必要はありません。
commit_id
どのコミットを変更するかを知るには十分です。 - いいえ
git commit --amend
、これは古いコミットに関連しているため (必ずしも最新のコミットとは限りません) - 履歴とマスター リポジトリを書き換える心配はありません。私は機能ブランチで作業しており、許可されています。
git push -f
- これを使用したいの
filter-branch
ですが、方法がわかりません:- 変更を特定のコミットに適用します。関数で使用される は で使用されます
test
が、コミット環境に関連するものは何も変更したくないので、ここでは行いませんが、コミット メッセージです。rewrite-commit-date
env-filter
env-filter
- コミットメッセージを強制する方法は? には元の
--msg-filter
コミット メッセージが必要です。元のコミット メッセージは気にしません。--force-msg-filter
または類似のものはありますか?
- 変更を特定のコミットに適用します。関数で使用される は で使用されます
私が探しているのはこれに似ていますが、いくつかの注意事項があります。
- 変更をコミットの範囲ではなく、特定のコミットに適用する
- 完全に上書きしたいので、元のコミットメッセージは気にしません
git - インタラクティブなリベースで競合を解決する代わりに修正しました。元に戻すことはできますか?
私は 8 つのコミットのようなものを編集していた大きなインタラクティブなリベースを行っていました。これは で行われgit commit --amend
ます。私の問題は、ある時点で気付かなかったマージの競合が発生したことです。そのため、素朴に修正とgit rebase --continue
-ingを続けました。どうやら複数のコミットを 1 つに修正したようで、リベースの終了後に約 4 つのコミットがなくなりました。変更は他のコミットに修正されました。
これらの修正を元に戻す方法、またはなくなったコミットを再適用する方法はありますか?
もちろん; 1 つの解決策は、戻ってリベースをやり直すことですが、リベースでかなり多くの編集を行ったので、すべての作業をやり直す必要がないようにしたいと考えています。どうやってこの苦境に陥ったかは別の話です。
Git ツリーの例:
リベース前:A-B-C-D-E-F
リベース後: A-B-C-F
(C は現在、D および E からの変更が修正されています)
git - リモートブランチのヘッドで git commit --amend を修正するには?
私は時々このgitの間違いを犯し、信じられないほど迷惑です。リモート ブランチの先頭で誤って commit --amend を実行した場合にどうすればよいか、コミュニティの誰かが考えを持っているかどうか疑問に思っていました。現在、プル、自分の部分的な変更との比較、およびプッシュを行っているため、HEAD に重複したコミット メッセージが表示されます。
明確にするために、以下を修正する最善の方法を尋ねています。
- リモート ブランチ (マスターなど) をプルします。
- 変更する
- コミット -- 変更を修正
- プッシュしようとすると、拒否されます
- 自己および/または神々を呪う