Henüz başlamamışsanız, şubenizi yukarı akış şubesine şu yolla sıfırlayabilirsiniz :
git checkout mybranch
git reset --hard origin/mybranch
(Sorunuzda belirttiğiniz gibi ayrı bir dalda en son taahhüdünüzü belirttiğinizden emin olun)
Sıfırlama işleminden hemen sonra, sıfırlama işleminden mybranch@{1}önceki eski işlemeyi ifade eder.
Ancak daha önce ittiyseniz, diğer seçenekler için bkz. " Git dalı oluşturma ve orijinali yukarı akış durumuna döndürme ".
İle Git 2,23 (2019 Ağustos) , yani tek bir komut şöyle olacaktır: git switch.
Yani:git switch -C mybranch origin/mybranch
Misal
C:\Users\vonc\git\git>git switch -C master origin/master
Reset branch 'master'
Branch 'master' set up to track remote branch 'master' from 'origin'.
Your branch is up to date with 'origin/master'.
Bu, endeksi ve çalışma ağacını, tıpkı bir gibi geri yükler git reset --hard.
Tarafından yorumladığı gibi Brad Herman , bir reset --hardolurdu herhangi yeni bir dosya kaldırmak veya HEAD Değiştirilen dosyayı sıfırlamak .
Aslında, "temiz bir sayfadan" başladığınızdan emin olmak için git clean -f -d, sıfırlama işleminden sonra sıfırlama yaptığınız dalla tamamen aynı olan bir çalışma ağacının kullanılmasını sağlar.
Bu blog gönderisi bu takma adları önerir ( masteryalnızca şube için, ancak bunları uyarlayabilir / genişletebilirsiniz):
[alias]
resetorigin = !git fetch origin && git reset --hard origin/master && git clean -f -d
resetupstream = !git fetch upstream && git reset --hard upstream/master && git clean -f -d
Sonra şunu yazabilirsiniz:
git resetupstream
veya
git resetorigin