[解決済み】スタッシュを逆向きに貼るには?
2022-03-31 19:50:39
質問
私は小さなパッチをgit stashに保存しています。 それを作業コピーに適用するために
git stash apply
. 今、私はパッチを逆適用することによって、それらの変更を取り消したいと思っています。
git revert
が、隠し場所に対して行うことになります)。
どなたか、この方法をご存じないでしょうか?
明確にしてください。 私の作業コピーには他の変更点があります。 私の特別なケースを説明するのは難しいのですが、隠し場所にあるデバッグ用のコードや実験的なコードを想像していただければと思います。 今、私の作業コピーに他の変更と混ざっているので、隠し場所からの変更の有無による効果を見たいと思います。
現在、stashはこれをサポートしていないようですが
git stash apply --reverse
はいい機能だと思います。
解決方法は?
によると
git-stash マニュアルページ
stash は作業ディレクトリの状態をツリーに記録したコミットとして表され、その最初の親となるコミットは
HEAD
スタッシュが作成されたとき、" と
git stash show -p
は、隠した状態と元の親との差分として、隠し場所に記録された変更点を与えてくれます。
他の変更点をそのままにするには
git stash show -p | patch --reverse
のようにします。
$ git init
Initialized empty Git repository in /tmp/repo/.git/
$ echo Hello, world >messages
$ git add messages
$ git commit -am 'Initial commit'
[master (root-commit)]: created 1ff2478: "Initial commit"
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 messages
$ echo Hello again >>messages
$ git stash
$ git status
# On branch master
nothing to commit (working directory clean)
$ git stash apply
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: messages
#
no changes added to commit (use "git add" and/or "git commit -a")
$ echo Howdy all >>messages
$ git diff
diff --git a/messages b/messages
index a5c1966..eade523 100644
--- a/messages
+++ b/messages
@@ -1 +1,3 @@
Hello, world
+Hello again
+Howdy all
$ git stash show -p | patch --reverse
patching file messages
Hunk #1 succeeded at 1 with fuzz 1.
$ git diff
diff --git a/messages b/messages
index a5c1966..364fc91 100644
--- a/messages
+++ b/messages
@@ -1 +1,2 @@
Hello, world
+Howdy all
編集する
これを軽く改良したのが
git apply
をpatchの代わりに使用します。
git stash show -p | git apply --reverse
あるいは
git apply -R
への省略形として
git apply --reverse
.
最近、これが本当に便利なんです......。
関連
-
[解決済み] [email protected] へのいくつかの参考文献のプッシュに失敗しました。
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Gitで変更された複数のファイルのうち、1つのファイルだけを隠す?
-
[解決済み] Gitで落としたスタッシュを復元する方法とは?
-
[解決済み] 特定のファイルを git stash するにはどうしたらいいですか?
-
[解決済み] 未追跡のファイルを保存する方法を教えてください。
-
[解決済み] gitでstashの中身をプレビューすることは可能ですか?
-
[解決済み】ローカルの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エラー - fatal: マージ中に部分コミットができない
-
[解決済み】gitが「変更をコミットするか、マージする前にstashしてください」と言うのを解決するには?
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
gitアップロードの共通エラー処理
-
[解決済み] 複数のgitコミットを元に戻すには?
-
[解決済み] "would clobber existing tag "を取り除くには?
-
[解決済み] SourceTree error:1407742E:SSLルーチン:SSL23_GET_SERVER_HELLO:tlsv1警告プロトコルバージョン
-
[解決済み] git status に fatal: bad object HEAD と表示される。
-
[解決済み] fatal: bad revision "とはどういう意味ですか?
-
[解決済み] Git作者不明