Windows'ta Git depolarındaki dizinleri yoksayma


1105

Windows'ta msysgit kullanarak Git'teki dizinleri veya klasörleri nasıl yok sayabilirim?


Önbellek klasörünün depodan tamamen mi yoksa sadece içeriğinden mi çıkarılmasını istiyorsunuz?
Gareth

1
Ben OP, içeriği göz ardı edilmelidir, ancak bu dizinleri depo klonlayan herkes için oluşturulan emin olmak istiyor birden çok önbellek dizinleri olduğunu tahmin ediyorum.
Mark Longair

@Gareth: boş klasörler git ile izlenmediğinden, içerik yoksayılırsa klasör de olur, değil mi?
2012'de

3
Sadece bazı insanlar .gitkeepsaklanması gereken bir dizini belirtmek için gizli dosyaları (yaygın olarak ) kullandığından bahsettim
Gareth

2
ise /onun bir dizin o görmezden gerektiğini biliyorum kılan sonunda?
Charlie Parker

Yanıtlar:


1594

.gitignoreProjenizin dizininde bir dosya oluşturun . Dosyaya dizin adını girerek (eğik çizgi eklenmiş olarak) dizinleri yoksayın:

dir_to_ignore/

Daha fazla bilgi burada .


130
Windows cmd isteminde, doğru dosyayı oluşturmak için '.gitignore düzenle' veya 'notepad .gitignore' kullanabilirsiniz.
Joey Green

44
Ya da windows git bash komut isteminden 'touch .gitignore' kullanabilirsiniz ve doğru adlandırılmış dosyayı oluşturacak ve daha sonra not defteri veya benzeri ile düzenlenebilir ...
SGB

39
Veya sadece .gitignore adlı bir dosya oluşturun. explorer ile not defteri ile düzenleyin (sondaki nokta kaldırılacaktır). Bu şekilde komut istemini kullanmak zorunda kalmazsınız.
P. Galbraith

6
Veya terminalden .gitignore vim olabilir. :)
MollyCat

34
Ya da, en hızlı yol olmasına rağmen şaşırtıcı bir şekilde bahsedilmemiş olan, sadece konsolda "echo folder_to_ignore >> .gitignore" yazın.
Godsmith

205

Varsayılan olarak, Windows Gezgini .gitignoreaslında dosya adı.gitignore.txt .

Git kullanmayacak .gitignore.txt

Ve dosyayı şu şekilde yeniden adlandıramazsınız: .gitignore , çünkü Windows Gezgini onun adı olmayan gitignore türünde bir dosya olduğunu düşünür.

Komut satırı olmayan çözüm:

Bir dosyayı ".gitignore" olarak yeniden adlandırabilirsiniz . ve ".gitignore" oluşturur

46
Bu çalışır? Her zaman insanlara sadece not defteri açmasını söyledim ve Farklı Kaydet iletişim kutusunda çift tırnaklarla çevrelenen dosya adını yazın, örneğin ".gitignore"ve otomatik olarak bir uzantı eklemeden kaydeder.
Arrowmaster

9
Temiz. Sondaki nokta da dahil olmak üzere çalışır. Explorer, ".gitignore" adlı bir dosyayla sonuçlanan son dönemi çıkarır. Tırnak yönteminin daha temiz olduğunu ve sürpriz yaratma olasılığının düşük olduğunu düşünüyorum.
Triynko

4
Veya Farklı Kaydet iletişim kutusunda dosya türünü "Tüm Dosyalar ( . )" Olarak değiştirin - Windows hiçbir uzantı eklemeyecektir.
OsakaWebbie

5
veya git bash klasörünüze sadece "touch .gitignore" yazın
Rayjax

3
".gitignore."- Bu harika bir numara! Ben de her zaman sorun .htaccess
yaşadım

105

Dosya ve dizinleri görmezden gelmenin iki ana yolu olduğu görülmektedir:

  1. .gitignore

    • .gitignoreDosyayı .gitklasörün yanı sıra deponuzun köküne yerleştirme (Windows'ta, gerçek dosya uzantısını gördüğünüzden emin olun ve ardından .gitignore.(boş bir dosya uzantısı yapmak için sondaki nokta ile))
    • Global yapılandırmayı yapma ve bunu Git yapılandırmanıza eklemek için ~/.gitignore_globalçalışıyorgit config --global core.excludesfile ~/.gitignore_global

    Not: daha önce izlenen dosyalar çalıştırılarak izlenemez git rm --cached filename

  2. Depo hariç tutma - Paylaşılması gerekmeyen yerel dosyalar için dosya desenini veya dizini dosyaya eklemeniz yeterlidir .git/info/exclude. Bu kurallar uygulanmaz, bu nedenle diğer kullanıcılar tarafından görülmez . Daha fazla bilgi burada .

Yok sayılan dosyalar listesinde istisna yapmak için bu soruya bakın .


36
iyi iş işaret git rm --cached <filename>. Oluşturduğunuz ÖNCE var olduğunu repo Kesinlikle kritik.gitignore
MaurerPower

2
git rm --cached <filename> .gitignore ile yaşadığım sorunu çözdü :)
JeremyFelix

1
Evet git rm - önbellek dosya adı kesinlikle çok önemlidir. Git hala göz ardı edildiğini belirttiğim dosyaları hazırlarken beni deli ediyordu (ilk işlemden sonra gitignore oluşturuldu). Çok teşekkür ederim!
Potaito

1
Sorunumu çözdüm. Gitignore'da satıcı klasörü eklememe rağmen Git laravel deposumdaki satıcı klasörünü izliyordu. Çok teşekkürler.
Jayant

44

Ben bir dosyayı oluştururken bazı sorunlar vardı Windows Gezgini bir ile .başında.

Geçici çözüm, komut kabuğuna girmek ve "düzenle" yi kullanarak yeni bir dosya oluşturmaktı.


2
ya da sadece bir ekstra ekleyin .böylece explorer .gitignoreuzantısı olduğunu düşünmeyi bırakır . Sonra hiçbir uzantısı ile sondaki nokta sadece yenir ve .gitignore TL kalır; DR: ismini deneyin .gitignore.=> ile bitirmek.gitignore
leerssej

43

Git'e belirli dosya veya klasörleri yoksayması talimatını vermek için .gitignoredosya oluşturmanız gerekir .

Ancak Windows Gezgini'nde dosya için bir ad sağlamanız gerekir. Sadece bir uzantı ile dosya oluşturamazsınız. Hile, boş bir metin dosyası oluşturmak ve komut istemine gitmek ve dosyanın adını şu şekilde değiştirmek .gitignore:

ren "New Text Document.txt" .gitignore

Şimdi dosyayı favori metin düzenleyicinizle açın ve yoksaymak istediğiniz dosya / klasör adlarını ekleyin. Ayrıca böyle Joker karakterler kullanabilirsiniz: *.txt.


15
Veya sadece: echo dir_to_ignore /> .gitignore
Oliver

2
Veya type nul > .gitignoreboş bir dosya oluşturmak için
Castro Roy

Veya .gitignore.dosya uzantıları Windows explorer'ınızda gizli olmadığında dosyayı arayın
Vairis

22

İçindeki dosyaları değil, bir klasörü korumak istiyorsanız, içerik olarak "*" bulunan bir ".gitignore" dosyası koymanız yeterlidir. Bu dosya Git'in depodaki tüm içeriği yoksaymasını sağlar. Ancak .gitignoredeponuza dahil edilecektir.

$ git add path/to/folder/.gitignore

Boş bir klasör eklerseniz, bu iletiyi alırsınız (.gitignore gizli bir dosyadır)

The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added

Bu nedenle, eklemek için "-f" kullanın:

$ git add path/to/folder/.gitignore -f

19

Windows'da eğik çizgilerle ekstra bir yakalama var. Tek bir dizin hariç .gitignore ile

dir_to_exclude /

büyük olasılıkla çalışır, ancak tüm dizinleri

/

my file.txtdizininizde boşluk (gibi ) olan dosya adlarınız olduğunda sorunlara neden olur : Git Bash bu boşluklardan ters eğik çizgi (gibi my\ file.txt) ile kaçar ve Windows için Git ile /ve arasında ayrım yapmaz \.

Tüm dizinleri hariç tutmak için daha iyi kullanın:

** /

İki ardışık yıldız, dizin içeriğini belirtir.


15

Ayrıca \.git\infoprojeler dizininizde .gitignore(bence) etkin bir şekilde aynı olan bir dışlama dosyası vardır . Yoksaymak için dosya ve dizin ekleyebilirsiniz.


Bu yaklaşımı seviyorum, oradaki yolla iyi geçinemiyorum, ana depodaki bir klasörü görmezden gelmek istiyorum, nasıl?
Shimmy Weitzhandler

Ancak dosyaları .git dosyasında yalnız bırakmanız gerekmez mi (içeriği resmi yollarla manipüle edin)?
Peter Mortensen

13

Alt klasörleri dışarıda bırakmanız gerektiğinde, **herhangi bir alt dizin düzeyini hariç tutmak için joker karakteri kullanabilirsiniz .

**/build/output/Debug/

12

Git'teki bir dizinin tamamını yok saymak için en kolay yol, hedef dizinin içine "*" içeren bir .gitignore dosyası eklemektir.

Açıklayıcı bir örnek,

Örnek Sistem

/root/
    .gitignore
    /dirA/
        someFile1.txt
        someFile2.txt
    /dirB/
        .gitignore
        someFile3.txt
        someFile4.txt

Hedef

  • / dirB / içeriğini yoksay

Üst Düzey .gitignore (/root/.gitignore)

  • Burası standart gitignore bilgilerinizin gittiği yerdir

Yok Sayılan Dizin .gitignore (/root/dirB.gitignore)

  • Bu dosya sadece '*' olarak okunur ve dizin tamamen yok sayılır, kendisi ve tüm dosyalar!

Ve bu kadar basit :)


10

Ne zaman her şey başarısız dosyayı düzenlemeyi deneyin

/.git/info/exclude

ve dosyanın sonuna istediğiniz dizinleri ekleyin, örneğin:

# 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]
# *~
assets/
compiled/

Göz ardı edilecek dosyalar ve dizinler listesine "varlıklar" ve "derlenmiş" klasörlerini ekledim.


1
Windows 10'da Atom kullanıyorum. Çalışıyor! Tesekkurler dostum!
Putu De

Mevcut yapılandırmayla diğerlerini denedim ve bu benim kesin kesin cevabımdı.
Xedret

9

Unix'te:

touch .gitignore

Windows'ta:

echo > .gitignore

Bir terminalde yürütülen bu komutlar .gitignoregeçerli konumda bir dosya oluşturur .

Sonra buna bilgi ekleyin .gitignore dosyaya (örneğin Notepad ++ kullanarak) hangi dosya veya klasörlerin yoksayılması gerektiği hakkında . Değişikliklerinizi kaydedin. Bu kadar :)

Daha fazla bilgi: .gitignore


9

İçeriği içeren ".gitignore" dosyasını oluşturabilirsiniz:

*
!.gitignore

Benim için çalışıyor.


2
Bu en iyi yanıttır, aynı zamanda proje dağıtımı ve bakımında ek faydalar sağlar.
Nitin ...

"Basit" kimdir ?
Peter Mortensen

8

Git'i .gitignoredosyayı Windows'ta almaya çalışırken bazı sorunlar yaşadım . $GIT_DIR/info/excludeDosya daima olsa çalışıyor gibi görünüyor.

Bununla birlikte, bu yaklaşımın dezavantajı, $GIT_DIRdizindeki dosyaların check-in'e dahil edilmemesi ve bu nedenle paylaşılmamasıdır.

ps $GIT_DIRgenellikle adlı gizli klasördür.git


Evet, Windows üzerinde git .gitignore hakkında gerçekten titiz - yerel hariç dosya olsa gerek ne yapar. Teşekkürler!
andersop

6

Sorun, çalışma ağacınızın şöyle olduğunu varsayıyorum:

a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore

... .gitignoretarif ettiğin gibi. Bu size aşağıdaki git statusgibi çıktılar verecektir :

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
#    a-cache/
#    b-cache/

... eğerindex.html dosyaları henüz depoya ilave edilmemiştir. (Git, önbellek dizinlerinde imzalanmamış dosyalar olduğunu görür, ancak yalnızca dizinleri bildirir.) Bunu düzeltmek için index.htmldosyaları eklediğinizden ve işlediğinizden emin olun :

git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"

... ve git statuso zaman senin gibi görüneceksin:

$ git status
# On branch master
# 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)

(Açıkçası sen de taahhüt etmek istiyorsun .gitignore. Bu test vakasında tembel oluyordum.)


1
Muhtemelen do .gitignore özellikle buna değişiklikleri izlemek isteme olasılığınız yüksektir olarak işlemek istiyorum ve (eğer biriyle çalışıyorsanız) böylece takım. Bkz. Stackoverflow.com/a/767213/123033
Dave Everitt

2
@Dave Everitt: Bu yüzden "Tabii ki .gitignore yapmak istiyorsun" dedim.
Mark Longair

6

Windows ve Mac'te, geçerli dizinde Flower_Data_Folder adlı bir klasörü yoksaymak istiyorsanız şunları yapabilirsiniz:

echo Flower_Data_Folder >> .gitignore

Bu bir dosya ise data.txt:

echo data.txt >> .gitignore

"Data / passwords.txt" gibi bir yolsa

echo "Data/passwords.txt" >> .gitignore. 

2

Benzer sorunlar yaşadım. Linux adamlarıyla paylaşılan bir depoya sahip bir Windows araç zinciri üzerinde çalışıyorum ve mutlu bir şekilde belirli bir klasördeki aynı (durum hariç) adlara sahip dosyalar oluşturuyorlar.

Etkisi, depoyu klonlayabilmem ve hemen teslim edersem tahribat yaratacak düzinelerce 'değiştirilmiş' dosyaya sahip olmamdır.

Windows büyük / küçük harfe duyarlı ve Git yoksaymak için ayarlanmış, ancak yine de başarısız (görünüşte Win32 API çağrıları).

Dosyaları gitignore Eğer .gitignore dosyasını izlemek değil hatırlamak zorunda.

Ama burada iyi bir cevap buldum:

http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html


Bağlantı kopmuş gibi görünüyor (önce 'https' sürümüne yönlendiriyor): "Güvenli Bağlantı Başarısız. Archive.robwilkerson.org bağlantısı sırasında bir hata oluştu. PR_END_OF_FILE_ERROR"
Peter Mortensen

0

Sadece .gitignoreproje klasörünüzde dosya oluşturun Daha sonra ex için klasörün adını ekleyin:

frontend/node_modules
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.