Saya beralih ke master setelah berkembang di cabang untuk waktu yang lama. Log menunjukkan:
Cabang Anda berada di belakang 'asal / master' oleh 167 komitmen, dan dapat diteruskan dengan cepat.
Saya mencoba:
git checkout HEAD
Itu tidak berpengaruh. Ini karena saya telah checkout komit menengah pada master.
Bagaimana membuat master tetap di kepala?
git checkout HEAD
tidak pernah melakukan apapun.HEAD
sudah berarti komitmen check-out.Jawaban:
Perbuatan:
akan mengambil dan menggabungkan
origin/master
cabang (Anda dapat mengatakan bahwagit pull
asal adalah default).sumber
Coba
git merge origin/master
. Jika Anda ingin memastikan bahwa itu hanya fast-forward, Anda bisa mengatakannyagit merge --ff-only origin/master
.sumber
merge
perintah ini sehingga saya tidak perlu mengautentikasi ulang.--ff-only
sangat berguna.origin/master
porsinya diperlukan atau apakah secara default masuk akal, tetapi saya merasa berguna untuk membuat alias untuk fast forward jadi saya ingin memastikan cabang upstream digunakan alih-alih hard coding keorigin/master
:ff = merge --ff-only @{u}
(@{u}
upstream) .Dalam situasi Anda,
git rebase
lakukan juga triknya. Karena Anda tidak memiliki perubahan yang tidak dimiliki master, git hanya akan maju cepat. Jika Anda bekerja dengan alur kerja rebase, itu mungkin lebih disarankan, karena Anda tidak akan berakhir dengan gabungan komit jika Anda mengacaukan.sumber
harus melakukan pekerjaan.
Anda akan mendapatkan pesan "Cabang Anda ada di belakang" setiap kali ketika Anda bekerja pada cabang yang berbeda dari tuan , seseorang melakukan perubahan untuk menguasai dan Anda git menarik.
sekarang referensi asal / master ditarik, tetapi master Anda tidak digabung dengannya
sekarang master berada di belakang asal / master dan dapat diteruskan dengan cepat
sekarang master dan asal / master Anda sinkron
sumber
Jika Anda berdiri di cabang yang berbeda dan ingin checkout versi master terbaru, Anda juga dapat melakukannya
git checkout -B master origin/master
sumber
Bagi siapa saja yang ingin Fast Forward mereka tidak berada di cabang jarak jauh lain (termasuk dirinya sendiri) tanpa memeriksa cabang itu, Anda dapat melakukan:
Ini pada dasarnya mempercepat indeks
other
keorigin/master
jika Anda tidak diother
cabang. Anda dapat memajukan cepat beberapa cabang dengan cara ini.Jika Anda bekerja di cabang lain untuk beberapa waktu, dan ingin memperbarui cabang basi dari jarak jauh ke kepala masing-masing:
sumber
Tidak perlu kerumitan hanya berdiri di cabang Anda dan melakukan git pull itu bekerja untuk saya
Atau, sebagai percobaan kedua git pull origin master hanya jika Anda tidak beruntung dengan perintah pertama
sumber
Untuk rebase yang saat ini lokal tracker cabang bergerak perubahan lokal di atas negara terpencil terbaru:
Secara umum, untuk mempercepat dan menjatuhkan perubahan lokal ( hard reset ) *:
untuk mempercepat dan menjaga perubahan lokal ( rebase ):
* - untuk membatalkan perubahan yang disebabkan oleh hard reset yang tidak disengaja dilakukan pertama kali
git reflog
, yang menampilkan keadaan HEAD dalam urutan terbalik, temukan hash yang ditunjuk HEAD sebelum operasi reset (biasanya jelas) dan atur ulang cabang ke hash tersebut.sumber
Dalam kasus Anda, untuk maju cepat, jalankan:
Ini menggunakan
--ff-only
opsigit merge
, karena pertanyaannya secara spesifik menanyakan "fast-forward".Berikut adalah kutipan dari
git-merge(1)
yang menunjukkan opsi maju lebih cepat:Saya cukup sering memajukan sehingga diperlukan alias:
Sekarang saya bisa menjalankan ini ke fast-forward:
sumber
Pindahkan penunjuk cabang Anda ke HEAD:
Cabang Anda
master
sudah ada, jadi git tidak akan memungkinkan Anda untuk menimpanya, kecuali jika Anda menggunakan ...-f
(argumen ini adalah singkatan--force
)Atau Anda dapat menggunakan rebase:
Lakukan dengan risiko Anda sendiri;)
sumber