Git ile dosya değişikliklerini yoksay

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Git, projenizdeki her dosyayı izlememelidir. Geliştirme ortamınızdaki geçici dosyalar, test çıkışları ve günlükler, izlenmesi gerekmeyen dosyalara örnek olarak verilebilir.

Git'e projenizdeki hangi dosyaların izlenmeyeceğini bildirmek ve Git'in bu dosyalarda değişiklik bildirmemesini sağlamak için çeşitli mekanizmalar kullanabilirsiniz. Git'in izlemediği dosyalar için bir .gitignore veya exclude dosyası kullanabilirsiniz. Git'in izlediği dosyalar için Git'e bunları izlemeyi durdurmasını ve değişiklikleri yoksaymasını söyleyebilirsiniz.

Bu makalede şunları öğreneceksiniz:

  • dosya kullanarak izlenmeyen dosyalardaki değişiklikleri yoksayın .gitignore .
  • dosya kullanarak izlenmeyen dosyalarda yapılan değişiklikleri yoksayın exclude .
  • Komutunu kullanarak bir dosyayı izlemeyi durdurun ve değişiklikleri yoksayın git update-index .
  • Komutunu kullanarak bir dosyayı izlemeyi durdurun ve değişiklikleri yoksayın git rm .

.gitignore dosyası kullanma

Bir .gitignore dosyası ekleyerek ve yapılandırarak Git'e projenizdeki belirli dosyaları izlememelerini söyleyebilirsiniz. Dosyadaki .gitignore girdiler yalnızca izlenmeyen dosyalara uygulanır. Git'in izlenen dosyalara yapılan değişiklikleri raporlamasını engellemez. İzlenen dosyalar, kaydedilmiş ve son Git anlık görüntüsünde var olan dosyalardır.

Bir .gitignore dosyadaki her satır, dosya yoluna göre bir dosya arama deseni .gitignore belirtir. .gitignore söz dizimi esnektir ve ada, uzantıya ve yola göre tek veya birden çok dosya belirtmek için joker karakter kullanımını destekler. Git, hangi dosyaların yoksayileceğini belirlemek için arama desenlerini projenizdeki dosyalarla eşleştirir .gitignore .

Genellikle projenizin kök klasörüne bir .gitignore dosya eklersiniz. Ancak, git'e herhangi bir iç içe derinlikte bu klasör ve alt klasörleri içinde hangi dosyaların yoksayıldığını bildirmek için herhangi bir proje klasörüne dosya .gitignore ekleyebilirsiniz. Birden çok .gitignore dosya için, bir .gitignore klasörün içinde bir dosyanın belirttiği dosya arama desenleri, bir dosyanın üst klasör içinde belirttiği desenlerden .gitignore önceliklidir.

El ile bir .gitignore dosya oluşturabilir ve dosya düzeni girdileri ekleyebilirsiniz. İsterseniz GitHub gitignore deposundan geliştirme ortamınız için bir .gitignore şablon indirerek zaman kazanabilirsiniz. Dosya kullanmanın .gitignore avantajlarından biri, değişiklikleri işleyip başkalarıyla paylaşabilmenizdir.

Not

Git deposu oluşturduğunuzda Visual Studio, Visual Studio geliştirme ortamı için otomatik olarak bir dosya oluşturur.gitignore.

Visual Studio 2022, Çözüm Gezgini'daki Git menüsü, Git Değişiklikleri ve kısayol menüleri aracılığıyla bir Git sürüm denetimi deneyimi sağlar. Visual Studio 2019 sürüm 16.8, Takım Gezgini Git kullanıcı arabirimini de sunar. Daha fazla bilgi için Visual Studio 2019 - Takım Gezgini sekmesine bakın.

Git Değişiklikleri penceresinde, Git'in yoksaymasını istediğiniz değiştirilmiş herhangi bir dosyaya sağ tıklayın ve ardından Bu yerel öğeyi yoksay veya Bu uzantıyı yoksay'ı seçin. İzlenen dosyalar için bu menü seçenekleri yoktur.

Visual Studio'daki Git Değişiklikleri penceresinde değiştirilen dosyalar için bağlam menüsü seçeneklerinin ekran görüntüsü.

Bu yerel öğeyi yoksay seçeneği dosyaya .gitignore yeni bir girdi ekler ve seçili dosyayı değiştirilen dosyalar listesinden kaldırır.

Bu uzantıyı yoksay seçeneği dosyaya .gitignore yeni bir girdi ekler ve değiştirilen dosyalar listesinden seçili dosyayla aynı uzantıya sahip tüm dosyaları kaldırır.

Her iki seçenek de deponuzun kök klasöründe yoksa bir .gitignore dosya oluşturur ve buna bir girdi ekler.

Gitignore dosyasını düzenleme

Dosyadaki .gitignore her girdi şunlardır: hangi dosyaların yoksayıldığını belirten bir dosya arama deseni, sayı işareti (# ile başlayan bir açıklama) veya boş bir satır (okunabilirlik için). Söz .gitignore dizimi esnektir ve ada, uzantıya ve yola göre tek veya birden çok dosya belirtmek için joker karakter kullanımını destekler. Dosya arama desenlerinin tüm yolları dosyaya .gitignore göredir.

Yaygın dosya arama desenlerine bazı örnekler aşağıda verilmiştir:

# Ignore all files with the specified name.
# Scope is all repo folders.
config.json

# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json

# Add an exception to prevent ignoring a file with the specified name.
# Scope is all repo folders.
!package.json

# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile

# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile

# Ignore all files in the 'logs' subfolder.
/logs/

Bir .gitignore dosyayı değiştirdiğiniz anda Git, yoksayılan dosyaların listesini güncelleştirir.

Not

Windows kullanıcıları, bir dosyada .gitignore ters eğik çizgi (/ ) kullanmak yerine yol ayırıcısı olarak eğik çizgi (\) kullanmalıdır. Bir klasör belirtirken tüm kullanıcıların sondaki eğik çizgiyi eklemesi gerekir.

Genel bir .gitignore dosyası kullanma

Bir .gitignore dosyayı, tüm yerel Git depolarına uygulanan genel yoksay dosyası olarak belirleyebilirsiniz. Bunu yapmak için komutunu aşağıdaki gibi kullanın git config :

git config core.excludesfile <gitignore file path>

Genel .gitignore dosya, Git'in derlenmiş ikili dosyalar gibi belirli dosya türlerini herhangi bir yerel depoda işlememesini sağlamaya yardımcı olur. Depoya özgü .gitignore bir dosyadaki dosya arama desenleri, genel .gitignore dosyadaki desenlere göre önceliklidir.

Dışlama dosyası kullanma

Yerel deponuzun klasöründeki .git/info/ dosyaya exclude dosya arama desenleri için girdiler de ekleyebilirsiniz. Dosya, Git'e exclude hangi izlenmeyen dosyaların yoksayılır olduğunu bildirir. Dosya arama desenleri için dosyayla .gitignore aynı söz dizimini kullanır.

Bir exclude dosyadaki girdiler yalnızca izlenmeyen dosyalara uygulanır. Git'in değişiklikleri zaten izlediği kaydedilmiş dosyalarda raporlamasını engellemez. Depo başına yalnızca bir exclude dosya var.

Git dosyayı işlemediğinden veya göndermediğinden exclude , başka birini etkilemeden yerel sisteminizdeki dosyaları yoksaymak için güvenli bir şekilde kullanabilirsiniz.

Değişiklikleri yoksaymak için git update-index kullanma

Bazen yerel bir depo dosyasını izlemeyi geçici olarak durdurmak ve Git'in dosyadaki değişiklikleri yoksaymasını sağlamak kullanışlı olabilir. Örneğin, değişikliklerinizi işleme riski olmadan geliştirme ortamınız için bir ayarlar dosyasını özelleştirmek isteyebilirsiniz. Bunu yapmak için komutunu şu bayrakla skip-worktree çalıştırabilirsinizgit update-index:

git update-index --skip-worktree <file path>

İzlemeye devam etmek için bayrağıyla git update-index--no-skip-worktree komutunu çalıştırın.

Alternatif olarak, bir dosyayı izlemeyi geçici olarak durdurabilir ve Git'in bayrağıyla komutunu kullanarak dosyadaki git update-index değişiklikleri yoksaymasını assume-unchanged sağlayabilirsiniz. Dosya içeriğini değiştiren bir Git pull işlemi bayrağı geri döndürebileceğinden, bu seçenek bayraktan assume-unchanged daha skip-worktree az etkilidir.

git update-index --assume-unchanged <file path>

İzlemeye devam etmek için bayrağıyla git update-index--no-assume-unchanged komutunu çalıştırın.

Değişiklikleri yoksaymak için git rm kullanma

Bir .gitignore veya exclude dosyasındaki girdilerin Git'in zaten izlediği dosyalar üzerinde hiçbir etkisi yoktur. Git, daha önce işlediğiniz dosyaları izler. Git'in artık onu izlememesi için, ancak dosya sisteminden silmeden bir dosyayı Git anlık görüntüsünden kalıcı olarak kaldırmak için aşağıdaki komutları çalıştırın:

git rm --cached <file path>
git commit <some message>

Ardından, Git'in dosyada değişiklikleri raporlamasını önlemek için bir .gitignore veya exclude dosya girdisi kullanın.

Sonraki adımlar