コミットせずに Git Stash の競合を解決する

John Wachira 2023年6月20日
コミットせずに Git Stash の競合を解決する

この記事では、コミットを元に戻したり作成したりせずに Git stash の競合を解決するために従うべき手順の概要を説明します。 コンテキストを簡単にするために、git stash pop コマンドが競合を引き起こし、コミット用のファイルを追加せずに競合を解決しようとする状況をシミュレートします。

コミットせずに Git Stash の競合を解決する

VSCode で、README.md ファイルを開き、保存して、最後に行を追加し、変更を隠します。

$ git stash
Saved working directory and index state WIP on Dev2.1: 8b5cc6c Zesr

次に、README.md ファイルの最後に別の行を追加し、保存して、変更をコミットします。

これで、git stash pop コマンドを実行できます。

$ git stash pop

git stash pop

コミット用のファイルを追加せずにこれを解決するには、次の手順に従います。

最初のステップは、マージの競合を解決することです。 Git にはデフォルトの mergetool がありますが、Meld を使用することをお勧めします。

Meld を使用する場合は、デフォルトのマージおよび difftool として構成されていることを確認してください。

以下のコマンドを実行して Meld を起動し、競合を手動で解決します。

$ git mergetool

マージの競合に対処した後、作業ツリーの状態を簡単に確認しましょう。

$ git status

git status

上記の出力に見られるように、Git はコミットのためにファイルをステージングしました。 ファイルのステージングを解除するには、推奨されるコマンドを実行する必要があります。

$ git restore --staged README.md

作業ツリーを確認してみましょう。

$ git status

git 復元 –staged

Git はマージ後に stash を自動的に削除しないことに注意してください。 次を実行してドロップする必要があります。

$ git stash drop

結論として、Git の競合を解決済みとしてマークする方法は 2つあります。 git add または git restore --staged コマンドを使用できます。

後者は競合を解決し、インデックスからファイルを削除します。

著者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

関連記事 - Git Stash