Search Results: tag:git-stash

15 件ヒットしました。 1 - 10 番目を表示しています。

git git-stash git-apply 適用した stash の状態を取り消す

特別なコマンドはないのでパッチ形式で表示した結果をパイプで git apply -R に渡す。

git stash apply

で stash の最後の状態を適用したとする。このときに、この適用を取り消すには

git stash show -p | git apply -R

とすればよい。

git git-stash stash を適用できないとき

git stash pop

とすると

error: Your local changes to the following files would be overwritten by merge:
        some_file
Please, commit your changes or stash them before you can merge.
Aborting
Index was not unstashed.

のようなエラーが出て適用できないことがある。 インデックスに保存されていない変更をインデックスに加えればよい (もちろん、きちんとコミットするか、stash してもよい)。たとえば、

git add -u

として更新をインデックスに加え

git stash pop

とする。

git git-stash インデックスに保存されている変更を除いて stash に保存する

git stash

とすると変更は stash に保存されてワークツリーは HEAD になる。

「-k」か「--keep-index」オプションをつけると、 インデックスに保存されてる変更を除いて stash に保存され、 インデックスはワークツリーにそのまま残る。

git stash -k

git git-stash 現在のワークツリーを一時的に保存する

現在のブランチのワークツリーを一時的に保存するには stash を利用する。

git stash save

とするか、save を省略して

git stash

とする。

このとき、stash にメッセージをつけるには

git stash save "message"

とする。

git git-fsck git-stash 誤って削除した stash を復元する

誤って

git stash clear

とした場合に、stash に保存されていた状態を復元したいことがある。

git fsck でどこからもたどることができないコミットを探し、 その出力を編集して git log で探す。 シェルで

git fsck --unreachable | grep commit | cut -d\  -f3 | xargs git log --merges --no-walk --grep=WIP

とする。 この中で必要なコミットが見つかれば、その SHA-1 を

git cherry-pick -n -m1 <SHA-1>

としてインデックスに適用する。

git git-stash stash に保存された状態を適用するときにインデックスに保存されていた変更はインデックスに戻す

git stash pop

とすると stash に保存されていた変更はインデックスに保存されていた変更であろうと すべてワークツリーに適用する。 「--index」オプションをつけると、インデックスに保存されていた変更は 現在のブランチのインデックスに保存される。

git stash pop --index

「--index」オプションは apply にも使える。

git stash apply --index

git git-stash git stash pop でコンフリクトしたとき

git stash pop

でコンフリクトしたときは、stash から適用された状態は削除されない。 コンフリクトは手動で解決して、stash に保存されている状態は不要になったときに

git drop stash{0}

のようにして削除する。

git git-stash stash の状態とその親コミットとの差を表示する

git stash show
git stash show stash@{1}

とすると stash の状態とその親コミットとの diffstat を表示する。

また、差分を表示したければ

git stash show -p

とする。

git git-stash stash に保存されている状態を適用するが、stash から削除はしない

git stash pop

とすると適用した変更は stash から削除される。 popの代わりに apply を使うと適用された変更は stash から削除されずに残る。

git stash apply
git stash apply stash@{1}

git git-stash 現在のワークツリーの一部を stash に保存する

単に

git stash

とすると HEAD との差分が stash に保存される。 この差分の一部を stash に保存するには「--patch」オプションをつける。

git stash --patch