0
0

More than 3 years have passed since last update.

Windows上のGitで特定のディレクトリのみ追跡させようとしたら全てのディレクトリが追跡できなくなった話

Last updated at Posted at 2020-05-06

最初に結論

WindowsにおいてGitで特定のディレクトリのみ管理したい場合,.gitignoreの最初は*ではなく/*とする必要がある.*だと,たとえ.gitignore内でディレクトリを!指定しても管理対象にならない.

起こった問題

問題が起こった環境は,

  • OS: Windows 10
  • Git: v2.19.2.windows.1

である.

ルートに.vscodeディレクトリとscriptsディレクトリとその他もろもろのディレクトリがあるGitリポジトリを作成した..vscodeディレクトリとscriptsディレクトリのみをGitで管理したかったので,以下のような.gitignoreを作成した.

.gitignore
# いったん全てのファイルを無視
*

!.gitignore
!/.vscode/
!/scripts/

そして以下のコマンドで一度キャッシュをリセットした.

git rm -r --cached .

すると.gitignore以外の全てのディレクトリが追跡できなくなり,.vscodeディレクトリとscriptsディレクトリもgit addできなくなった.

解決方法

.gitignoreの最初の*/*に変更したら問題が解決した..gitignoreを以下のように変更すると,.vscodeディレクトリとscriptsディレクトリがgit addでき,追跡できるようになった.

.gitignore
# いったん全てのファイルを無視
/*

!.gitignore
!/.vscode/
!/scripts/

Linuxではどうなるのか

Linuxではどうなるのか検証してみた.OSはUbuntu 18.04,Gitのバージョンは2.17.1である.

結論から言うとLinuxではこのような問題は起こらなかった.

.gitignoreにおいて*で全ファイルを無視してキャッシュを削除した後,追跡したいディレクトリを!/script/のように指定してあげると問題なくgit addできた.またLinuxで.gitignoreの最初を/*としていても,特に問題は出なかった.WindowsとLinuxの両方で運用する予定のあるリポジトリは/*としておくべきである.

結論

WindowsにおいてGitで特定のディレクトリのみ管理したい場合,.gitignoreの最初は*ではなく/*とする必要がある.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0