Git'in izlenen ancak ┼ču an .gitignore'da olan bir dosyay─▒ ÔÇťunutmas─▒n─▒ÔÇŁ nas─▒l sa─člar?


Al─▒nan cevaba git


─░zlenmekte olan bir dosya var git , ancak ┼čimdi dosya .gitignore listede.

Ancak, bu dosya git status d├╝zenlendikten sonra g├Âr├╝nmeye devam eder . Bunu git tamamen unutmaya nas─▒l zorlars─▒n ?


4773





2009-08-13




Cevap say─▒s─▒n─▒ say: 24






.gitignore izlenmeyen dosyalar─▒n add -f git (ve olmadan ) git taraf─▒ndan izlenen dosya grubuna eklenmesini ├Ânler , ancak git izlenen t├╝m dosyalar─▒ izlemeye devam eder.

Bir dosyay─▒ izlemeyi durdurmak i├žin dizinden ├ž─▒karman─▒z gerekir. Bu, bu komutla ger├žekle┼čtirilebilir.

 git rm --cached <file>
 

T├╝m bir klas├Âr├╝ kald─▒rmak istiyorsan─▒z, i├žindeki t├╝m dosyalar─▒ tekrar tekrar kald─▒rman─▒z gerekir.

 git rm -r --cached <folder>
 

Dosyan─▒n ba┼č revizyonundan kald─▒r─▒lmas─▒ bir sonraki i┼člemde ger├žekle┼čecek.

UYARI: Bu fiziksel dosyay─▒ yerelinizden kald─▒rmayacak olsa da, bir sonraki dosyadaki dosyalar─▒ di─čer geli┼čtiricilerden kald─▒racakt─▒r git pull .


5032







A┼ča─č─▒daki komut dizisi t├╝m ├Â─čeleri Git Dizini'nden (├žal─▒┼čma dizininden veya yerel repo'dan de─čil) kald─▒r─▒r ve Git yok sayg─▒s─▒na sayg─▒ duyarken Git Dizini'ni g├╝nceller. PS. Dizin = ├ľnbellek

─░lk:

 git rm -r --cached . 
git add .
 

Sonra:

 git commit -am "Remove ignored files"
 

2450







git update-index i┼čimi benim i├žin yap─▒yor:

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

Not: Bu ├ž├Âz├╝m asl─▒nda .gitignore gitignore'un yaln─▒zca izlenmeyen dosyalar i├žin ge├žerli oldu─čundan ba─č─▒ms─▒zd─▒r .

d├╝zenleme: Bu cevap g├Ânderildi beri, yeni bir se├ženek olu┼čturuldu ve bu tercih edilmelidir. Sen kullanmal─▒d─▒r --skip-worktree kullan─▒c─▒ art─▒k i┼člemeye ve tutmak istemediklerini modifiye izlenen dosyalar i├žin olan --assume-unchanged b├╝y├╝k izlenen dosyalar─▒n durumunu kontrol i├žin git ├Ânlemek i├žin performans i├žin. Daha fazla ayr─▒nt─▒ i├žin https://stackoverflow.com/a/13631525/717372 adresine bak─▒n ...

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

997







 git ls-files --ignored --exclude-standard -z | xargs -0 git rm --cached
git commit -am "Remove ignored files"
 

Bu, yok say─▒lan dosyalar─▒n listesini al─▒r ve dizinden kald─▒r─▒r, sonra de─či┼čiklikleri kabul eder.


263







─░zlenmeyen dosyalar─▒ silmek i├žin her zaman bu komutu kullan─▒r─▒m. Tek sat─▒r, Unix tarz─▒, temiz ├ž─▒kt─▒:

 git ls-files --ignored --exclude-standard | sed 's/.*/"&"/' | xargs git rm -r --cached
 

T├╝m yok say─▒lan dosyalar─▒n─▒z─▒ listeler, i├žindeki bo┼čluklar─▒ olan yollar─▒ i┼člemek yerine her ├ž─▒k─▒┼č sat─▒r─▒n─▒ belirtilen bir sat─▒rla de─či┼čtirin git rm -r --cached ve yollar─▒ / dosyalar─▒ / dizinleri dizinden kald─▒rmak i├žin her ┼čeyi iletin.


75







d─▒┼čar─▒ ta┼č─▒, i┼čver, sonra tekrar i├žeri gir. Bu ge├žmi┼čte benim i├žin ├žal─▒┼čt─▒. Bunu ba┼čarmak i├žin muhtemelen bir 'gitti' yolu vard─▒r.


61







E─čer yapam─▒yorsan─▒z git rm di─čer insanlar (bile uyar─▒ laz─▒m olabilir izlenen dosyan─▒n ├ž├╝nk├╝ senin git rm --cached ba┼čkas─▒ bu de─či┼čikli─či ald─▒─č─▒nda, kendi dosyalar─▒, dosya sisteminde silinecektir). Bunlar genellikle yap─▒land─▒rma dosyas─▒ ge├žersiz k─▒lmalar─▒, kimlik do─črulama bilgileri vb. Nedeniyle yap─▒l─▒r. L├╝tfen insanlar─▒n sorun ├ž├Âzme ┼čekilleri i├žin https://gist.github.com/1423106 adresine bak─▒n .

├ľzetlemek:

  • Uygulaman─▒z─▒n yoksay─▒lm─▒┼č bir config-overide.ini dosyas─▒n─▒ aramas─▒n─▒ ve bunun i├žin taahh├╝t edilen dosya config.ini'yi kullanmas─▒n─▒ isteyin (veya d├Ân├╝┼č├╝ml├╝ olarak ~ / .config / myapp.ini veya $ MYCONFIGFILE aray─▒n)
  • Config-sample.ini dosyas─▒n─▒ i┼čleyin ve config.ini dosyas─▒n─▒ yoksay─▒n, gerekirse bir komut dosyas─▒ veya benzer bir dosyay─▒ kopyalay─▒n.
  • Sizin i├žin de─či┼čiklikleri uygulamak ve kald─▒rmak i├žin gitattributes clean / luding magic kullanmaya ├žal─▒┼č─▒n, ├Ârne─čin, config dosyas─▒n─▒ alternatif bir ┼čubeden ├Âdeme olarak lekeleyin ve config dosyas─▒n─▒ HEAD'den ├Âdeme olarak temizleyin. Bu zor ┼čeyler, acemi kullan─▒c─▒ i├žin tavsiye etmiyorum.
  • Config dosyas─▒n─▒, asla master ile birle┼čtirilmi┼č olmayan bir da─č─▒t─▒m dal─▒nda tutun. Da─č─▒tmak / derlemek / test etmek istedi─činizde o ┼čubeyle birle┼čir ve bu dosyay─▒ al─▒rs─▒n─▒z. Bu, asl─▒nda insan birle┼čtirme politikalar─▒n─▒ ve ekstra git mod├╝llerini kullanmak d─▒┼č─▒nda, lekelenme / temizlik yakla┼č─▒m─▒d─▒r.
  • Rekombinasyon kar┼č─▒t─▒: De─či┼čmeyen varsay─▒m─▒ kullanmay─▒n, sadece g├Âzya┼člar─▒yla sona erer (├ž├╝nk├╝ kendi ba┼č─▒na gitmenizin yalan─▒, de─či┼čiklikleriniz sonsuza dek kaybolur gibi k├Ât├╝ ┼čeylerin olmas─▒na neden olur).

61







Bunu ┼ču durumlarda kullan─▒n:

1. Çok fazla dosyayı izlemek istiyorsunuz veya

2. gitignore dosyan─▒z─▒ g├╝ncellediniz

Kaynak ba─člant─▒: http://www.codeblocq.com/2016/01/Untrack-files-already-added-to-git-repository-based-on-gitignore/

Diyelim ki git deponuza baz─▒ dosyalar eklediniz / i┼člediniz ve sonra onlar─▒ .gitignore; bu dosyalar yine de depo endeksinizde bulunacakt─▒r. Bu makalede onlardan nas─▒l kurtulaca─č─▒m─▒z─▒ g├Ârece─čiz.

1. Ad─▒m: T├╝m de─či┼čikliklerinizi yap─▒n

Devam etmeden ├Ânce, .gitignore dosyan─▒z da dahil t├╝m de─či┼čikliklerin yap─▒ld─▒─č─▒ndan emin olun.

Ad─▒m 2: Depodaki her ┼čeyi kald─▒r─▒n

Deponuzu temizlemek i├žin ┼čunu kullan─▒n:

 git rm -r --cached .
 
  • rm remove komutudur
  • -r ├Âzyinelemeli ├ž─▒karmaya izin verecek
  • - ├Ânbelle─če al─▒nan dosyalar yaln─▒zca dizinden kald─▒r─▒r. Dosyalar─▒n─▒z hala orada olacak.

rm Komut affetmez olabilir. Daha ├Ânce ne yapt─▒─č─▒n─▒ denemek isterseniz, olaylar─▒ denemek i├žin -n veya --dry-run i┼čaretini ekleyin .

3. Ad─▒m: Her ┼čeyi yeniden ekleyin

 git add .
 

4. Ad─▒m: Tamamlay─▒n

 git commit -m ".gitignore fix"
 

Deponuz temiz :)

De─či┼čiklikleri orada da g├Ârmek i├žin de─či┼čiklikleri uzaktan kumandan─▒za itin.


55







Bunu git filtre dal─▒ kullanarak ba┼čard─▒m . Kulland─▒─č─▒m tam komut man sayfas─▒ndan al─▒nm─▒┼čt─▒r:

UYARI : bu, dosyay─▒ t├╝m ge├žmi┼činizden siler

 git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
 

Bu komut, git rm her i┼člemden ├Ânce y├╝r├╝t├╝len t├╝m i┼člem ge├žmi┼čini yeniden olu┼čturacak ve b├Âylece belirtilen dosyadan kurtulacakt─▒r. O kadar komutunu ├žal─▒┼čt─▒rmadan ├Ânce yedeklemek unutmay─▒n edecektir kaybolabilir.


46







Benim i├žin i┼če yaramad─▒

(Linux alt─▒nda), ls-files --ignored --exclude-standard | xargs git rm -r --cached yakla┼č─▒m─▒ ├Âneren buradaki yaz─▒lar─▒ kullanmak istedim . Ancak, (baz─▒lar─▒) ├ž─▒kar─▒lacak dosyalar─▒n \n adlar─▒nda g├Âm├╝l├╝ bir yeni sat─▒r / LF / vard─▒ . ├ç├Âz├╝mlerin hi├žbiri:

 git ls-files --ignored --exclude-standard | xargs -d"\n" git rm --cached
git ls-files --ignored --exclude-standard | sed 's/.*/"&"/' | xargs git rm -r --cached
 

Bu durumla ba┼ča ├ž─▒kmak (bulunamayan dosyalar hakk─▒nda hata almak).

Bu y├╝zden teklif

 git ls-files -z --ignored --exclude-standard | xargs -0 git rm -r --cached
 

Bu kullan─▒r -z i├žin arg├╝man ls dosyalar─▒ ve -0 kar┼č─▒ arg├╝man Xargs hitap Dosya adlar─▒nda g├╝venle / do─čru i├žin "pis" karakter.

Manuel -git-ls-files (1) k─▒lavuz sayfas─▒nda :

-Z se├žene─či kullan─▒lmad─▒─č─▒nda, yol adlar─▒ndaki TAB, LF ve ters e─čik ├žizgi karakterleri s─▒ras─▒yla \ t, \ n ve \\ olarak g├Âsterilir.

bu y├╝zden e─čer dosya isimlerinde bu karakterlerden herhangi birine sahipseniz ├ž├Âz├╝m├╝me ihtiya├ž var.

EDIT: Eklemem istendi - herhangi bir git rm komut gibi --- bunun ard─▒ndan kald─▒rmalar─▒ kal─▒c─▒ k─▒lma taahh├╝d├╝n├╝n ard─▒ndan git commit -am "Remove ignored files" .


45







  1. .gitignore Dosyan─▒z─▒ g├╝ncelleyin - ├Ârne─čin, izlemek istemedi─činiz bir klas├Âr ekleyin .gitignore .

  2. git rm -r --cached . - ─░stenen ve istenmeyen t├╝m izlenen dosyalar─▒ kald─▒r─▒n. Yerel olarak kaydetti─činiz s├╝rece kodunuz g├╝vende olacakt─▒r.

  3. git add . - ─░├žinde olanlar hari├ž t├╝m dosyalar geri eklenecektir .gitignore .


Bizi do─čru y├Âne do─čru i┼čaret etti─či i├žin @AkiraYamamoto'ya bah┼či┼č verin.


22







San─▒r─▒m, belki de git gebe oldu─ču i├žin dosyay─▒ tamamen unutamaz ( b├Âl├╝m "Anl─▒k G├Âr├╝nt├╝ler, Farkl─▒l─▒klar De─čil" ).

├ľrne─čin CVS kullan─▒rken bu problem yoktur. CVS, bilgileri dosya tabanl─▒ de─či┼čikliklerin bir listesi olarak saklar. CVS bilgisi, bir dosya k├╝mesi ve zaman i├žinde her bir dosyada yap─▒lan de─či┼čikliklerdir.

Ancak Git'te her i┼č yapt─▒─č─▒n─▒zda veya projenizin durumunu kaydetti─činizde, temelde t├╝m dosyalar─▒n─▒z─▒n o anda nas─▒l g├Âr├╝nd├╝─č├╝n├╝n bir resmi ├žekilir ve bu anl─▒k g├Âr├╝nt├╝ye bir referans depolar. Dolay─▒s─▒yla, bir kez dosya eklerseniz, her zaman o anl─▒k g├Âr├╝nt├╝de bulunur.

Bu 2 makale benim i├žin yard─▒mc─▒ oldu:

git assume-de─či┼čtirilmemi┼č vs skip-worktree ve Git ile izlenen dosyalarda yap─▒lan de─či┼čiklikler nas─▒l g├Ârmezden gelinir ?

Temel olarak, e─čer dosya zaten izleniyorsa, a┼ča─č─▒dakileri yapar─▒m:

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

Bu andan itibaren, bu dosyadaki t├╝m yerel de─či┼čiklikler g├Âz ard─▒ edilecek ve uzaklara gitmeyecek. Dosya uzaktan kumandada de─či┼čtirilirse, ├žat─▒┼čma ne zaman olur git pull . Stash i┼če yaramaz. ├ç├Âz├╝mlemek i├žin, dosya i├žeri─čini g├╝venli bir yere kopyalay─▒n ve a┼ča─č─▒daki ad─▒mlar─▒ izleyin:

 git update-index --no-skip-worktree <file>
git stash
git pull 
 

Dosya i├žeri─či uzak i├žerikle de─či┼čtirilecektir. De─či┼čikliklerinizi g├╝venli yerden dosyaya yap─▒┼čt─▒r─▒n ve tekrar uygulay─▒n:

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

E─čer proje ile ├žal─▒┼čan herkes performans g├Âsterecekse git update-index --skip-worktree <file> , problem pull ya┼čanmamal─▒. Bu ├ž├Âz├╝m, her geli┼čtiricinin kendi proje yap─▒land─▒rmas─▒na sahip oldu─ču yap─▒land─▒rma dosyalar─▒ i├žin uygundur.

Dosya her zaman uzaktan kumandadan de─či┼čtirildi─činde her zaman bunu yapmak ├žok uygun de─čildir, ancak uzak i├žerik taraf─▒ndan ├╝zerine yazmaktan koruyabilir.


16







A┼ča─č─▒daki ad─▒mlar─▒ seri olarak yap─▒n, iyi olacaks─▒n─▒z.

1. yanl─▒┼čl─▒kla eklenen dosyalar─▒ dizinden / depolama biriminden kald─▒r─▒n . "Rm -r" (linux i├žin) komutunu kullanabilir veya dizinleri tarayarak silebilirsiniz. Veya bunlar─▒ PC'nizdeki ba┼čka bir yere ta┼č─▒y─▒n. [ Ta┼č─▒nmak / ├ž─▒karmak i├žin ├žal─▒┼č─▒yorsan─▒z IDE'yi kapatman─▒z gerekebilir ]

2. dosyalar─▒ ve dizinleri gitignore ┼čimdi dosyaya ekleyin ve kaydedin.

3. bu komutlar─▒ kullanarak bunlar─▒ git ├Ânbellekten kald─▒r─▒n (birden fazla dizin varsa, bu komutu tekrar tekrar vererek bunlar─▒ birer birer kald─▒r─▒n)

 git rm -r --cached path-to-those-files
 

4.Now yapmak bir taahh├╝t ve itme , bu komutlar─▒ kullanabilirsiniz. Bu, bu dosyalar─▒ git uzaktan kumandas─▒ndan kald─▒r─▒r ve git'i bu dosyalar─▒ izlemeyi durdurur .

 git add .
git commit -m "removed unnecessary files from git"
git push origin
 

14







Kopyala / yap─▒┼čt─▒r yan─▒t─▒ git rm --cached -r .; git add .; git status

Bu komut, Git deposuna ├Ânceden taahh├╝t edilmi┼č olan dosyalar─▒ yok sayar ancak ┼čimdi bunlar─▒ biz ekledik .gitignore .


11







Matt Fear'in cevab─▒ en etkili IMHO idi. A┼ča─č─▒dakiler, Windows'takilerin yaln─▒zca d─▒┼člama listeleriyle e┼čle┼čen git repo'lar─▒ndan dosyalar─▒ kald─▒rmak i├žin kullan─▒lan bir PowerShell beti─čidir.

 # Get files matching exclusionsfrom .gitignore
# Excluding comments and empty lines
$ignoreFiles =  gc .gitignore | ?{$_ -notmatch  "#"} |  ?{$_ -match  "\S"} | % {
                    $ignore = "*" + $_ + "*"
                    (gci -r -i $ignore).FullName
                }
$ignoreFiles = $ignoreFiles| ?{$_ -match  "\S"}

# Remove each of these file from Git 
$ignoreFiles | % { git rm $_}

git add .
 

9







Dosyay─▒ g├╝venli bir yere ta┼č─▒y─▒n veya kopyalay─▒n, b├Âylece kaybetmezsiniz. Ard─▒ndan dosyay─▒ a├ž─▒n ve onaylay─▒n. Bu ├Ânceki taahh├╝tlerden birine ya da kald─▒r─▒lmad─▒─č─▒ ba┼čka bir ┼čubeye geri d├Ând├╝─č├╝n├╝zde, dosya yine de g├Âr├╝necektir. Ancak, gelecekteki t├╝m taahh├╝tlerde dosyay─▒ bir daha g├Ârmeyeceksiniz. Dosya git yoksay─▒l─▒yorsa, onu klas├Âre geri ta┼č─▒yabilirsiniz ve git g├Âremez.


8







BFG o (-in-your-ak─▒m-i┼člemedi─či) dosyalar─▒ herhangi bir b├╝y├╝k tarihsel kald─▒racakt─▒r basit bayra─č─▒ vard─▒r, b├Âylece ├Âzellikle Git repo dan b├╝y├╝k dosyalar─▒ veya ┼čifreler gibi istenmeyen verileri kald─▒rmak i├žin tasarlanm─▒┼čt─▒r: '--strip-blobs- daha b├╝y├╝k'

 $ java -jar bfg.jar --strip-blobs-bigger-than 100M
 

Dosyalar─▒ ad─▒yla belirtmek isterseniz, bunu da yapabilirsiniz:

 $ java -jar bfg.jar --delete-files *.mp4
 

BFG, git filtre dal─▒ndan 10-1000x daha h─▒zl─▒d─▒r ve genellikle kullan─▒m─▒ ├žok daha kolayd─▒r - daha fazla ayr─▒nt─▒ i├žin t├╝m kullan─▒m talimatlar─▒n─▒ ve ├Ârneklerini kontrol edin .

Kaynak: https://confluence.atlassian.com/bitbucket/reduce-repository-size-321848262.html


5







CLI'yi kullanmak istemiyorsan─▒z ve Windows ├╝zerinde ├žal─▒┼č─▒yorsan─▒z, TortoiseGit'i kullanmak ├žok basit bir ├ž├Âz├╝md├╝r; iyi ├žal─▒┼čan men├╝de "Sil (yerel tut)" Eylemi bulunur.


5







JonBrave'nin cevab─▒n─▒ sevdim ama i┼čleyen dizinleri zorla┼čt─▒rd─▒m - bir de beni biraz korkutuyor, i┼čte yapt─▒─č─▒m ┼čey ┼ču:

git config --global alias.exclude-ignored '! git ls-files -z - i┼čaretli - exclude-standard | xargs -0 git rm -r - & acac & & git ls-dosyalar─▒ -z - imzal─▒ - exclude-standart | xargs -0 git a┼čamas─▒ && git a┼čamas─▒ .gitignore && git commit -m "yeni gitignore ve yok say─▒lan dosyalar─▒ dizinden kald─▒r" '

y─▒k─▒l─▒yor:

 git ls-files -z --ignored --exclude-standard | xargs -0 git rm -r --cached 
git ls-files -z --ignored --exclude-standard | xargs -0 git stage 
git stage .gitignore 
git commit -m "new gitignore and remove ignored files from index"
 
  • yok say─▒lan dosyalar─▒ dizinden kald─▒r
  • stage .gitignore ve az ├Ânce kald─▒rd─▒─č─▒n─▒z dosyalar
  • i┼člemek

5







git rm --cached Komutu kullanmak orijinal soruyu cevaplam─▒yor:

git [Bir dosya] hakk─▒nda tamamen unutmak i├žin nas─▒l zorlars─▒n─▒z ?

Asl─▒nda, bu ├ž├Âz├╝m a ! Y├╝r├╝t├╝l├╝rken dosyan─▒n depodaki di─čer t├╝m durumlarda silinmesine neden olur git pull .

Git'i bir dosyay─▒ unutmaya zorlaman─▒n do─čru yolu, burada GitHub taraf─▒ndan belgelenmi┼čtir .

Belgeleri okuman─▒z─▒ ├Âneririm, ancak temel olarak:

 git fetch --all
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch full/path/to/file' --prune-empty --tag-name-filter cat -- --all
git push origin --force --all
git push origin --force --tags
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now
 

sadece full/path/to/file dosyan─▒n tam yoluyla de─či┼čtirin . Dosyay─▒ bilgisayar─▒n─▒za ekledi─činizden emin olun .gitignore .

Git ge├žmi┼činizi de─či┼čtirdi─činiz i├žin, deponuza h─▒zl─▒ ileri sar─▒lmamalar─▒ i├žin ge├žici olarak izin vermeniz gerekir.


4







Bu art─▒k en son git meselesi de─čil (yaz─▒ s─▒ras─▒nda v2.17.1).

.gitignore Sonunda izlenen-ama-silinen dosyalar─▒ yoksayar. A┼ča─č─▒daki beti─či ├žal─▒┼čt─▒rarak bunu kendiniz i├žin test edebilirsiniz. Son git status ifadede "taahh├╝t edilecek bir ┼čey yok" bildirilmelidir.

 # Create empty repo
mkdir gitignore-test
cd gitignore-test
git init

# Create a file and commit it
echo "hello" > file
git add file
git commit -m initial

# Add the file to gitignore and commit
echo "file" > .gitignore
git add .gitignore
git commit -m gitignore

# Remove the file and commit
git rm file
git commit -m "removed file"

# Reintroduce the file and check status.
# .gitignore is now respected - status reports "nothing to commit".
echo "hello" > file
git status
 

3







Zaten i┼členmi┼čse DS_Store :

 find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
 

Bunlar─▒ dikkate almay─▒n:

 echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
 

Sonunda bir s├Âz ver!


2


2018-04-22





├ľzellikle IDE tabanl─▒ dosyalar i├žin ┼čunu kulland─▒m:

├ľrne─čin, slnx.sqlite, sadece a┼ča─č─▒daki gibi tamamen kurtuldum:

 git rm {PATH_OF_THE_FILE}/slnx.sqlite -f
git commit -m "remove slnx.sqlite"
 

Sadece bu dosyalar─▒n baz─▒lar─▒n─▒n yerel kullan─▒c─▒ ayarlar─▒n─▒ ve projeler i├žin tercihleri ÔÇőÔÇő(hangi dosyalar─▒ a├žt─▒─č─▒n─▒z gibi) saklad─▒─č─▒n─▒ unutmay─▒n. Yani IDE'nizde her gezinti yapt─▒─č─▒n─▒zda veya baz─▒ de─či┼čiklikler yapt─▒─č─▒n─▒zda, bu dosya de─či┼čtirilir ve bu nedenle dosyay─▒ kontrol eder ve kabul edilmeyen de─či┼čiklikler oldu─čunu g├Âsterir.


2







Kabul edilen cevap Git'i bir dosya hakk─▒nda "unutturmaz" ... (tarihsel olarak). Bu sadece git / ┼čimdiki / gelecekteki dosyay─▒ yoksaymak yapar .

Bu y├Ântem markalar─▒ git'e unutmak tamamen g├Âz ard─▒ dosyalar─▒ ( ge├žmi┼č / bug├╝n / gelecek), ancak does not (uzaktan gelen yeniden ├žekti bile) ├žal─▒┼čma dizinden silme ┼čey.

Bu y├Ântem, /.git/info/exclude (tercih edilen) VEYA ihmal edilecek / unutulacak dosyalar─▒n bulundu─ču t├╝m taahh├╝tlerde ├Ânceden var .gitignore olan bir kullan─▒m gerektirir . 1

Git'i uygulamak i├žin kullan─▒lan t├╝m y├Ântemler, olaydan sonraki davran─▒┼č─▒ etkin bir ┼čekilde yeniden yazmaktad─▒r ve bu nedenle, bu s├╝re├žten sonra ├žekilebilecek kamu / ortak / i┼čbirli─čine dayal─▒ depolar i├žin ├Ânemli sonu├žlar do─čurmaktad─▒r. 2

Genel ├Âneri: temiz bir repo ile ba┼člay─▒n - her ┼čey kararl─▒, ├žal─▒┼čma dizininde veya dizinde bekleyen hi├žbir ┼čey yok ve bir yedekleme yap─▒n !

Ayr─▒ca, yorum / d├╝zeltme ge├žmi┼či i├žinde bu cevab─▒ ( ve d├╝zeltme ge├žmi┼čine ait bu soruya ) ayd─▒nlatarak / faydal─▒ olabilir.

 #commit up-to-date .gitignore (if not already existing)
#this command must be run on each branch

git add .gitignore
git commit -m "Create .gitignore"

#apply standard git ignore behavior only to current index, not working directory (--cached)
#if this command returns nothing, ensure /.git/info/exclude AND/OR .gitignore exist
#this command must be run on each branch

git ls-files -z --ignored --exclude-standard | xargs -0 git rm --cached

#Commit to prevent working directory data loss!
#this commit will be automatically deleted by the --prune-empty flag in the following command
#this command must be run on each branch

git commit -m "ignored index"

#Apply standard git ignore behavior RETROACTIVELY to all commits from all branches (--all)
#This step WILL delete ignored files from working directory UNLESS they have been dereferenced from the index by the commit above
#This step will also delete any "empty" commits.  If deliberate "empty" commits should be kept, remove --prune-empty and instead run git reset HEAD^ immediately after this command

git filter-branch --tree-filter 'git ls-files -z --ignored --exclude-standard | xargs -0 git rm -f --ignore-unmatch' --prune-empty --tag-name-filter cat -- --all

#List all still-existing files that are now ignored properly
#if this command returns nothing, it's time to restore from backup and start over
#this command must be run on each branch

git ls-files --other --ignored --exclude-standard
 

Son olarak, a┼ča─č─▒daki komutlar hakk─▒nda ├Ânemli uyar─▒lar / bilgiler i├žeren bu GitHub k─▒lavuzunun kalan─▒n─▒ (6. ad─▒mdan ba┼člayarak) takip edin .

 git push origin --force --all
git push origin --force --tags
git for-each-ref --format="delete %(refname)" refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now
 

┼×u anda de─či┼čtirilmi┼č uzak repo'dan ├ž─▒kan di─čer ayg─▒tlar yedeklemeli ve sonra:

 #fetch modified remote

git fetch --all

#"Pull" changes WITHOUT deleting newly-ignored files from working directory
#This will overwrite local tracked files with remote - ensure any local modifications are backed-up/stashed

git reset FETCH_HEAD
 

Dipnotlar

1 ├ç├╝nk├╝ /.git/info/exclude belki de yukar─▒daki talimatlar─▒ kullanarak t├╝m tarihi kaydedilmesini uygulanan alma hakk─▒nda ayr─▒nt─▒l─▒ bilgi al─▒nabilir .gitignore dosyas─▒ i├žine tarihsel bunun bu yan─▒t kapsam─▒ d─▒┼č─▒ndad─▒r gerek (ler) i┼člemek. Yapt─▒─č─▒m .gitignore ilk ┼čeymi┼č gibi, k├Âk i┼činde olmak i├žin uygun bir ┼čey istedim. Ba┼čkalar─▒ umursamayabilirler ├ž├╝nk├╝ i┼č ge├žmi┼činde var olan her /.git/info/exclude ne olursa olsun ayn─▒ ┼čeyi ba┼čarabilirler ve .gitignore tarihi net bir ┼čekilde yeniden yazmak , sonu├žlar─▒n fark─▒nda olsa bile ├žok temkinli bir konudur .https://stackoverflow.com/q/1491001

FWIW, bu soruya verilebilecek cevaplar gibi potansiyel y├Ântemleri i├žerebilir git rebase ya da her bir i┼čleme git filter-branch bir d─▒┼č kopyalar. .gitignore https://stackoverflow.com/q/43463687

2 Git'e gitme, ba─č─▒ms─▒z bir git rm --cached komutun sonu├žlar─▒n─▒n yerine getirilmesiyle ger├že─či takip eden davran─▒┼č─▒ dikkate almazsa , gelecekte g├Ârmezden gelinen dosya silme i┼člemi zorla ├žal─▒┼čt─▒r─▒lan uzaktan kumandadan ├žekilir. A┼ča─č─▒daki --prune-empty komuttaki bayrak, git filter-branch yaln─▒zca "yok say─▒lan t├╝m dosyalar─▒ sil" yaln─▒zca dizin olu┼čturma i┼člemini otomatik olarak kald─▒rarak bu sorunu ├Ânler. Git tarihinin yeniden yaz─▒lmas─▒ , kamu / payla┼č─▒lan / i┼čbirlik├ži repolar─▒n gelecekteki ├žekimlerine zarar verecek olan ba─čl─▒l─▒k de─či┼čikliklerini de de─či┼čtiriyor . L├╝tfen bu t├╝r bir depoya yapmadan ├Ânce sonu├žlar─▒ tam olarak anlay─▒n . Bu GitHub k─▒lavuzu a┼ča─č─▒dakileri belirtir:

─░├žin i┼čbirlik├žilerini s├Âyle rebase , de─čil birle┼čtirme, bunlar eski (kusurlu) depo tarihin kapal─▒ olu┼čturulan herhangi dallar─▒. Bir birle┼čtirme taahh├╝d├╝, hen├╝z tasfiye sorununa gitmi┼č oldu─čunuz tarihin bir k─▒sm─▒n─▒ veya tamam─▒n─▒ yeniden ba┼člatabilir.

Alternatif ├ž├Âz├╝mler yok uzak repo etkileyecek olan git update-index --assume-unchanged </path/file> veya git update-index --skip-worktree <file> ├Ârnekleri bulunabilir, burada .


2



─░lgili yay─▒nlar


Git i┼čaretinin silinmi┼č ve yeni bir dosya olarak ta┼č─▒nmas─▒ nas─▒l yap─▒l─▒r?

GIT hatas─▒ nas─▒l d├╝zeltilir: nesne dosyas─▒ bo┼č mu?

Git nas─▒l Ruborin taraf─▒ndan olu┼čturulan .idea dosyalar─▒ yoksaymak yapmak

Git ├žekicisinin t├╝m depolar─▒m i├žin varsay─▒lan olarak rebase kullanmas─▒n─▒ nas─▒l sa─člayabilirim?

Git .gitignore'da bulunmayan izsiz dosyalar─▒ nas─▒l g├Âsterirsiniz?

Git-diff ve git g├╝nl├╝─č├╝n├╝n yeni ve silinen dosyalar─▒ yoksaymas─▒n─▒ nas─▒l sa─člayabilirim?

Git diff nas─▒l yap─▒l─▒r - varsay─▒lan-bo┼čluk-de─či┼čkeni varsay─▒lan

Git durumunda de─či┼čiklikleri g├Ârmezden nas─▒l yap─▒l─▒r?

Mevcut t├╝m statik dosyalar─▒ do─črudan NGINX ile sunma ancak geri kalan─▒ bir arka u├ž sunucusuna proxy etme.

Git g├╝nl├╝─č├╝n├╝n devam etmesini isteme yapmak nas─▒l?

Etiketle ilgili di─čer sorular [git]


Bir uygulamay─▒ y├╝ksek radyoaktif ortamlarda kullanmak i├žin derleme

Kap geni┼čli─čine g├Âre yaz─▒ tipi ├Âl├žeklendirme

Bir JavaScript de─či┼čkeni neden bir dolar i┼čaretiyle ba┼člas─▒n?

JQuery kullanarak bir div innerHTML de─či┼čtirmek nas─▒l?

Bir script etiketinde CDATA b├Âl├╝m├╝ ne zaman gereklidir?

Markdown'da g├Âr├╝nt├╝ boyutunu de─či┼čtirme

OS X Terminalinde imle├ž kelimesini kelimelere g├Âre hareket ettirmenin bir yolu var m─▒?

Std :: string k├╝├ž├╝k harflere nas─▒l ├ževrilir?

PHP'de HTTP_HOST ve SERVER_NAME aras─▒ndaki fark nedir?

== ve Equals () aras─▒ndaki C# fark─▒