git error: gagal mendorong beberapa referensi ke jarak jauh


450

Untuk beberapa alasan, saya tidak bisa mendorong sekarang, sedangkan saya bisa melakukannya kemarin. Mungkin saya mengacaukan konfigurasi atau sesuatu.

Inilah yang terjadi:

Ketika saya menggunakan master asal git push

gitbashscr

Seperti apa direktori kerja dan repositori jarak jauh saya:

Cuplikan layar folder file Windows dengan direktori ini: .git, css, js.  Dan file-file ini: index.php, readme, setsu.php.  Kata "lokal" dengan panah menunjuk ke folder css.  Di bawah, tangkapan layar dengan judul "github", dan folder css dan file index.php


7
Sepertinya repo lokal Anda tidak sinkron dengan repo git. Apakah Anda mencoba melakukan git pull?
R11G

1
ya, tapi saya tidak tahu dengan sintaks berikut setelah git pull dikatakannya git pull <remote> <branch>, dapatkah Anda melihat contoh sintaks untuk git pull?
Leipzy

1
Periksa pertanyaan serupa ini - stackoverflow.com/questions/18588974/…
R11G

3
@ R11G terima kasih tuan! tautan ini membantu saya stackoverflow.com/a/18589043/3626672
leipzy

2
Saya mendapat kesalahan pada repo baru. Ini membantu: stackoverflow.com/a/6518774/2067690
HumanInDisguise

Jawaban:


618

Jika repo GitHub melihat komit baru didorong ke sana, saat Anda bekerja secara lokal, saya akan menyarankan menggunakan:

git pull --rebase
git push

Sintaks lengkapnya adalah:

git pull --rebase origin master
git push origin master

Dengan Git 2.6+ (September 2015), setelah selesai (sekali)

git config --global pull.rebase true
git config --global rebase.autoStash true

Sederhana git pullsaja sudah cukup.
(Catatan: dengan Git 2.27 Q2 2020 , a merge.autostashjuga tersedia untuk tarikan reguler Anda, tanpa rebase)

Dengan begitu, Anda akan memutar ulang (yang --rebasebagian) komit lokal Anda di atas baru diperbarui origin/master(atau origin/yourBranch: git pull origin yourBranch).

Lihat contoh yang lebih lengkap di bab 6 Tarik dengan rebase dari Buku Saku Git .

Saya akan merekomendasikan:

# add and commit first
git push -u origin master

Itu akan membangun hubungan pelacakan antara cabang master lokal Anda dan cabang hulu.
Setelah itu, setiap dorongan di masa depan untuk cabang itu dapat dilakukan dengan sederhana:

git push

Lihat " Mengapa saya perlu mendorong cabang baru secara eksplisit? ".


Karena OP sudah mereset dan mengulang komitnya di atas origin/master:

git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin master

Tidak perlu pull --rebase.

Catatan: git reset --mixed origin/masterdapat juga ditulis git reset origin/master, karena --mixedopsi ini adalah yang standar saat menggunakan git reset.


apakah boleh menjalankan perintah git pull --rebase yang disarankan ...? karena saya sudah melakukan> git reset --mixed origin / master> git add. > git commit -m "Ini adalah komit baru untuk apa yang awalnya saya rencanakan menjadi amendmend"> git push master asal disarankan di sini stackoverflow.com/questions/18588974/... btw jawaban Anda kelihatannya membantu Pak
leipzy

3
Bagi saya, saya hanya perlu menjalankan "git commit". :(
Tyler

Terima kasih, memperbaiki masalah bodoh dengan Git LFS, saya telah menyerahkan diri saya karena harus menggunakan baris perintah mulai sekarang sebagai hasilnya haha.
Tyler C

2
Sungguh super .. perintah di bawah ini bekerja untuk saya ... git reset --mixed origin / master git add git commit -m "Ini adalah komit baru untuk apa yang awalnya saya rencanakan untuk diubah" git push origin master Terima kasih @VonC
Hari Narayanan

1
Terima kasih itu berhasil! Saya mencari berjam-jam untuk solusi ini!
Redion Xhepa

96

Adakah yang mencoba:

git push -f origin master

Itu harus menyelesaikan masalah.

EDIT: Berdasarkan komentar @Mehdi di bawah ini saya perlu mengklarifikasi sesuatu tentang —force pushing. Perintah git di atas hanya bekerja dengan aman untuk komit pertama. Jika sudah ada komit, tarik permintaan atau cabang di sebelumnya, ini me-reset semua itu dan mengaturnya dari nol. Jika demikian, silakan merujuk jawaban terperinci @VonC untuk solusi yang lebih baik.


25
Bekerja tetapi buruk, tolong jangan menggunakannya kecuali Anda tahu apa yang Anda lakukan. (mungkin Anda tidak tahu apa yang Anda lakukan jika Anda mencari di SO)
Mehdi

3
Jika Anda akan mencoba -f/ --forceitu selalu lebih aman untuk digunakan --force-with-leasesebagai gantinya, yang akan dibatalkan jika ada perubahan hilir yang akan musnah oleh push. --force-with-leasediperlukan untuk banyak situasi rebasing sehari-hari, tetapi --forceseharusnya hampir tidak pernah dibutuhkan.
Joshua Goldberg

63

Jika Anda baru saja menggunakan git initdan telah menambahkan file Anda dengan git add .atau sesuatu yang serupa dan telah menambahkan cabang jarak jauh Anda mungkin saja Anda belum melakukan ( git commit -m 'commit message') sesuatu secara lokal untuk mendorong ke remote ... Saya baru saja memiliki kesalahan ini dan itu adalah saya isu.


1
hanya berlari ke ini. Perintah komit tidak berfungsi selama add git. panggilan yang bagus. Terima kasih
jgritten

1
Terima kasih sobat! Itu dia. Saya pikir saya melakukan perubahan. Sekarang git push -u master asal berfungsi dengan baik.
tleo

36

Saya memiliki masalah yang sama. Saya mendapatkan masalah ini karena saya belum membuat komit bahkan komit awal dan saya masih mencoba untuk mendorong.

Setelah saya lakukan git commit -m "your msg"dan semuanya bekerja dengan baik.


8
Itu tidak masuk akal. Pertanyaan asli adalah tentang git lokal yang ada di belakang . Tidak mungkin "berada di belakang" dapat diselesaikan dengan membuat komitmen lokal!
GhostCat

Oh, aku juga lupa berkomitmen: p
Syams Nahid

Ini juga memungkinkan, Anda tidak dapat mendorong dengan
komis

3
Saya baru saja mengalami masalah ini dan saya lupa untuk berkomitmen. Pesan kesalahan harus lebih jelas
Ivan Topić

1
Itu berlaku bagi saya karena saya mendapatkan pesan kesalahan yang tepat dan solusi ini memperbaiki masalah saya.
Diego Fortes

19

Ganti nama cabang Anda dan kemudian dorong, misalnya:

git branch -m new-name
git push -u new-name

Ini berhasil untuk saya.


1
itu berhasil, tetapi tolong jelaskan mengapa kita harus melakukannya
kanlukasz

Wow, ini benar-benar berhasil, tetapi mengapa? Aku punya tanda hubung dalam nama-cabang lokal saya: my-branch_wont_push. Setelah saya ganti namanya my_branch_wont_push, kemudian git push -u origin my_branch_wont_pushbekerja untuk saya.
cdabel

13

Saya menemukan solusi untuk masalah ini dalam bantuan github.

Anda dapat melihatnya dari: Berurusan dengan kesalahan yang tidak terlalu cepat

Ia mengatakan:

Anda dapat memperbaikinya dengan mengambil dan menggabungkan perubahan yang dibuat pada cabang jauh dengan perubahan yang telah Anda buat secara lokal:

$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin branch
# Merges updates made online with your local work

Atau, Anda bisa menggunakan git pull untuk melakukan kedua perintah sekaligus:

$ git pull origin branch
# Grabs online updates and merges them with your local work

1
Ini adalah proses normal setiap kali hal-hal berfungsi seperti yang diharapkan. Ini tidak membantu apa-apa ketika git berpikir itu sudah mutakhir seperti yang diminta @rubyandcoffee.
Tim

10
  1. git init

  2. git remote add origin https://gitlab.com/crew-chief-systems/bot

  3. git remote -v (untuk memeriksa repositori saat ini)

  4. git add -A(tambahkan semua file)

  5. git commit -m 'Added my project'

  6. git pull --rebase origin master

  7. git push origin master


sebelum mendorong kode yang harus Anda tarik dari repositori
James Siva

Anda cukup menulis seperti git pull
James Siva

6

Saya telah menghadapi masalah yang sama, diperbaiki dengan langkah-langkah di bawah ini.

  1. git init
  2. git add .
  3. git commit -m 'Add your commit message'
  4. git remote add origin https://User_name@bitbucket.org/User_name/sample.git

    (Di atas url https: //User_name@bitbucket.org/User_name/sample.git merujuk ke url proyek bucket kecil Anda)

  5. git push -u origin master

petunjuk

periksa apakah tautan akun git hub Anda dengan git lokal Anda dengan menggunakan:

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

4

Jika Anda menggunakan gerrit, ini bisa disebabkan oleh Change-id yang tidak sesuai di komit. Coba hapus Change-Id dan lihat apa yang terjadi.


4

Ingatlah untuk melakukan perubahan Anda sebelum mendorong ke repo Github. Ini mungkin memperbaiki masalah Anda.


4

Tidak melakukan perubahan awal sebelum mendorong juga menyebabkan masalah


3

sebelum mendorong Anda harus menambahkan dan melakukan perubahan atau lakukan git push -f origin master


3
git push origin {your_local_branch}:{your_remote_branch}

Jika cabang lokal Anda dan cabang jarak jauh berbagi nama yang sama, maka dapatkah Anda menghilangkan nama cabang lokal Anda, cukup gunakan git push {your_remote_branch}. Kalau tidak, itu akan membuang kesalahan ini.


3

Saya mengikuti langkah-langkah berikut dan itu berhasil untuk saya.

 rm -rf .git
 git init
 git add .
 git commit -m"first message"
 git remote add origin "LINK"
 git push -u origin master

2

Itu dapat terjadi ketika Anda tidak memiliki file. Cobalah untuk membuat file teks kemudian ikuti perintah berikut

git add .
git commit -m "first commit"
git push --set-upstream origin master

2

Bagi saya Masalahnya adalah, saya tidak menambahkan file sebelum komit.

git add .

git commit -m "your msg"


2

Penggunaan terbaik rm -rf .git/hooksdan kemudian coba git push


Menarik, itu membantu saya dalam sebuah kasus, di mana jelas tidak ada komitmen asal (tidak perlu rebase).
pevik

Mengapa Anda membuang semua kait Anda? mungkin membuat cadangan dulu?
MSpreij

2

Saya membuat repo kosong di GitHub, dan memiliki kode saya secara lokal. Saya menghadapi masalah yang sama sekarang, karena saya mengikuti urutan di bawah ini,

git init
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git add .
git push -u origin master

MASALAH ITU: Saya mencoba melakukan sebelum mementaskan file yang saya miliki.

JADI KITA PERLU MENYIMPAN FILE DAN KOMIT.

Ini urutan yang benar.

git init
git add .
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git push -u origin master

Karena saya menjalankan urutan yang salah terlebih dahulu, saya hanya menjalankan perintah di bawah ini

git add .
git commit -m 'Initial Commit'
git push -u origin master

1

Tidak yakin apakah ini berlaku, tetapi perbaikan untuk saya adalah melakukan sesuatu secara lokal setelah git init. Lalu saya mendorong ke remote menggunakan --set-upstream ...


1

Membuat cabang baru diselesaikan untuk saya:

git checkout -b <nameOfNewBranch>

Seperti yang diharapkan tidak perlu bergabung karena cabang sebelumnya sepenuhnya terkandung di yang baru.


1
Saya memiliki masalah ini persis, saya berada di feature22 dan sedang melakukan git push origin feature22-fix, tetapi feature22-fixtidak keluar tidak lokal atau jauh, jadi saya harus terlebih dahulu checkout cabang secara lokal, kemudian dorong
Honey

1

Jika Anda mencoba menginisialisasi direktori dengan repositori GitHub yang ada, Anda harus memastikan Anda melakukan perubahan.

Coba buat file:

touch initial
git add initial
git commit -m "initial commit"
git push -u origin master

Itu akan menempatkan file bernama inisial yang dapat Anda hapus nanti.

Semoga jawaban ini membantu! Semoga berhasil!


1

Anda perlu memberi kekuatan

Lakukan saja push - force.


1

Dalam kasus saya, itu adalah huskypaket saya yang melarang push.

> husky - pre-push hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run prepush'
error: failed to push some refs to 'https://username@bitbucket.org/username/my-api.git'

Untuk mendorongnya dengan paksa, jalankan saja git push origin master --no-verify

Saya berlari npm run prepushuntuk melihat debug kesalahan, dan ini adalah penyebabnya:

npm ERR! code ELOCKVERIFY
npm ERR! Errors were found in your npm-shrinkwrap.json, run  npm install  to fix them.
npm ERR!     Invalid: lock file's loopback-utils@0.8.3 does not satisfy loopback-utils@^0.9.0

Berlari npm installdan lakukan, dan masalahnya sudah diperbaiki.


1

lakukan ini

git rm --cached *
git add .
git commit -m"upload"
git push --set-upstream origin master

Selamat coding!


1

Coba perintah git ini,

git push origin master –f
git push origin master --force

0

Nah jika tidak ada jawaban di atas yang berfungsi dan jika Anda telah mengacaukan sesuatu ssh-addbelakangan ini. Mencoba

ssh-add -D

0

Untuk pengguna sumber daya

Pertama, lakukan komit awal atau pastikan Anda tidak memiliki perubahan yang tidak dikomit, kemudian di sisi sumber ada "REMOTES", klik kanan padanya, lalu klik 'Push to origin'. Ini dia.


0

Ini terjadi pada saya karena saya memiliki tag dengan yang sama dengan cabang dan saya mencoba mendorong cabang ke jarak jauh.


0

Dalam kasus saya masalahnya adalah (anehnya) tidak ada cabang yang disebut master. Saya mengambil repositori dari Github.


0

Saya sedang mendorong cabang salah ketik 'evelop' yang belum saya miliki checkout, dan sebagai gantinya, saya ingin mendorong cabang yang disebut 'amplop'. Jadi cabang harus ada / checkout di copy pekerjaan lokal untuk mendorong tentu saja, karena itu kesalahan, bukan untuk membuat kesalahan ketik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.