Saya baru mengenal GitHub . Hari ini saya bertemu beberapa masalah ketika saya mencoba mendorong kode saya ke GitHub.
Pushing to [email protected]:519ebayproject/519ebayproject.git
To [email protected]:519ebayproject/519ebayproject.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:519ebayproject/519ebayproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Saya belum memasukkan apa pun di repositori, jadi mengapa saya perlu menarik sesuatu?
Jawaban:
Jika Anda tidak ingin menggabungkan cabang remote ke cabang lokal Anda (lihat perbedaan dengan git diff ), dan ingin melakukan push paksa, gunakan perintah push dengan -f
di mana
origin
nama repo jarak jauh Anda .sumber
$ git pull origin master -v
tetapi memberikan kesalahanfatal: refusing to merge unrelated histories
. Kemudian saya mencoba ini dan itu berhasil dan file lokal saya muncul di repo github remote.Seperti pesan memberitahu Anda,
Gunakan
git pull
untuk menarik perubahan terbaru dari repositori jarak jauh ke repositori lokal Anda. Dalam hal ini, menarik perubahan akan membutuhkan penggabungan karena Anda telah membuat perubahan pada repositori lokal Anda.Saya akan memberikan contoh dan gambar untuk menjelaskan. Mari kita asumsikan penarikan terakhir Anda dari asal / cabang di Komit B. Anda telah menyelesaikan dan melakukan beberapa pekerjaan (Komit C). Pada saat yang sama, orang lain telah menyelesaikan pekerjaan mereka dan mendorongnya ke asal / cabang (Komit D). Perlu ada penggabungan antara dua cabang ini.
Karena Andalah yang ingin mendorong, Git memaksa Anda untuk melakukan penggabungan. Untuk melakukannya, Anda harus terlebih dahulu menarik perubahan dari asal / cabang.
Setelah menyelesaikan penggabungan, Anda sekarang akan diizinkan untuk memajukan asal / cabang ke Komit E dengan mendorong perubahan Anda.
Git mengharuskan Anda menangani penggabungan sendiri, karena penggabungan dapat menyebabkan konflik.
sumber
git pull
juga dicetakAlready up-to-date
. Ternyata saya tidak di cabang saya meskipun saya, tapi cabang KEPALA terpisah (mungkin dari penggabungan gagal?). Ini jelas setelah berlarigit branch
. Setelah menjalankangit checkout mybranch
semuanya bekerja seperti yang diharapkan.Sudahkah Anda memperbarui kode sebelum mendorong?
Gunakan
git pull origin master
sebelum Anda mendorong sesuatu.Saya berasumsi bahwa Anda menggunakan
origin
nama untuk remote Anda.Anda perlu menarik sebelum mendorong, untuk membuat repositori lokal Anda mutakhir sebelum Anda mendorong sesuatu (kalau-kalau ada orang lain yang sudah memperbarui kode pada
github.com
). Ini membantu dalam menyelesaikan konflik secara lokal.sumber
git pull origin master
git mengeluh bahwa'origin' does not appear to be a git repository
git remote --verbose
untuk melihat semua remote yang dikonfigurasi di bawah folder git Anda. Informasi yang ditampilkan di layar juga akan menyertakan jalur "[email protected]" atau jalur HTTPS, yang darinya Anda dapat mengidentifikasi ke mana harus mendorong. Semoga ini membantu !git pull origin master
menampilkan Sudah up-to-date. tetapi kemudian ketika mencoba untuk mendorong origin_branch ini mengatakan peringatan yang sama disebutkan dalam pertanyaan. Ada saran !!git push -f <remote> <branch>
mis. git push origin <your_local_branch> periksa utas ini .Ini biasanya terjadi ketika Anda
git commit
dan mencoba untukgit push
mengubah sebelumnyagit pulling
di cabangx
tempat orang lain telah membuat perubahan.Aliran normal akan seperti di bawah ini,
LANGKAH 1 :
git stash
Perubahan lokal yang tidak dikomit pada cabang itu.LANGKAH 2 :
git pull origin branch_name -v
untukpull and merge
ke perubahan yang dilakukan secara lokal pada cabang itu ( berikan gabungan ini beberapa pesan, dan perbaiki konflik jika ada. )LANGKAH 3 :
git stash pop
thestash
perubahan ed ( Kemudian Anda dapat membuat komit pada file Muncul jika Anda ingin atau mendorong sudah berubah berkomitmen (Step4) pertama dan membuat yang baru berkomitmen untuk file kemudian. )LANGKAH 4 :
git push origin branch_name -v
perubahan yang digabungkan.Ganti
branch_name
denganmaster
(untukmaster
cabang).sumber
commit
? Jika Anda tidak melakukan perubahan setelahnyastash pop
?Solusi pertama dan sederhana (Tidak Direkomendasikan)
git push -f origin master
.Solusi yang disarankan
Jika ini tidak berhasil, ikuti 🔰
.git
direktori dari folder.Kemudian jalankan perintah-perintah ini:
ATAU
Hanya gunakan
git push -f origin master
jika-u
tidak bekerja untuk Anda.Ini akan menyelesaikan hampir semua jenis kesalahan yang terjadi saat mendorong file Anda.
sumber
Terkadang kami lupa menarik dan melakukan banyak pekerjaan di lingkungan lokal.
Jika seseorang ingin mendorong tanpa menarik,
sedang bekerja. Ini tidak direkomendasikan ketika bekerja dengan orang lain, tetapi ketika pekerjaan Anda adalah hal yang sederhana atau proyek mainan pribadi, itu akan menjadi solusi cepat.
sumber
reset --hard
ke komit yang lebih lama dan kemudian melakukan beberapa lagi. Kemudian saya hanya inginpush
tetapi repo jarak jauh tidak siap untuk membiarkan saya. WarrenP sebenarnya bisa membantu git peserta didik dengan menjadi tidak terlalu rahasia. Mungkin dia tidak mau.Beberapa dari Anda mungkin mendapatkan kesalahan ini karena Git tidak tahu cabang mana yang Anda coba tekan.
Jika pesan kesalahan Anda juga termasuk
maka Anda mungkin ingin mengikuti tips praktis dari Jim Kubicek, Konfigurasikan Git ke Hanya Dorong Cabang Saat Ini , untuk mengatur cabang default menjadi saat ini.
sumber
Ini bekerja untuk saya - perintah
git pull origin branch_name --rebase
akan menarik perubahan dari branch_name jarak jauh pada awalnya, kemudianrebase
cabang saat ini di atasnya.sumber
Selain jawaban di atas, berikut ini bekerja untuk saya: -
Skenario -
Solusi -
sumber
--all
bendera.Saya memiliki masalah yang sama, apa yang saya lakukan adalah pertama kali saya mendorongnya secara paksa dengan menggunakan ini
Saya melakukan ini setelah saya mengkomit file dan mendapatkan kesalahan saat Anda mendapatkannya. Itu melakukan semua file dan mendorong mereka. Kemudian waktu berikutnya saya mendorong ke github. Saya melakukan apa yang diminta dan tidak apa-apa. Semoga ini bekerja untuk Anda juga :)
sumber
git push --set-upstream origin master --force
Saya menyebutkan ini dalam tutorial saya, Cara Menggunakan GitHub: Tutorial untuk pemula .
Saat Anda membuat repositori baru di GitHub, GitHub dapat meminta Anda untuk membuat file readme. Jika Anda membuat file readme langsung di GitHub, maka Anda harus terlebih dahulu membuat permintaan 'pull' sebelum permintaan 'push' berhasil. Perintah-perintah ini akan 'menarik' repositori jarak jauh, menggabungkannya dengan file Anda saat ini, dan kemudian 'mendorong' semua file kembali ke GitHub:
sumber
Saya mendapatkan pesan kesalahan yang disebutkan di atas ketika saya mencoba untuk mendorong cabang saya saat ini
foobar
:Ternyata saya memiliki dua cabang lokal yang melacak cabang terpencil yang sama:
Ini berhasil bagi saya untuk mendorong cabang saya saat ini dengan menggunakan:
... dan untuk pembersihan
git branch -d
sumber
git push -f asal nama cabang
Gunakan perintah di atas hanya jika Anda yakin bahwa Anda tidak memerlukan kode cabang jarak jauh jika tidak bergabung dulu dan kemudian dorong kode tersebut
sumber
Jika Anda tidak ingin menarik ke proyek Anda saat ini (dan berpotensi menghadapi konflik yang tidak ingin Anda selesaikan) dan Anda tidak ingin membuat cabang lain (Ini akan membosankan untuk mengelola cabang lain), dan Anda tidak tidak ingin melakukan
force
perintah git yang berisiko dan permanen (yang bahkan setelah membaca apa yang mereka lakukan, saya sering terkejut dengan implikasi melakukannya).Solusi : Anda cukup, seret konten folder Anda ke folder lain, tarik proyek ke folder kosong sekarang, seret konten yang ditarik ke tempat sampah, lalu seret proyek Anda yang benar kembali ke folder. Anda harus bisa mendorong dengan benar dan mendapatkan hasil yang diinginkan. Saya benar-benar membutuhkan waktu kurang dari 10 detik untuk melakukan ini.
Bagi orang-orang yang akan mengatakan kepada saya ini tidak pantas tanpa mengutip konsekuensi apa pun, atau orang-orang mengatakan kepada saya untuk menggunakan perintah yang menyebabkan saya kesal di masa depan, saya mengatakan: "Metode ini secara harfiah membutuhkan waktu kurang dari 10 detik." Jika saya menemukan perintah git yang membutuhkan waktu kurang dari 10 detik untuk mengimplementasikan dan memiliki efek yang sama persis, saya akan mengadopsi itu. Sampai saat itu, saya menggunakan metode ini.
Salah satu kelemahan dari metode ini adalah bahwa riwayat komit Anda akan muncul linier ketika Anda benar-benar bergabung di cabang tanpa penggabungan tersebut didokumentasikan. Ini mungkin bukan metode terbaik saat bekerja dengan kelompok. Kerjakan cabang dalam kasus-kasus itu!
sumber
Hanya memiliki masalah yang sama tetapi dalam kasus saya, saya telah mengetik cabang yang salah pada remote. Jadi, tampaknya itu adalah sumber masalah ini ... periksa lagi Anda mendorong ke cabang yang benar.
sumber
Saya mengalami masalah yang sama dan ternyata saya berada di cabang (lokal) yang berbeda dari yang saya kira DAN cabang lokal yang benar ada di belakang dalam komit dari jarak jauh.
Solusi saya: checkout cabang yang benar, cherry-pick komit dari cabang lokal lainnya, git pull dan git push
sumber
Saya memiliki masalah yang sama dan ternyata alur kerja saya untuk memperbarui cabang saya salah. Saya melakukan hal berikut:
Di 'tuan' lokal saya
lalu kembali ke cabang lokal saya
Ini bekerja dengan baik untuk aliran git sebelumnya tetapi tidak dengan github. The
git rebase
adalah masalah di sini menyebabkan masalah dengan sinkronisasi (dan saya akan mengakui bahwa sesuatu yang sudah harus menerima tanpa sepenuhnya memahami) dan sayangnya menempatkan saya dalam posisi di managit push -f
mungkin menjadi pilihan termudah. Tidak baik.Alur baru saya adalah memperbarui cabang secara langsung menggunakan
git merge
sebagai berikut:Di cabang lokal saya
Tidak maju cepat, karena saya akan membuat perubahan tentu saja di cabang lokal.
Seperti yang mungkin Anda tahu, saya bukan ahli git, tetapi saya diberi tahu dengan andal bahwa alur kerja ini mungkin akan menghindari masalah khusus yang saya miliki.
sumber
Dalam kasus saya, saya sudah memeriksa "cabang saya", dan selesai
git pull
, jadi saya tidak tahu mengapa dorongan itu tidak berfungsi. Akhirnya, saya menyadari bahwa saya mendorong cabang yang salah. Saya mengetikgit push origin master
bukangit push origin mybranch
.Jadi, jika Anda sudah selesai
git pull
dan masih menerima pesan ini, pastikan Anda mendorong cabang yang benar.sumber
Apakah nama cabang Anda sama dengan nama cabang jarak jauh?
Jika tidak, Anda harus checkout cabang baru dengan nama yang sama dengan cabang jarak jauh dan coba dorong lagi.
Asumsikan cabang jarak jauh yang ingin Anda tekan adalah [ pengujian ] dan cabang lokal Anda dinamai [ tes ].
Jika Anda tidak berada di cabang tes , alihkan ke sana.
Kemudian buka cabang baru dan beri nama pengujian .
Sekarang, saatnya untuk mendorongnya:
sumber
$git branch -M <new_name>
untuk mengubah nama cabang lokal.Saya telah mengatasi masalah ini di repositori GIT saya. Tidak perlu
rebase
atauforce
berkomitmen dalam hal ini. Gunakan langkah-langkah di bawah ini untuk menyelesaikan ini -Semoga ini bisa membantu.
sumber
Solusi lain adalah memajukan kepala remote dengan membuat komit lain jika Anda bisa. Setelah Anda menarik kepala maju ini ke subtree lokal maka Anda akan dapat mendorongnya lagi.
sumber
Saya mendapatkan kesalahan serupa saat mendorong perubahan terbaru ke repositori telanjang Git yang saya gunakan untuk gitweb . Dalam kasus saya, saya tidak membuat perubahan apa pun di repositori telanjang, jadi saya hanya menghapus repositori telanjang dan dikloning lagi:
sumber
Jika Anda yakin tidak ada yang membuat perubahan pada repositori git Anda dan bahwa Anda bekerja pada versi terbaru,
git pull
tidak masuk akal sebagai solusi di hati Anda ...Maka ini mungkin yang terjadi, Anda gunakan
git commit --amend
Tutorial ATLASSIAN: penulisan ulang riwayat
Namun, tidak disarankan untuk melakukan
git commit --amend
jika Anda telah mendorong komit ke GitHub , ini karena "mengubah tidak hanya mengubah komit terbaru - itu menggantikannya sepenuhnya. Untuk Git, itu akan terlihat seperti komit baru" yang berarti bagi pengembang lain di GitHub Anda, riwayat tampak seperti A-> B-> C tetapi bagi Anda sepertinya A-> B-> D, jika GitHub mengizinkan Andapush
, semua orang harus memperbaiki secara manual riwayat mereka.Ini adalah alasan mengapa Anda mendapatkan pesan kesalahan
! [rejected] master -> master (non-fast-forward)
, jika Anda tahu bahwa tidak ada yang menarik perubahan terbaru Anda, Anda dapat melakukannyagit push --force
, ini akan mengubah sejarah git di repo publik Anda . Kalau tidak ... Anda dapat melakukangit pull
, tetapi saya percaya ini akan memiliki hasil yang sama seperti Anda tidak pergigit commit --amend
, itu akan membuat komit baru (yaitu: sejarah git setelah tarik git: A-> B-> C-> D )untuk lebih detail: Bagaimana cara mengubah komit terbaru Anda
sumber
Opsi lain: ubah nama cabang Anda secara lokal menjadi sesuatu yang baru.
Anda kemudian dapat mendorongnya ke repositori jarak jauh, misalnya jika itu adalah cara Anda menyimpan salinan (cadangan) dan memastikan tidak ada yang hilang.
Anda dapat mengambil cabang jarak jauh untuk memiliki salinan lokal dan memeriksa perbedaan antara (i) apa yang dimiliki jarak jauh (dengan nama cabang lama) dan (ii) apa yang Anda miliki (dengan nama cabang baru), dan memutuskan apa yang harus dilakukan . Karena Anda tidak menyadari perbedaan remote di tempat pertama (maka masalahnya), hanya menggabungkan atau memaksa perubahan di suatu tempat terlalu brutal.
Lihatlah perbedaannya, pilih cabang mana yang ingin Anda kerjakan, ceri pilih perubahan yang Anda inginkan dari cabang lain, atau kembalikan perubahan yang tidak Anda inginkan pada cabang yang Anda miliki dll.
Maka Anda harus berada dalam posisi untuk memutuskan apakah Anda ingin memaksakan versi bersih Anda ke remote, atau menambahkan perubahan baru, atau apa pun.
sumber
Masalah dengan perintah push adalah repositori lokal dan jauh Anda tidak cocok. JIKA Anda menginisialisasi readme secara default saat membuat repositori baru dari git hub, maka, cabang master secara otomatis dibuat. Namun, ketika Anda mencoba untuk mendorong yang tidak memiliki cabang. Anda tidak dapat mendorong ... Jadi, praktik terbaik adalah membuat repo tanpa inisialisasi readme default.
sumber
Masalah ini biasanya disebabkan oleh membuat file readme.md, yang dihitung sebagai komit, tidak disinkronkan secara lokal pada sistem, dan kurang di belakang kepala, karenanya, itu menunjukkan permintaan git pull. Anda dapat mencoba menghindari file readme dan kemudian mencoba melakukan. Ini berhasil dalam kasus saya.
sumber
Penyebab lain dari masalah ini (tampaknya tidak begitu umum) ...
Server saya terlambat ~ 12 jam ketika saya melakukan push
Saya mengkonfigurasi NTP di server SYNC jam saya.
Saya mengeksekusi git push baru yang menyebabkan kesalahan yang dibahas dalam posting ini.
sumber
Jika ada kesempatan
git pull
mencetakAlready up-to-date
maka Anda mungkin ingin memeriksa global gitpush.default
param (In~/.gitconfig
). Setel kesimple
jika sudah masukmatching
. Jawaban di bawah ini menjelaskan mengapa:Git - Apa perbedaan antara push.default "matching" dan "simple"
Juga, ada baiknya memeriksa apakah cabang lokal Anda sudah ketinggalan zaman menggunakan
git remote show origin
dan melakukan penarikan jika diperlukansumber
menggunakannya
git pull https://github.com/username/repository
karena Github dan repositori jarak jauh tidak sinkron. Jika Andapull
repo dan kemudianPush
semuanya akan disinkronkan dan kesalahan akan hilang.`
sumber
git pull
sudah cetakup-to-date
larutan:
Anda mungkin dibuat repositori / proyek di remote (server) dan menambahkan beberapa file di sana, Kemudian lagi membuat Folder di git lokal dan diinisialisasi
git init
- ini adalah kesalahan , Anda tidak boleh membuatgit init
di lokal, bukan mengkloning proyek ke lokal Anda menggunakangit clone
lalu tarik
sumber