Gitignore'a yeni oluşturulmuş belirli bir klasör ekleyin


90

Temiz bir çalışma dizinim vardı ve dün gece bir Git deposundan bir klon getirdim. Ama şimdi yerel sunucum, göz ardı etmek istediğim bir istatistik klasörü oluşturdu ve içeriyor.

Git durumunu çalıştırdığımda Git'in bu klasörü yok saymasını sağlayamıyorum.

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 dosyama birkaç farklı satır ekledim ama yine de eklemeye çalışıyor:

public_html/stats
public_html/stats/**
public_html/stats/**/*
public_html/stats/*

Yanıtlar:


99

Deneyin /public_html/stats/*mi?

Ancak dosyalarda teslim edileceğigit status bildirildiğinden, bu onları zaten manuel olarak eklemiş olduğunuz anlamına gelir. Bu durumda, elbette, görmezden gelmek için çok geç. Onları yapabilirsiniz (IIRC).git rm --cache


16
Bekle! " git addİşlenecek dosyalarınız" var - bu, onları zaten oluşturdunuz anlamına gelir .
Michael Krelin - hacker

94

Bunun için iki durum var

Durum 1: Dosya zaten git deposuna eklenmiş.

Durum 2: Yeni oluşturulan dosya ve kullanım sırasında durumu izlenmeyen dosya olarak gösterilmeye devam ediyor

git status

1. vakanız varsa:

ADIM 1: Ardından çalıştırın

git rm --cached filename 

git repo önbelleğinden kaldırmak için

eğer bu bir dizin ise o zaman kullan

git rm -r --cached  directory_name

2. ADIM: Eğer Durum 1 olduğu zamanla bunu adında yeni bir dosya oluşturmak .gitignoreiçin git repo içinde

ADIM 3: git'e dosyanın değişmediğini göz ardı etmesini / varsaymasını söylemek için aşağıdakileri kullanın

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

ADIM 4: Şimdi, .gitignorenano, vim, geany vb. Editörünüzde açık durumunuzu kullanarak durumu kontrol edin ... herhangi biri, yok sayılacak dosyanın / klasörün yolunu ekleyin. Bu bir klasörse, kullanıcı folder_name/*tüm dosyayı yoksayar.

Hala anlamadıysanız, git yoksay dosya bağlantısını okuyun.


3
Ne fatal: Unable to mark file .idea/jsLibraryMappings.xmlzaman yapsam update-index
anlarım

@OlehZiniak, biri fatal: Unable to mark filehata aldığında ne yapılması gerektiğini anladın mı ? Lütfen yardım et.
chanchal pardeshi

işaretleyemediğiniz dosyanın izni ve sahipliği. hangi adımda hata gösterir?
Kshitiz

16

"Git help ignore" dan öğreniyoruz:

Desen eğik çizgiyle biterse, aşağıdaki açıklama amacıyla kaldırılır, ancak yalnızca bir dizinle bir eşleşme bulur. Diğer bir deyişle, foo / bir foo diziniyle ve altındaki yollarla eşleşir, ancak normal bir dosya veya sembolik bir bağlantı foo ile eşleşmez (bu, genel olarak git'te yol belirtiminin çalışma şekliyle tutarlıdır).

Bu nedenle ihtiyacınız olan şey

public_html / stats /


1
Bu sadece "public_html / stats /" dizininin yalnızca bir dizinle eşleşeceği, ancak bir dosyayla eşleşmeyeceği anlamına gelir, ancak "public_html / stats" hem dizini hem de bu isimdeki bir dosyayı eşleştirir, dolayısıyla sorun bu değildir. Yine de iyi bir fikir.
jmanning2k

1
Man sayfası foo / 'un bir foo dizini ve onun altındaki yollarla eşleşeceğini söylüyor. OP, klasörü ve içeriğini görmezden gelmek istiyor. Git add ile ilgili diğer sorunların yanı sıra, bu şekilde yapılır.
kajaco

6

Bu /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>

2

İnanılmaz derecede tembelim. Bu soruna bir kısayol bulma umuduyla bir arama yaptım, ancak bir cevap alamadım, bu yüzden bunu kapattım.

~ / 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 istatistik yok saydı

Bu, tüm yok sayma dosyalarını .gitignore ve commit dosyanıza ekleyecektir. daha sonra dosyaya ek açıklamalar eklemek isteyebileceğinizi unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.