回答:
gitignoreによると、Gitが検討するさまざまな「無視パターンソース」には優先順位があることを忘れないでください。
$GIT_DIR/info/exclude
。core.excludesfile
。最後の2つは問題の解決策になる可能性がありますが、
(このSO質問も参照してください)
他の2つのソリューションには、インデックスの更新が含まれます(git update-index
):
git update-index --assume-unchanged
:「Git:ローカルリポジトリのみでファイルの追跡を解除し、リモートリポジトリに保持する」を参照してください。git update-index --assume-unchanged
ディレクトリー "。 --no-assume-unchange
効果を元に戻すために使用します。「現在保護されてgit add
いるファイルは可能assume-unchanged
ですか?」を参照してください。ただし、別のブランチをチェックアウトするときgit pull
、またはするときに、その「無視」ステータスがリセットされる場合があります。したがって、他のオプション:
git update-index --skip-worktree
; 見る:
両者の違いは「で説明されて- 『の違いのGit assume-unchanged
』と『skip-worktree
』」。
update-index --skip-work-tree
ます。回答を編集して、これら2つのupdate-index
コマンドを示す私の古い回答へのリンクをいくつか追加しました。
変更できる.git/info/exclude
場合は、そこに同じルールを配置できます。ただし、そのファイルはローカルリポジトリ内にのみ存在します。
.git
サブモジュールにディレクトリはありません...
.git
フォルダは実際にはにありますparent_repo/.git/modules/submodule_name
。だから編集しますparent_repo/.git/modules/submodule_name/info/exclude
無視するファイルをGITに指示する方法は3つあります。
.gitignore
ファイル$GIT_DIR/.git/info/exclude
core.excludesfile
設定で参照されるファイル後者の2つのポイントは問題を解決することができます。
詳細については、gitignore(5)を参照してください。
リポジトリにいくつかのローカルファイルを配置したいだけで、サブディレクトリの場所が柔軟な場合は、ファイルを入れて、次のような内容のをtracked_dir1/tracked_dir2/untracked_dir/
追加できますtracked_dir1/tracked_dir2/untracked_dir/.gitignore
。
*
すなわち
$ cat > tracked_dir1/tracked_dir2/untracked_dir/.gitignore
*
<Ctrl+D>
私も同じような状況にあったので、言及されていない自分の優先ソリューションを追加します。git update-index --assume-unchanged
この場合の問題は、追跡されていないファイルに対しては実行できないことです。あなたが言った
リポジトリの.gitignoreを変更できません。
私はあなたが意味することはあなたが変更.gitignore
を元にプッシュすることができないということだと仮定します。それができる場合は、追跡されていないファイルをローカル.gitignore
に追加git update-index --assume-unchanged .gitignore
し、変更.gitignore
がプッシュされないようにします。これで、(おそらく)追跡されていないファイルは無視され、リモート.gitignore
ファイルには影響しません。
追跡されたファイルに対するローカルの変更を無視します。
git update-index --assume-unchanged my-file.php
追跡ファイルへのローカル変更を無視しない:
git update-index --no-assume-unchanged my-file.php
ソース: git help update-index
--[no-]assume-unchanged
...
This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked
files (akin to what .gitignore does for untracked files). Git will fail (gracefully) in case it needs to
modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is
changed upstream, you will need to handle the situation manually.
プロジェクトhttps://help.github.com/articles/ignoring-files/#create-a-global-gitignoreでメソッドを変更する代わりに、グローバルgitignoreメソッドを使用でき ます
update-index --assume-unchanged
@see stackoverflow.com/a/25253144/292408