it-swarm-tr.com

Windows'ta Git depolarındaki dizinleri yoksayma

Windows'ta msysgit kullanarak Git'teki dizinleri veya klasörleri nasıl görmezden gelebilirim?

913
sf.

Projenizin dizininde .gitignore adlı bir dosya oluşturun. Dizin adını dosyaya girerek dizinleri yok sayın (bir eğik çizgi eklenmiş olarak):

dir_to_ignore/

Daha fazla bilgi burada .

1356
stew

Varsayılan olarak Windows Explorer, aslında dosya adı .gitignore olduğunda .gitignore.txt gösterecektir.

Git .gitignore.txt kullanmayacak

Ayrıca, dosyayı .gitignore olarak yeniden adlandıramazsınız, çünkü Explorer, dosya adı gitignore olmayan bir dosya olduğunu düşünüyor.

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

Bir dosyayı yeniden adlandırabilirsiniz. ".Gitignore."  ve yaratacak ".Gitignore"
187
brainwavedave

Dosya ve dizinleri yoksaymak için iki ana yol var gibi gözüküyor:

  1. .gitignore

    • .gitignore dosyasını, .git klasörünün yanı sıra repo'nuzun kök dizinine yerleştirme (Windows'ta yaptığınızdan emin olun gerçek dosya uzantısına bakın ve sonra .gitignore. yapın (sonunda boş dosya uzantısı yapmak için)
    • Git konfigürasyonunuza bunu eklemek için global konfigürasyon yapmak ~/.gitignore_global ve git config --global core.excludesfile ~/.gitignore_global çalıştırmak

    not: Daha önce izlenen dosyalar git rm --cached filename çalıştırılarak izlenebilir

  2. Repo exclude - Paylaşılması gerekmeyen yerel dosyalar için, sadece dosya deseni veya dizini .git/info/exclude dosyasına ekleyin. Tez kuralları geçerli değildir, bu yüzden diğer kullanıcılar tarafından görülmez daha fazla bilgi burada

[güncellendi] Yok sayılan dosyalar listesinde istisnalar yapmak için, bkz. bu soru .

91
Vairis

Windows Explorer’da bir dosya oluştururken bazı sorunlar yaşadım. başlangıçta.

bir çözüm, komut satırına girmek ve "düzenle" yi kullanarak yeni bir dosya oluşturmaktı.

43
sf.

gIT'in belirli dosya veya klasörleri yoksaymasını istemek için .gitignore dosyası oluşturmanız gerekir.

ancak Windows Gezgini'nde dosya için bir ad girmeniz gerekir, sadece uzantı ile dosya oluşturamazsınız, hile boş bir metin dosyası oluşturur ve Komut İstemine gidin ve dosyanın adını .gitignore olarak değiştirin

ren "New Text Document.txt" .gitignore

şimdi dosyayı favori metin editörünüzle açın ve yok sayılmasını istediğiniz dosya/klasör adlarını ekleyin. joker karakterlerini de kullanabilirsiniz. *.txt

umarım soruya cevap verir

41
Mahes

Bir klasörü korumak, içindeki dosyaları değil, içeriği "*" olan klasöre bir ".gitignore" dosyası koymak. Bu dosya havuzdaki tüm içeriği yok sayar. Ancak .gitignore, reponuza dahil edilecektir.

$ git add path/to/folder/.gitignore

Boş klasör eklerseniz, bu mesajı alırsınız (.gitignore gizli 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
sensorario

Windows'ta eğik çizgileri olan ekstra bir yakalama var. .gitignore ile içindeki tek bir dizin hariç

dir_to_exclude /

muhtemelen çalışacak ancak tüm dizinleri hariç tutacak

/

dizininizde boşluklu dosya isimleri varsa (my file.txt gibi) sorun yaratır: Git bash bu boşlukları ters eğik çizgiyle (my\ file.txt gibi) çıkar ve Git for Windows / ile \ arasında ayrım yapmaz.

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

** /

Ardışık iki yıldız, dizin içeriğini gösterir.

14
wortwart

Ayrıca \.git\info projeleri dizininizde, .gitignore ile aynı şey olan bir dışlama dosyası vardır (bence). Bunda görmezden gelmek için dosya ve dizin ekleyebilirsiniz.

14
Si3

Git içindeki bir dizinin tamamını yoksaymak 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 girdiği yer

Yoksayılmış Dizin .gitignore (/root/dirB.gitignore)

  • Bu dosya sadece '*' yazıyor ve dizinin kendisi ve tüm dosyaları tamamen yok sayılıyor!

ve bu kadar basit :)

9
J-Dizzle

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

*
!.gitignore

Bu benim için çalışıyor ve basit.

7

Windows'ta .gitignore dosyasını almak için gitmekte bazı sorunlar yaşadım. $ GIT_DIR/info/exclude dosyası her zaman olsa da çalışıyor gibi görünüyor. Bununla birlikte, bu yaklaşımın dezavantajı $ GIT_DIR dizinindeki dosyaların girişe dahil edilmemesi ve bu nedenle paylaşılmamasıdır.

(p.s. $ GIT_DIR genellikle .git isimli gizli klasördür)

7
Jason

her şey başarısız olduğunda dosyayı düzenlemeyi deneyin

/.git/info/exclude

ve istediğiniz dizini dosyanın sonuna ekleyerek şöyle yapın:

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

"Aktif" ve "Derlenmiş" klasörlerini yoksayılacak dosyalar ve dizinler listesine ekledim.

6
Xedret

Alt klasörleri hariç tutmanız gerektiğinde, herhangi bir alt dizin düzeyini hariç tutmak için ** joker karakterini kullanabilirsiniz.

**/build/output/Debug/
6
Eat at Joes

Sanırım sorun şu ki, çalışma ağacınız şu şekildedir:

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

... tanımladığınız .gitignore ile. Bu size aşağıdaki gibi git status çıktısını verecektir:

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

... if index.html dosyaları henüz depoya eklenmemiş. (git önbellek dizinlerinde imzasız dosyalar olduğunu görür, ancak yalnızca dizinleri bildirir.) Bunu düzeltmek için index.html dosyalarını eklediğinizden ve kabul ettiğinizden emin olun:

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

... ve git status'nuz şöyle görünür:

$ 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)

(Belli ki .gitignore da iş yapmak istiyorsun, sadece bu test durumuyla tembel oluyordum.)

5
Mark Longair

Unix'te:

touch .gitignore

Windows'ta:

echo > .gitignore

Bir terminalde yürütülen bu komutlar geçerli konumda bir .gitignore dosyası oluşturacaktır.

Ardından, bu .gitignore dosyasına bilgi ekleyin (örneğin Notepad ++ kullanarak) hangi dosya veya klasörlerin yoksayılması gerekir. Değişikliklerinizi kaydedin. Bu kadar :)

Daha fazla bilgi: https://www.atlassian.com/git/tutorials/saving-changes/gitignore

4
fvolodimir

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

yankı Flower_Data_Folder >> .gitignore

Onun data.txt adlı bir dosyaysa

echo data.txt >> .gitignore

"Data/passwords.txt" gibi bir yol ise

echo "Veri/parola.txt" >> .gitignore.

3
Olusola Omosola

Benzer sorunlarım vardı, windows takım zincirinde çalışıyorum, linux adamlarla paylaşılan bir repo, mutlu bir şekilde, aynı klasörde aynı [vaka hariç] isimlerle dosyalar oluşturuyorlardı.

Bunun etkisi, repoyu klonlayabilmem ve hemen teslim aldığımda büyük zararlar yaratabilecek düzinelerce "değiştirilmiş" dosyaya sahip olmamdır.

Büyük/küçük harfe duyarlı ve gitmeyi görmezden gelmeyecek şekilde ayarlanmış pencereler var ancak yine de başarısız oluyor (win32 api'de görünüyor ki).

Dosyaları gitseniz de .gitignore dosyasını izlememeyi hatırlamam gerekir.

Fakat burada iyi bir cevap buldum http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html

Chris

1
Chris Aaaaa