[解決済み] ステージングせずに git revert --no-commit を実行する
質問
通常、コマンド
git revert
は自動的にいくつかのコミットを作成し、どのコミットが差し戻されたかを示すコミットログメッセージを表示します。
自動コミットを回避するために、オプション
-n
(または
--no-commit
).
しかし、このコマンドの後、元に戻されたファイルはステージングされた領域にあります。コマンドを使用すれば、ステージングを解除することができます。
git reset HEAD
.
コミットやステージングを行わずにコミットを戻す直接的な方法はありますか?
言い換えれば、インデックスに手を付けずに、作業ディレクトリにのみ変更を適用するコミットを戻す直接的なコマンドはありますか?
解決方法は?
そのためのコマンドは一つではありません。 すでにご指摘のように
git revert -n
と
git reset
を使えば、インデックスで元に戻すことができます。
その方法以外に
git apply -R
でパッチを逆適用し、コミットをパッチに変換することができます。
git show
ということです。
$ git show <rev> | git apply -R
は同じ効果をもたらしますが、ひとつだけ重要な(しかし微妙な)違いがあります。 以下は
git revert
のドキュメントに、私なりの強調を加えています。
-n, --no-commit
通常、このコマンドは自動的にいくつかのコミットを作成し、コミット
ログメッセージには、どのコミットが取り消されたかが書かれています。このフラグは
そのコミットを元に戻すために必要な変更を作業環境
ツリーおよびインデックスを作成しますが、コミットを行うわけではありません。さらに
このオプションを使用すると、インデックスが
HEADコミット
の最初の状態に対して戻されます。
インデックスを作成します。
言い換えれば
git revert -n
はインデックスで動作し
のように、作業ツリーを更新する副次的な効果があります。 そのため
git apply
コマンドは (デフォルトでは) ワークツリーに対してのみ動作し、実際には git リポジトリの外部で使用することができます。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] 既存の、プッシュされていないコミットメッセージを修正するには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] ステージングされた変更を表示するにはどうしたらいいですか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Git サブモジュール head 'reference is not a tree' エラー
-
[解決済み】git-mergeの-dry-runオプションはありますか?
-
[解決済み】GitHubで空のブランチを作成する
-
[解決済み】git push >> fatal: 設定されたプッシュ先がありません。
-
gitアップロードの共通エラー処理
-
[解決済み] リモートから<branch name>とマージするように構成が指定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] GitHubに空のブランチを作成する
-
[解決済み] Git pull - マージする前に移動または削除してください。
-
[解決済み] 現在の支店にはトラッキング情報がありません
-
[解決済み] git リモートリポジトリには、ローカルブランチにマージされていないコミットが含まれています。