🌲
mainブランチから作業ブランチへ移動しようとした時のエラーについて
開発環境
- macOS
- VSCode
行いたいこと
- mainブランチから作業ブランチへ切り替えようとした際、未追跡のファイルが存在していたため、それらのファイルが上書きされる可能性があるという警告が表示された。原因解明から解消までの流れを記載する。
- 内容は
Gitリポジトリ
のルートが正しく設定されていないために発生したエラーの解消。
起こっているエラー
- 以下のように
git switch ブランチ
で、mainブランチから他のブランチへ切り替えを試みた結果、untracked files
というエラーが表示された。 -
untracked files
は、Gitが追跡していないファイルが存在し、操作によってそれらが上書きされる可能性がある場合に表示される警告メッセージです。 - 今回は、複数の
.docker
ファイルが未追跡のため、それらのファイルが上書きされてしまうことを警告するuntracked files
のエラーが表示された。
ターミナル
macbook@MacBook-Air Laravel_app % git switch Task-list
error: The following untracked working tree files would be overwritten by checkout:
.docker/buildx/.lock
.docker/buildx/current
.docker/cli-plugins/docker-buildx
.docker/cli-plugins/docker-compose
〜 省略 〜
.docker/daemon.json
Please move or remove them before you switch branches.
Aborting
-
git status
で未追跡ファイルを確認する。
ターミナル
macbook@MacBook-Air Laravel_app % git status
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
../.docker/
../.lesshst
../.npm/
../.ssh/
〜 省略 〜
../Public/
nothing added to commit but untracked files present (use "git add" to track)
エラーの原因について
- そもそも、エラーで表示されている未追跡の
.docker
ファイルは、現在いるLaravel_app
のディレクトリには存在しないので、Gitリポジトリ
のルートが正しく設定されていないと考えられた。 - 自分のいるディレクトリはどこのリポジトリの中なのか? また、そのリポジトリの一番上のフォルダはどこか? を以下のコマンドで確認する。
ターミナル
macbook@MacBook-Air Laravel_Task_app % git rev-parse --show-toplevel
/Users/macbook
-
/Users/macbook
は、ホームディレクトリ
がGitリポジトリ
のルートとして設定されていたことを意味する。 - ホームディレクトリに
Gitリポジトリ
があるとき、git switch
を実行すると、リポジトリ全体(ホームディレクトリ全体)に変更が適用される。 - 今回の場合
Gitリポジトリ
のルートは以下のようにする必要がある。
/Users/macbook/Laravel_Task_app
Gitリポジトリのルートの再設定の手順
- 以下のコマンドでホームディレクトリの.gitを削除し全体のGit管理を解除する
rm -rf ~/.git
- 今いるディレクトリをGitリポジトリにする。(Gitの初期化)
ターミナル
macbook@MacBook-Air Laravel_Task_app % git init
Initialized empty Git repository in /Users/macbook/Laravel_Task_app/.git/
- 改めてGitの確認コマンドでGitリポジトリのルートを確認する。
ターミナル
macbook@MacBook-Air Laravel_Task_app % git rev-parse --show-toplevel
/Users/macbook/Laravel_Task_app
- 正しいGitリポジトリのルートを設定したあとは、問題なくブランチの切り替えをすることが出来た。
以上で設定は終了です。
Discussion