SORU
24 Mart 2014, PAZARTESİ


Yerel Gıt değişiklikleri kaldırmak için çeşitli yollar

Ben sadece git deposu klonlanmış ve bir şube kontrol edildi. Özgün kopya istemiştim olarak çalıştım ve daha sonra tüm yerel değişiklikleri kaldırmak için karar verdi.

Kısacası, benim yerel değişiklikleri kaldırmak için aşağıdaki iki komutu yapmak zorunda kaldım

git checkout .

git clean -f

Benim yapmak istediğim şey bu

(1) Bu yerel değişiklikleri ortadan kaldırır, ya da başka almak doğru bir yaklaşım lütfen bana doğru yaklaşım bildirin.

(2) git reset --hard kullanırız hatta bu komut olmadan sıfırlamak mümkün duyuyorum

Teşekkürler

*Çözüm : Büyük bir Düzenleme(ler): 03/26 : * Git özel terminoloji ile muğlak terimler birçok yerini aldı [takip/izlenmeyen/aşamalı/unstaged]

Yerel değişiklikler yaptığımızda dosyaları yalnızca üç kategoride olabilir:

Tip 1. Sahnelenen Takip dosyaları

Tip 2. Unstaged Takip dosyaları

Tip 3. Unstaged İzlenmeyen dosyaları.k.İzlenmeyen bir dosya

  • Sahnelenen - çalışma alanı taşınan Bu dizin için/ Eklendi
  • Takip değiştirilmiş dosyaları
  • - Yeni dosyalar izlenmeyen. Her zaman unstaged. Sahnelenen, izleniyor demektir.

Her hangi komutları yapın:

  1. git checkout . - Unstaged Takip dosyaları [Tip 2] YALNIZCA Kaldırır

  2. git clean -f - Unstaged İzlenmeyen dosyaları TEK Tür [3] Kaldırır

  3. git reset --hard İzlenen ve UnStaged Sahnelenen Takip dosyaları[Tip 1, Tip 2] YALNIZCA Kaldırır

  4. git stash -u - tüm değişiklikleri [Tip 1, 2, Tip 3 Türü] Kaldırır

Sonuç:

Ya da kullanabileceğimiz açık

(1) combination of `git clean -f` and `git reset --hard` 

YA

(2) `git stash -u`

istenilen sonucu elde etmek için.

Not: Saklamak, kelime anlamı '(bir şey) güvenli bir şekilde ve gizlice belirli bir yerde muhafaza edin.' Bu her zaman retreived git stash popkullanılarak yapılabilir. Yani yukarıdaki iki seçenek arasında seçme geliştirici arayın.

Christoph ve Frederik Schøning teşekkür ederim.

Edit: 03/27

Koyarak değer olduğunu düşündümdikkat edin< . em ^/ ' için not git clean -f

git clean -f

Geri dönüş yok. Yaparsın zarar önizleme için -n --dry-run kullanın.

Ayrıca dizinleri kaldırmak istiyorsanız, git clean -f -d çalıştırın

Eğer sadece görmezden dosyaları kaldırmak isterseniz, git clean -f -X çalıştırın

Eğer göz ardı gibi olmayan yoksayılan dosyaları kaldırmak istiyorsanız, git clean -f -x çalıştırın

referans : git clean daha fazla: How do I remove local (untracked) files from my current Git branch?

Edit: 05/20/15

Bu şube ile ilgili yerel atarak tamamlar[Kaldırarak yerel tamamlar]

Bu şube ile ilgili yerel tamamlar, yerel şube aynı yapmak için atmak için ""27 ** bu dal, sadece çalıştırın . Yukarı için

Referans: http://sethrobertson.github.io/GitFixUm/fixup.html

ya git reset --hard origin/master eğer yerel şube master [eğer]

Not: 06/12/2015 Budeğilyinelenen olarak işaretli olan başka bir soru. Bu soruyu adresini kaldırmak için yerel GIT değişiklikler [Kaldır bir dosya eklendi, Kaldır değişiklikler eklendi varolan dosya vb ve çeşitli yaklaşımlar; Nerede bu diğer iş parçacığı tek adresi kaldırmak için yerel işlemek. Bir dosya ekledim, ve o tek başına kaldırmak istiyorsanız, o zaman diğer bir ÇOK konu hakkında konuşmaz. Dolayısıyla bu bir diğerinin kopyası değil

Edit: 06/23/15

Nasıl bir döner zaten uzak bir depo itti taahhüt?

$ git revert ab12cd15

Edit: 09/01/2015

Bir önceki yerel şube ve uzak daldan taahhüt silin

Durum: sadece yerel şubesine bir değişiklik yaptı ve hemen uzak şube itti, Aniden fark ettim , Oh hayır! Ben bunu değiştirmek lazım. Şimdi ne yapmamı istiyorsun?

31* *[yerel şubesinden taahhüt silme için]

git push origin HEAD --force [her iki komutları yürütülmelidir. Uzaktan silme için şube]

Dalı nedir ? Kontrol şu anda şube.

09/08/2015 düzenleyin- Yerel gıt Kaldırbirleştirme:

master şube olduğum için yeni bir çalışma şube phase2 34 *şube birleşti

$ git status
# On branch master

$ git merge phase2

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 8 commits.

Bu kurtulmak birleştirme Nasıl?s: Denedim git reset --hard git clean -d -f Her ikisi de işe yaramadı.

Tek şey buçalıştıaşağıda olanlar herhangi şunlardır:

$ git reset --hard origin/master

ya

$ git reset --hard HEAD~8

ya

$ git reset --hard 9a88396f51e2a068bb7 [kod - bu tüm birleştirme haller oldu önce var olduğunu sha taahhüt]

CEVAP
24 Mart 2014, PAZARTESİ


Onu/geri geri almak için çalışıyoruz tam olarak ne bağlıdır. the post in Ube's link okuyarak başla. Ama bir cevap girişimi için:

Hard reset

git reset --hard [HEAD]

tamamen sahnelenen ve takip dosyaları için unstaged değişiklikleri kaldırın.

Kendim gibi olduğumda genellikle sabit sıfırlama kullanarak, "sadece, eğer uzaktan kumanda ile tekrar bir klon tam yapsaydım gibi her şeyi geri al". Sadece repo bozulmamış istediğimiz ise bu işe yarar.

Temiz

git clean [-f]

İzlenmez bu dosyaları kaldırın.

Geçici dosyaları kaldırmak için, devam edin ve zaten takip dosyalarında değişiklik sahnelenen unstaged. Çoğu kez, ben de muhtemelen sonunda yapım görmezden kuralı yerine sürekli temizlik - örneğin bin/n klasörleri C# projesi, olan sana olur genelde istiyorsun dışında bırakmak repo hacimden tasarruf, ya da böyle bir şey.

-F (force) seçeneği de silecektir, bu izlenmezveaynı zamanda git ama göz ardı ediliyor kuralı görmezden geliyor. Bu durumda, yukarıda, bir yokmuş kurala hiç iz bin/n klasörler, olsa bile bu klasörler olmayı göz ardı ederek git, kullanarak güç seçeneği olacak kaldırın bunları sizin dosya sistemi. Ara sıra bu dağıtım komut dosyası, örneğin bir kullanım gördüm, ve kodunuzu dağıtmadan önce, ya da her neyse sıkıştırma temiz.

Temiz dosyaları değmeyecek Git, zaten takip ediliyor.

"" . Nokta ödeme

git checkout .

Aslında hiç yazı okumadan önce bu gösterim görmemiştim. Bunun için belgeleri bulmakta zorlanıyorum (belki birisi yardımcı olabilir), ama biraz oynamak, demek gibi:

< . em ^"çalışma ağacımı tüm değişiklikler". Geri Al

I. e. takip dosyaları unstaged değişiklikleri geri al. Görünüşe göre değişiklikler sahnelenen ve yalnız izlenmeyen dosyaları bırakır dokunmaz.

Evinde saklıyor

Bazı cevaplar saklamak söz. Olarak ifade anlamına gelir, ki muhtemelen kullanmak koymak zaman ortada bir şey (hazır değil için bir taahhüt), ve geçici olarak geçiş dalları ya da bir şekilde çalışma üzerinde başka bir devletin kodunuzu, daha sonra geri dönmek için "pis masa". Bu soru için geçerli görmüyorum, ama kesinlikle kullanışlı.

Özetle

Genellikle, eğer kendine güvenen varsa işlemiş ve belki de itti kumanda önemli değişiklikler, eğer sadece oynamak veya benzeri kullanarak git reset --hard HEAD ardından git clean -f kesinlikle temiz kodunuzu devlet, olur, vardı sadece klonlanmış ve kullanıma bir şube. Sıfırlama da sahnelenen kaldıracak çok önemli vurgulamak, ama bir değişiklik kaydedilmemiş.Teslim edilmemiş olan her şeyi whipe(izlenmeyen dosyaları, bu durumda hariç, kullanıntemiz).

Diğer tüm komutları orada daha karmaşık senaryolar kolaylaştırmak için, "felaket şeyler" tabi :) . bir ayrıntı vardır

Sorunuzun hissediyorum 1# #2 sonuç kaplı, ama son olarak: asla git reset --hard kullanma ihtiyacı bulunan sebep hiç bir şey sahnelenen vardı. Bir değişiklik sahnelenen vardı, ne git checkout . ne git clean -f döndürüldü.

Bu kapaklar umut.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • colacas

    colacas

    29 EKİM 2006
  • FASHTAG

    FASHTAG

    5 EYLÜL 2012
  • sebsebdouze

    sebsebdouze

    7 ŞUBAT 2008