Saya sudah sepenuhnya fubar cabang lokal saya, dan ingin memulai dari awal. Versi di server sudah benar.
Saya tidak ingin memulai lagi, saya ingin menggunakan riwayat lokal saya untuk memperbaiki masalah besar saya. (Saya bisa jika saya harus.)
git fetch branchname
, dan git pull branchname
tidak bekerja. Pesan yang saya dapatkan adalah " up to date " namun, versi lokal saya tidak cocok dengan server.
git pull origin/branchname
memberi saya kesalahan " tidak ditemukan ".
Jawaban:
pertama, buat cabang baru di posisi saat ini (jika Anda perlu riwayat 'kacau'):
perbarui daftar cabang jarak jauh Anda dan sinkronkan commit baru:
kemudian, setel ulang cabang Anda ke titik di mana titik asal / cabang menunjuk ke:
hati-hati , ini akan menghapus semua perubahan dari pohon kerja Anda !
sumber
git fetch origin
sebelum resetorigin/branch
. Tidak pernah.git reset
saat HEAD menunjuk cabang, cabang itu akan mengikuti.Apa yang saya lakukan ketika saya mengacaukan cabang lokal saya adalah saya baru saja mengganti nama cabang saya yang rusak, dan periksa / cabang lagi cabang hulu:
Kemudian jika Anda yakin tidak menginginkan apa pun dari cabang lama Anda, hapus:
Tetapi biasanya saya meninggalkan cabang lama di sekitar setempat, kalau-kalau ada sesuatu di sana.
sumber
git checkout -b <branch> --track <remote>/<branch>
Apakah Anda bekerja dengan baik, tanpa itu--track
?branch.autoSetupMerge
(yang saya pikir default ke true) membuat--track
implisit. Dan, ya, di semua pengaturan git saya, saya tidak perlu secara eksplisit--track
saat melakukancheckout -b
, tetapi YMMV.Cabang lokal Anda kemungkinan memiliki modifikasi yang ingin Anda buang. Untuk melakukan ini, Anda harus menggunakan
git reset
untuk mengatur ulang kepala cabang ke tempat terakhir yang berbeda dari cabang repo hulu. Gunakangit branch -v
untuk menemukan id sha1 dari cabang hulu, dan setel ulang cabang Anda menggunakan cabang itugit reset SHA1ID
. Maka Anda harus dapat melakukangit checkout
untuk membuang perubahan yang tersisa di direktori Anda.Catatan: selalu lakukan ini pada repo yang didukung. Dengan begitu Anda dapat meyakinkan diri Anda bahwa itu bekerja dengan baik. Atau jika tidak, Anda memiliki cadangan untuk dikembalikan.
sumber
Ini untuk mengembalikan semua perubahan lokal Anda ke kepala asal
sumber