Git-fix-mistakes
Git-間違いを修正
誤ることは人間です。 そのため、すべてのVCSは、特定のポイントまでミスを修正する機能を提供します。 Gitは、ローカルリポジトリに加えられた変更を取り消すために使用できる機能を提供します。
ユーザーがローカルリポジトリに誤って変更を加えた後、これらの変更を元に戻したいとします。 このような場合、 revert 操作が重要な役割を果たします。
コミットされていない変更を元に戻す
Jerryがローカルリポジトリのファイルを誤って変更したとします。 しかし、彼は変更を元に戻したいと考えています。 この状況に対処するには、 git checkout コマンドを使用できます。 このコマンドを使用して、ファイルの内容を元に戻すことができます。
さらに、 git checkout コマンドを使用して、ローカルリポジトリから削除されたファイルを取得できます。 トムがローカルリポジトリからファイルを削除し、このファイルを元に戻したいとします。 同じコマンドを使用してこれを実現できます。
Gitはファイル名の前に D という文字を表示しています。 これは、ファイルがローカルリポジトリから削除されたことを示します。
注意-コミットする前にこれらすべての操作を実行できます。
ステージング領域から変更を削除
追加操作を実行すると、ファイルがローカルリポジトリから開始領域に移動することがわかりました。 ユーザーが誤ってファイルを変更してステージング領域に追加した場合、 git checkout コマンドを使用して、変更を元に戻すことができます。
Gitには、常に最新のコミットを指す1つのHEADポインターがあります。 ステージング領域からの変更を取り消す場合は、git checkoutコマンドを使用できますが、checkoutコマンドでは、追加のパラメーター、つまりHEADポインターを指定する必要があります。 追加のコミットポインターパラメーターは、git checkoutコマンドに作業ツリーをリセットし、段階的な変更を削除するよう指示します。
トムがローカルリポジトリからファイルを変更するとします。 このファイルのステータスを表示すると、ファイルが変更されたがステージング領域に追加されていないことがわかります。
Gitステータスは、ファイルがステージング領域に存在することを示しています。現在は、git checkoutコマンドを使用してファイルを元に戻し、元に戻したファイルのステータスを表示します。
GitリセットでHEADポインターを移動する
いくつかの変更を行った後、これらの変更を削除することができます。 Gitリセットコマンドは、変更をリセットまたは元に戻すために使用されます。 3種類のリセット操作を実行できます。
以下の図は、Gitリセットコマンドの図的表現を示しています。
Soft
各ブランチには、最新のコミットを指すHEADポインターがあります。 --softオプションの後にコミットIDを指定してGitのリセットコマンドを使用すると、何も破壊せずにHEADポインターのみがリセットされます。
ここで、上記のコミットIDと一致する最新のコミットIDを表示します。
上記のコマンドは、次の結果を生成します。
HEADポインターをリセットしましょう。
ここで、HEADポインターを1ポジションだけリセットします。 .git/refs/heads/master file の内容を確認しましょう。
ファイルのコミットIDが変更されました。コミットメッセージを表示して確認してください。
上記のコマンドは、次の結果を生成します。
混合した
--mixedオプションを使用してGitをリセットすると、まだコミットされていないステージング領域からの変更が元に戻されます。 ステージング領域からの変更のみを元に戻します。 ファイルの作業コピーに加えられた実際の変更は影響を受けません。 デフォルトのGitリセットはgit reset --mixedと同等です。
hard
Gitリセットコマンドで—hardオプションを使用すると、ステージング領域がクリアされます。 HEADポインターを特定のコミットIDの最新のコミットにリセットし、ローカルファイルの変更も削除します。
コミットIDを確認しましょう。
上記のコマンドは、次の結果を生成します。
Jerryは、ファイルの先頭に1行のコメントを追加してファイルを変更しました。
彼はgit statusコマンドを使用してそれを検証しました。
Jerryは変更されたファイルをステージング領域に追加し、git statusコマンドで検証します。
上記のコマンドは、次の結果を生成します。
Gitステータスは、ファイルがステージング領域に存在することを示しています。 次に、--hardオプションでHEADをリセットします。
Gitリセットコマンドが成功しました。これにより、ファイルがステージング領域から戻され、ファイルに加えられたローカルの変更がすべて削除されます。
Gitステータスは、ファイルがステージング領域から元に戻されたことを示しています。
また、headコマンドは、リセット操作によってローカルの変更も削除されたことを示しています。