Saya telah membuat repositori, lalu saya membuat beberapa perubahan dan sepertinya saya telah mengacaukan semuanya.
Saya ingin memulainya lagi dari awal, menggunakan hulu / master saat ini sebagai dasar untuk pekerjaan saya.
Haruskah saya mengubah repositori saya atau menghapusnya sama sekali?
Jawaban:
Solusi paling sederhana adalah (menggunakan '
upstream
' sebagai nama jarak jauh yang merujuk pada repo asli bercabang):(Mirip dengan halaman GitHub ini , bagian "Apa yang harus saya lakukan jika saya dalam situasi yang buruk?" )
Ketahuilah bahwa Anda dapat kehilangan perubahan yang dilakukan pada
master
cabang (baik secara lokal, karenareset --hard
, dan pada sisi jarak jauh, karenapush --force
).Alternatifnya adalah, jika Anda ingin mempertahankan komitmen Anda
master
, untuk mengulang komitmen itu di atas arusupstream/master
.Ganti bagian reset dengan a
git rebase upstream/master
. Anda kemudian masih harus memaksa push.Lihat juga " Apa yang harus saya lakukan jika saya dalam situasi yang buruk? "
Solusi yang lebih lengkap, mencadangkan pekerjaan Anda saat ini (untuk berjaga-jaga) dirinci dalam " Bersihkan cabang master git dan pindahkan beberapa komit ke cabang baru ".
Lihat juga " Tarik pembaruan baru dari repositori GitHub asli ke dalam repositori GitHub bercabang " untuk menggambarkan apa "
upstream
" itu.Catatan: repo GitHub baru-baru ini melindungi
master
cabang terhadappush --force
.Jadi, Anda harus melepaskan
master
dulu proteksi (lihat gambar di bawah), dan kemudian melindunginya kembali setelah mendorong paksa ).Catatan: khususnya di GitHub, sekarang ada (Februari 2019) jalan pintas untuk menghapus repo bercabang untuk permintaan tarik yang telah digabung ke hulu.
sumber
git reset --hard upstream/master
git reset
dalam jawabannya.git remote
" di stackoverflow.com/a/3903835/6309 .Love VonC menjawab. Ini versi mudah untuk pemula.
Ada remote git bernama
origin
yang saya yakin Anda semua tahu. Pada dasarnya, Anda dapat menambahkan sebanyak mungkin remote ke repo git seperti yang Anda inginkan. Jadi, yang bisa kita lakukan adalah memperkenalkan remote baru yang merupakan repo asli bukan garpu. Saya suka menyebutnyaoriginal
Mari tambahkan repo asli ke garpu kami sebagai remote.
Sekarang mari kita ambil repo asli untuk memastikan kita memiliki kode terbaru
Seperti, VonC menyarankan, pastikan kita berada di master.
Sekarang untuk meningkatkan kecepatan dengan kode terbaru pada repo asli, yang harus kita lakukan adalah mengatur ulang cabang master kita sesuai dengan remote asli.
Dan Anda selesai :)
sumber
fatal: ambiguous argument 'original/master': unknown revision or path not in the working tree.
langkah terakhir. Ada saran?original
lebih baik daripadaupstream
(yang menggunakan Github docs), sepertiorigin/master
"hulu" lokalmaster
. Mengurangi ambiguitas. Saya ingin tahu apakah ini sebabnya Anda menggunakannya?Mengikuti @VonC jawaban yang bagus. Kebijakan perusahaan GitHub Anda mungkin tidak mengizinkan 'force push' on master.
remote: error: GH003: Sorry, force-pushing to master is not allowed.
Jika Anda mendapatkan pesan kesalahan seperti ini, silakan coba langkah-langkah berikut.
Untuk mengatur ulang garpu secara efektif, Anda harus mengikuti langkah-langkah ini:
Buka garpu Anda di GitHub, di "Pengaturan -> Cabang -> Cabang default" pilih 'new_master' sebagai cabang default baru. Sekarang Anda dapat mendorong paksa pada cabang 'master':
Maka Anda harus mengatur kembali 'master' sebagai cabang default di pengaturan GitHub. Untuk menghapus 'tmp_master':
Jawaban lain memperingatkan tentang kehilangan perubahan Anda masih berlaku, hati-hati.
sumber
Cara melakukannya 100% melalui GUI Sourcetree
(Tidak semua orang suka melakukan sesuatu melalui antarmuka baris perintah git)
Langkah
Klik dua kali pada cabang "master" Anda untuk memeriksanya jika belum dicentang.
Temukan komit yang ingin Anda atur ulang, jika Anda memanggil repo "master", kemungkinan besar Anda ingin menemukan komit dengan tag "master / master" di atasnya.
Klik kanan pada komit> "Setel ulang cabang saat ini ke komit ini".
Dalam dialog, setel bidang "Menggunakan mode:" ke "Hard - abaikan semua perubahan salin yang berfungsi" lalu tekan "OK" (pastikan untuk meletakkan perubahan yang tidak ingin Anda hilangkan ke cabang terpisah terlebih dahulu).
Selesai!
sumber