80

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

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

# 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
#

コミットするたびに定期的にステージングを解除したくないのですが(一度は忘れてしまうかもしれません)、どうすればよいですか?

4

1 に答える 1

191

あなたが望むのは、追跡されたファイルの変更を無視することです。これは ( Charles Bailey が言うよう.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-unchangedgit に問い合わせてください。

git ls-files -v | grep -e "^[hsmrck]"
于 2012-06-04T12:30:20.937 に答える