1. ホーム
  2. git

[解決済み] git は2つの特別な名前のファイルを無視しない

2023-08-19 17:29:25

質問

git リポジトリの一部であるが、他の開発者ではなく私のローカルシステムにとってのみ意味のある変更があるため、github リポジトリの一部とすべきではない、2 つのファイルをコミットから自動的に除外したいのです。

私はそれらを .git/info/exclude に追加し、git がそれに対する変更をコミットしてはいけないと理解してくれることを期待しています。

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
a.conf
b.conf
# *~

しかし git status はまだコミット用のステージドとしてリストアップされています。

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   build/conf/a.conf
#   modified:   build/conf/b.conf
#

コミットごとに定期的にアンステージしたくないのですが(一度だけ忘れるかもしれません)、どうすればいいでしょうか?

どのように解決するのですか?

トラックされたファイルの変更を無視したい。これは実現できません (たとえば チャールズ・ベイリー が言うように を含む)は正しく、どちらも .gitignore でも .git/info/exclude .

を使用する必要があります。 git update-index :

git update-index --assume-unchanged build/conf/a.conf
git update-index --assume-unchanged build/conf/b.conf

は、あなたが望むことを実現します: ファイルは常に変更されないものとします。

これらのファイルの変更を再び追跡したい場合には --no-assume-unchanged .

最後に、現在どのファイルが --assume-unchanged モードになっているファイルを知りたい場合は、git に

git ls-files -v | grep -e "^[hsmrck]"