Uzaktan kumandanın originve şubenin olduğunu masterve zaten masterkontrol ettiğinizi söyleyin , aşağıdakileri deneyebilir:
git fetch origin
git reset --hard origin/master
Bu temelde sadece geçerli dalı alır ve onu HEADuzaktaki şubeye işaret eder.
UYARI : Açıklamalarda belirtildiği gibi, bu yerel değişiklikleri atmak olacak ve kökeni ne olursa olsun on ile üzerine .
Veya esasen aynısını yapmak için sıhhi tesisat komutlarını kullanabilirsiniz:
git fetch <remote>
git update-ref refs/heads/<branch> $(git rev-parse <remote>/<branch>)
git reset --hard
DÜZENLEME: Bunun neden işe yaradığını kısaca açıklamak istiyorum.
.gitKlasör depoları herhangi bir sayı için kaydedilmesini tutabilir. Commit hash'i aslında commit içeriği için bir doğrulama metodu olduğundan ve sadece rastgele oluşturulmuş bir değer olmadığından, depolar arasındaki commit setlerini eşleştirmek için kullanılır.
Dal, belirli bir hash için yalnızca adlandırılmış bir göstericidir. İşte bir örnek set:
$ find .git/refs -type f
.git/refs/tags/v3.8
.git/refs/heads/master
.git/refs/remotes/origin/HEAD
.git/refs/remotes/origin/master
Bu dosyaların her biri, bir işleme işaret eden bir karma içerir:
$ cat .git/refs/remotes/origin/master
d895cb1af15c04c522a25c79cc429076987c089b
Bunların tümü dahili git depolama mekanizması içindir ve çalışma dizininden bağımsız olarak çalışır . Aşağıdakileri yaparak:
git reset --hard origin/master
git, geçerli dalı, origin / master'ın işaret ettiği aynı hash değerine işaret edecektir. Daha sonra, bu karmadaki dosya yapısını / içeriğini eşleştirmek için çalışma dizinini zorla değiştirir.
Bunu iş yerinde görmek için devam edin ve aşağıdakileri deneyin:
git checkout -b test-branch
# see current commit and diff by the following
git show HEAD
# now point to another location
git reset --hard <remote>/<branch>
# see the changes again
git show HEAD