git tüm değişiklikleri at ve yukarı doğru çek


145

Memba repo nasıl getirilir ve ustanın yerini alabilirim? Repomuzda sadece bir şubem var, bu da usta, ve tamamen berbat ettim, bu yüzden temelde yukarıdan başlamam gerekiyor. Bence init işi yapacak, ama daha kolay bir yolu var mı?

Yanıtlar:


251

Burada yapabileceğiniz (en azından) iki şey vardır - uzak repoyu yeniden arayabilir veya reset --hardortak ataya gidebilir ve daha sonra uzak ana bilgisayardaki en son işleme hızlı bir şekilde yönlendirebilirsiniz.

Somut olmak gerekirse, Nevik Rehnel'in orijinal cevabının basit bir uzantısı:

git reset --hard origin/master
git pull origin master

NOT : kullanma git reset --hard, taahhüt edilmeyen değişiklikleri atar ve git konusunda yeniyseniz, bu komutla karıştırmak kolay olabilir, bu yüzden devam etmeden önce ne yapacağını bildiğinizden emin olun.


1
Orada çaylaklar için daha fazla yardım: git gctemizler ve bazı temizlik aracılığıyla çalışır. Başka bir notta, hiç koşmadım git gc. Koşmak güzel, ama gerekli değil.
Joshua Dance

@JoshuaDance - iyi bir nokta. Başlangıçta neden dahil ettiğimden emin değilim.
Eric Walker

23

şube ustası üzerindeyken: git reset --hard origin/master

sonra biraz temizle git gc(man sayfalarında bunun hakkında daha fazla bilgi)

Güncelleme: Muhtemelen bir git fetch origin(ya git fetch origin masterda sadece bu dalı istiyorsanız) yapmanız gerekir ; sıfırlamadan önce veya sonra bunu yapmanız önemli değildir. (Teşekkürler @ eric-walker)


1
Sonra bir çekme yapmanız gerekebilir reset --hard.
Eric Walker

Sıfırlamadan önce git alma orijini çalıştırıldıktan sonra master'dan çekme gerekli değildir.
sciritai

@sciritai: Yorumum, başlangıç ​​noktasından getirilmeden önce eklendi.
Eric Walker

19

Tek bir komutla yapabilirsiniz:

git fetch --all && git reset --hard origin/master

Veya bir çift komutta:

git fetch --all
git reset --hard origin/master

TÜM yerel değişikliklerinizi kaybedeceğinizi unutmayın


5
git reset <hash>  # you need to know the last good hash, so you can remove all your local commits

git fetch upstream
git checkout master
git merge upstream/master
git push origin master -f

voila, şimdi çatalın yukarı akış ile aynı.


0

Sonunda yerine artık fark git fetch --all && git reset --hard origin/master, olması gerektiği git fetch --all && git reset --hard origin/<branch_name>yerine, (eğer farklı bir dala bir eser)

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.