ホームページ >開発ツール >Git >「git stash」の一時保存操作を詳しく解説

「git stash」の一時保存操作を詳しく解説

Guanhui
Guanhui転載
2020-07-23 18:01:274811ブラウズ

「git stash」の一時保存操作を詳しく解説

#必要な理由

必要ありませんallowed 言うまでもなく、このコマンドについて知ったとき、そして後で使用したとき、とても使いやすいので、このコマンドがとても気に入りました。

このコマンドを使用したシナリオについて説明します。

この時点では、私は feature_666 ブランチにいて、feature 666 モジュールの実装に非常に集中していました。空飛ぶキーボードのようなコードを書くことができました~ ~~

そしてこの時点で、お客様からバグが報告されました。これは非常に深刻で、優先度 0 で直ちに解決する必要があります。 ! !
それでは、新しいブランチを動作させるためにリリース ブランチに移動する必要がありますが、666 関数がまだ完了していない場合はどうすればよいでしょうか?
この時点で私は多肢選択問題に直面しました:
A: 送信後に切り替えます。コードはブランチ feature_666 に保存されますが、意味のない送信が生成されます。
B: 送信せずに直接切り替えますが、このオプションは全く利用できない場合は選択させていただきます。

選ぶのが難しくないですか?このとき、選択肢Cがあることを忘れないでください!

C: git stash を使用して現在の変更 (コミットされていないコード) をキャッシュに保存し、ブランチを切り替えてバグを変更し、戻ってきて git stash Pop を使用してバグを取り出します。

1. 一時ストレージ操作

#查看当前状态
git status 
#如果有修改,添加修改文件
git add .
#暂存操作
git stash save '本次暂存的标识名字'

2. 現在の一時レコードの表示

#查看记录
git stash list

変更はどこに保存されますか?

git init を使用してプロジェクトにバージョン管理を追加すると、次の場所に保存されます。プロジェクト パスの下に .git 隠しフォルダーが生成されます。 .git には、バージョン管理のためのすべての情報が保存されます。

.git/refs/stash には、最後の stash に対応するノード ポインタが保存されます。

同様に、すべての stash レコード情報は .git/log/refs/stash

# で確認できます。 ##複数の stash を保存する状況

わかりました。ファイルを変更してから、もう一度 git stash を使用してみましょう。この時点では、一時的な変更が 2 つあります。それではどうでしょうか? 確認してください。

git stash list //一時記憶域内の一時的な変更レコードをすべて表示します

git stash をコミットせずに 2 回実行すると、2 つの stash の特定の変更を正確に区別できなくなります。コンテンツをこのように使用すると、Git が素晴らしく見えますか? それはまったくスマートではありません。どうしてそんなことが可能なのでしょうか。 。

したがって、この場合、次のように、スタッシュに保存された変更に名前を付けることが非常に重要であることは明らかです:

git stash save <message>

3. 一時的な作業を復元します
'pop コマンドは復元します。復元後、一時記憶領域は現在のレコードを削除します。'

#恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash pop stash@{index}

'apply コマンドは復元します。復元後、一時ストレージ領域 現在のレコードは保持されます'

#恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash apply stash@{index}

4. 一時ストレージを削除します##

#删除某个暂存, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash drop stash@{index}
#删除全部暂存
git stash clear
推奨チュートリアル: "
Git チュートリアル

以上が「git stash」の一時保存操作を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。