$ git checkout master
# remember where the master was referencing to
$ git branch previous_master
# Reset master back to origin/master
$ git reset --hard origin/master
simpan empat penekanan tombol - Anda tidak perlu tanda kutip. Hanya: git checkout -B master asal / master
zumalifeguard
katakanlah saya melakukan 2 hal, yang pertama adalah penggabungan dengan cabang dan yang kedua adalah reguler. Apa yang terjadi pada penggabungan jika saya kembali ke asal / master?
utdev
1
Anda tidak harus git fetch origin mastersebelum memastikan origin/masterdiperbarui?
pedrozath
Ya, tentu saja dengan semua solusi yang harus Anda lakukan git fetchterlebih dahulu
KindDragon
29
Saya pikir bahkan jawaban VonC memiliki kompleksitas dibandingkan dengan opsi ini:
git secara otomatis mencatat setiap nilai ref (melalui reflog). Jadi setelah Anda menjalankan perintah itu, maka master@{1}merujuk ke nilai master sebelumnya.
Jawaban VonC benar, tetapi membuang-buang waktu untuk keluar dari nilai lama master ke sistem file.
Jika Anda peduli tentang benda yatim di repo, maka Anda dapat berlari git gc
@ yourfriendzak, saya lupa tentang memperhitungkan bahwa Anda mungkin sudah memeriksa master sebelum memperbarui master. Saya telah memperbarui jawabannya menjadi salah satu yang harus bekerja bahkan dalam kasus itu juga.
Alexander Bird
Ini berfungsi bahkan jika Anda tidak berada di master (seperti keadaan HEAD terpisah yang sebenarnya menunjuk ke asal tip / master). Kemudian, Anda dapat checkout master tanpa harus membalik file lama melalui repo. Bagus!
Andrew Mao
20
Jika sudah aktif masterAnda dapat melakukan hal berikut:
git reset --hard origin/master
Ini akan mengarahkan mastercabang lokal ke remote origin/masterdan membuang modifikasi apa pun di dir yang berfungsi.
Dan akan menghapus file! Jika Anda telah membuat / mengedit file, dan telah menjalankan "git add" pada mereka, perintah ini akan menghapusnya. Diperingatkan.
Cheeso
Apakah pendekatan ini lebih baik daripada git checkout -B master origin/master?
Jawaban:
Sebagai KindDragon 's jawaban menyebutkan, Anda dapat menciptakan
master
langsung diorigin/master
dengan:The
git checkout
halaman manual menyebutkan:Jika
-B
diberikan,<new_branch>
dibuat jika tidak ada; jika tidak, itu diatur ulang . Ini adalah setara transaksional dariAwalnya disarankan:
Sesuatu seperti:
dengan langkah 2 menjadi opsional.
sumber
Git mendukung perintah ini:
Periksa
origin/master
cabang dan resetmaster
cabang di sana.sumber
git fetch origin master
sebelum memastikanorigin/master
diperbarui?git fetch
terlebih dahuluSaya pikir bahkan jawaban VonC memiliki kompleksitas dibandingkan dengan opsi ini:
git secara otomatis mencatat setiap nilai ref (melalui reflog). Jadi setelah Anda menjalankan perintah itu, maka
master@{1}
merujuk ke nilai master sebelumnya.Jawaban VonC benar, tetapi membuang-buang waktu untuk keluar dari nilai lama master ke sistem file.
Jika Anda peduli tentang benda yatim di repo, maka Anda dapat berlari
git gc
sumber
Already on 'master'
Jika sudah aktif
master
Anda dapat melakukan hal berikut:git reset --hard origin/master
Ini akan mengarahkan
master
cabang lokal ke remoteorigin/master
dan membuang modifikasi apa pun di dir yang berfungsi.sumber
git checkout -B master origin/master
?