ホームページ >システムチュートリアル >Linux >git stash データのデータを取得する方法を教える

git stash データのデータを取得する方法を教える

PHPz
PHPz転載
2024-01-07 10:21:451205ブラウズ
###導入### git コマンドが間違っていたため、彼は stash に保存された変更を削除しました。この悲しいエピソードの後、私たちは彼が行った仕事を復元する方法を見つけようと試み、それを実行しました。最初に警告します。大規模な機能を実装する場合は、それを小さなチャンクに分割し、定期的にコミットしてください。何もせずに長時間働くのは良い習慣ではありません。誤って削除した変更をスタッシュから復元する方法を示しましょう。 テストブランチの作成
例として使用したウェアハウスには、以下に示すように、ソース ファイル「main.c」が 1 つだけあります。

コミットは「初期コミット」:

1 つだけです。 教你找回 git stash 数据中的数据

このファイルの最初のバージョンは次のとおりです: 教你找回 git stash 数据中的数据

ファイルにコードを書きます。この例では、大きな変更を加える必要はありません。stash に何かを入れる必要があるだけなので、1 行だけ追加します。 「git diff」の出力は次のとおりです: 教你找回 git stash 数据中的数据


git stash の誤操作教你找回 git stash 数据中的数据

ここで、自分自身の変更をまだコミットせずに、リモート リポジトリからいくつかの新しい変更を取得したいとします。そこで、最初にそれを隠し、リモート ウェアハウス内の変更がプルされるのを待ってから、変更をメイン ブランチに戻すことにしました。次のコマンドを実行して変更をスタッシュに移動しました: リーリー コマンド「git stash list」を使用して stash を表示します。変更内容はここで確認できます:

私のコードはすでに安全な場所にあり、master ブランチは現在クリーンです (確認するには git status コマンドを使用します)。あとは、リモート リポジトリから変更を取得し、変更を master ブランチに戻すだけです。これが私がすべきことです。 教你找回 git stash 数据中的数据

しかし、コマンドを間違って実行しました:

リーリー

次のコマンドを実行する代わりに、スタッシュが削除されました:

リーリー

このコマンドは、スタッシュをスタックから削除する前にスタッシュを適用します。コマンド

git stash list

を再度実行すると、変更をスタックから master ブランチに戻さずに削除したことがわかります。ああ、神様!次はどうする?

git stash データの取得

良いニュースは、git は変更を含むオブジェクトを削除したのではなく、そのオブジェクトへの参照を削除しただけです。これを実証するために、データベース内のオブジェクトの接続と有効性を検証するコマンド git fsck を使用します。これは、リポジトリで git fsck を実行した後の出力です:


パラメータ --unreachable により、git-fsck に到達できないオブジェクトをすべて表示させます。ご覧のとおり、アクセスできないオブジェクトがないことがわかります。そして、スタッシュから変更を削除して同じコマンドを再度実行すると、別の出力が得られました: 教你找回 git stash 数据中的数据


現在、アクセスできないオブジェクトが 3 つあります。それで、私の変化はどれですか?実際のところは分かりません。コマンド git show を実行して各オブジェクトを検索する必要があります。 教你找回 git stash 数据中的数据

###それでおしまい! ID 番号 95ccbd927ad4cd413ee2a28014c81454f4ede82c は、私の変更に対応します。失われた変更が見つかったので、それを復元できます。 1 つの方法は、この ID を取得して新しいブランチに入れるか、直接コミットすることです。変更オブジェクトの ID 番号を取得したら、変更を master ブランチに戻す最適な方法を決定できます。この例では、git stash を使用して変更を master ブランチに戻しました。

リーリー 教你找回 git stash 数据中的数据覚えておくべきもう 1 つの重要なことは、git はガベージ コレクション プログラム (gc) を定期的に実行するということです。このプログラムが実行されると、git fsck を使用してアクセスできないオブジェクトを表示できなくなります。

以上がgit stash データのデータを取得する方法を教えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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