チェックアウトエラーの再現
エラーの修正方法を理解するために、まずエラーを再現してみましょう。これにより、Git が競合を報告する理由が明確になります。セットアップスクリプトはすでに 2 つのブランチ(mainとfeature-branch)を持つ Git リポジトリを作成しています。feature-branchには、mainブランチでローカルに作成するファイルが含まれています。
まず、プロジェクトディレクトリに移動します。この実験のすべてのコマンドはこのディレクトリから実行されます。
cd ~/project/git-checkout-demo
リポジトリの現在の状態を確認し、すべてがクリーンであることを確認しましょう。
git status
出力は次のようになります。
On branch main
nothing to commit, working tree clean
これにより、保留中の変更がないmainブランチにいることが確認できます。次に、利用可能なブランチをリスト表示しましょう。
git branch
2 つのブランチが表示され、*が現在のブランチを示します。
feature-branch
* main
次に、競合を作成しましょう。現在の作業ディレクトリにfeature.mdという名前の新しいファイルを作成します。このファイルは現在、mainブランチでは Git によって「追跡されていません」が、feature-branchでは同じ名前のファイルがすでに存在し、追跡されています。
echo "## My local changes to feature documentation" > feature.md
新しい追跡されていないファイルを確認するために、再度ステータスを確認しましょう。
git status
出力には、feature.mdが追跡されていないファイルとして表示されます。
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.md
nothing added to commit but untracked files present (use "git add" to track)
最後に、feature-branchに切り替えようとします。
git checkout feature-branch
このコマンドは失敗し、調査中のエラーが発生します。
error: The following untracked working tree files would be overwritten by checkout:
feature.md
Please move or remove them before you switch branches.
Aborting
Git は、feature-branchからのバージョンによってローカルの追跡されていないfeature.mdファイルが上書きされるのを保護するために、チェックアウトを中止しました。次のステップでは、この問題を解決するためのさまざまな方法を検討します。