web-dev-qa-db-ja.com

新しく作成された特定のフォルダーをGitの.gitignoreに追加します

きれいな作業ディレクトリがあり、昨夜Gitリポジトリからクローンを持ち込みました。しかし、今ではローカルサーバーが作成され、無視したい統計フォルダーが含まれています。

Gitステータスを実行するときにGitにこのフォルダーを無視させることはできないようです。

On branch master
Your branch is ahead of 'Origin/master' by 1 commit.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file: app_public/views/pages/privacy.php
    new file: app_public/views/pages/terms.php
    new file: public_html/stats/ctry_usage_200908.png
    new file: public_html/stats/daily_usage_200908.png
    new file: public_html/stats/dns_cache.db
    new file: public_html/stats/hourly_usage_200908.png
    new file: public_html/stats/index.html
    new file: public_html/stats/usage.png
    new file: public_html/stats/usage_200908.html
    new file: public_html/stats/webalizer.current
    new file: public_html/stats/webalizer.hist

Changed but not updated:
    modified: .gitignore

私は.gitignoreにいくつかの異なる行を追加しましたが、まだ追加しようとしています:

public_html/stats
public_html/stats/**
public_html/stats/**/*
public_html/stats/*
78
Lee

/public_html/stats/*をお試しください

ただし、git status内のファイルはcommittedとして報告されるため、すでに手動で追加されていることを意味します。もちろん、この場合、無視するには遅すぎます。 git rm --cacheできます(IIRC)。

このために2つのケースがあります

ケース1:ファイルはすでにgitリポジトリに追加されています。

ケース2:新しく作成されたファイルと、使用時にステータスが未追跡ファイルとして表示される

git status

ケース1がある場合:

STEP 1:次に実行

git rm --cached filename 

git repoキャッシュから削除するには

それがディレクトリである場合、使用します

git rm -r --cached  directory_name

STEP 2:ケース1が終わったら、.gitignoreという名前の新しいファイルをgitレポ

STEP 3:以下を使用して、gitにファイルを変更しない/仮定するように指示します

git update-index --assume-unchanged path/to/file.txt

STEP 4:さて、エディターnano、vim、geanyなどでgit status open .gitignoreを使用してステータスを確認します。いずれか、ファイルのパスを追加します/無視するフォルダー。フォルダーの場合、ユーザーfolder_name/*はすべてのファイルを無視します。

それでもわからない場合は、 article git ignore file リンクを読んでください。

76
Kshitiz

「git help ignore」から次のことを学びます。

パターンがスラッシュで終わる場合、以下の説明のために削除されますが、ディレクトリとの一致のみが検出されます。言い換えると、foo /はディレクトリfooとその下のパスに一致しますが、通常のファイルやシンボリックリンクfooには一致しません(これは、gitでのpathspecの一般的な動作方法と一致しています)。

したがって、必要なのは

public_html/stats /

14
kajaco

/public_html/stats/*です。

$ ~/myrepo> ls public_html/stats/
bar baz foo
$ ~/myrepo> cat .gitignore 
public_html/stats/*
$ ~/myrepo> git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   .gitignore
nothing added to commit but untracked files present (use "git add" to track)
$ ~/myrepo>
5
August Lilleaas

私は信じられないほど怠け者です。私はこの問題へのショートカットを見つけることを期待して検索を行いましたが、答えが得られなかったので、これをノックしました。

〜/ bin/IGNORE_ALL

#!/bin/bash
# Usage: IGNORE_ALL <commit message>                                                                                                                             
git status --porcelain | grep '^??' | cut -f2 -d' ' >> .gitignore              
git commit -m "$*" .gitignore 

EG:IGNORE_ALLは統計無視を追加しました

これにより、すべての無視ファイルが.gitignoreに追加され、コミットされます。後でファイルに注釈を追加したい場合があることに注意してください。

1
michael