Başlangıç ​​noktasının ana dalının dosya sürümüne nasıl dönülür


425

Uzaktaki bir sunucudan bir reponun klonlanmış bir ana dalının yerel bilgisayarımın ana dalındayım.

Bir dosyayı güncelledim ve uzak ana daldan orijinal sürüme geri dönmek istiyorum.

Bunu nasıl yapabilirim?

Yanıtlar:


874

Dosyayı taahhüt etmediğinizi veya dizine eklemediğinizi varsayarsak:

git checkout -- filename

Dizine eklediğiniz, ancak işlemediğinizi varsayarsak, o zaman:

git reset HEAD filename
git checkout -- filename

Bunu yaptığınızı varsayarsak, o zaman:

git checkout origin/master filename

Tüm taahhütleri şubenizden uzaklaştırmak istediğinizi varsayarsak (ÇOK İNDİRİCİ):

git reset --hard origin/master

43
Üçüncü seçeneğiniz, yalnızca tek bir dosyaya değil, tüm dosyalara dokunması bakımından ilk iki seçeneğinizden çok farklıdır. Bunu daha açık bir şekilde belirtmek isteyebilirsiniz. Ayrıca neden tavsiye etmiyoruz git checkout HEAD filenameve git checkout origin/master filenamebir ve iki seçenek için daha tutarlı olur?
CB Bailey

5
@CharlesBailey: Bu git checkout origin/master filenameseçeneği gahooa'nın cevabına ekledim.
Frank

2
@cilphex mevcut şubenizdeki tüm taahhütleri uçuruyor
WattsInABox

1
Yanlışlıkla branchA'yı branchB'den yeniden basladım ve yerel şubeye hakim olmak için sıfırlamam gerekiyor. git reset --hard masterbenim kökenime ulaşmak istemediğim için tek başıma çözümüm vardı. Teşekkürler.
taco

3
@gahooa Büyük olasılıkla git checkout - dosyaadı olmalı, dosyaya "master" adı verilirse, amaçlanmayan bir davranış elde edersiniz.
user2602152

50

Ben aynı sorunla karşılaştım ve bu konuya rastladım ama benim sorunum oldu upstream. Aşağıda git komutu benim için çalıştı.

Sözdizimi

git checkout {remote-name} / {branch} - {dosya / path.js}

Misal

git checkout upstream / develop - genel / js / index.js


0

Henüz ana şubeye teslim etmediyseniz, kolay:

  • (gibi usta daldan olsun git checkout -b oops/fluke/dang)
  • değişikliklerini orada yap (beğen git add -u; git commit;)
  • ana şubeye geri dön (beğen git checkout master)

Yaptığınız değişiklikler şubelere / fluke / dang'a kaydedilecek; efendi olduğu gibi olacak.

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.