Setelah kloning dari repositori git jarak jauh (pada kode yang lebih baik) saya membuat beberapa perubahan, berkomitmen dan mencoba untuk mendorong:
git push origin master
Kesalahan dengan:
error: tidak dapat mengunci info yang ada / referensi yang
fatal: git-http-push gagal
Kasus ini menganggap repositori yang sudah ada.
Apa yang saya lakukan sebelumnya, adalah:
git config –global http.sslVerify false
git init
git remote add [url]
git clone
- ubah data
git commit
Di 'kode yang lebih baik' saya tidak memiliki akses ke log git.
Saya menggunakan Windows. Kesalahan terperinci adalah:
C:\MyWorkStuff\Projects\Ruby\MyProject\>git push origin master
Unable to create branch path https://user:[email protected]/myproject/info/
error: cannot lock existing info/refs
fatal: git-http-push failed
Saya kloning sebelumnya, kemudian mengubah kode dan melakukan.
git fetch
sebelumnyagit pull
.Jawaban:
Bagi saya ini berhasil:
git remote prune origin
Karena jawaban ini tampaknya membantu banyak orang, saya menggali sedikit apa yang sebenarnya terjadi di sini. Apa yang akan dilakukan adalah menghapus referensi ke cabang jauh di folder
.git/refs/remotes/origin
. Jadi ini tidak akan memengaruhi cabang lokal Anda dan tidak akan mengubah apa pun dari jarak jauh, tetapi itu akan memperbarui referensi lokal yang Anda miliki ke cabang jauh. Tampaknya dalam beberapa kasus referensi ini dapat berisi data yang tidak dapat ditangani Git dengan benar.sumber
git
disarankan lakukan, tetapi saya enggan melakukannya karena perintahnya terdengar seperti melakukan sesuatu pada remote.git gc --prune=now
Anda ingin mencoba melakukan:
Lihat https://www.kernel.org/pub/software/scm/git/docs/git-gc.html
sumber
git pull
macet dengan pesan kesalahan yang sama.git
perintah yang berhubungan dengan remote.git remote prune origin
menyelesaikan masalah sekali dan untuk semua.Ini terjadi pada saya ketika remote git saya (bitbucket.org) mengubah alamat IP mereka. Perbaikan cepat adalah menghapus dan menambahkan kembali remote, lalu semuanya berfungsi seperti yang diharapkan. Jika Anda tidak terbiasa dengan cara menghapus dan menambahkan kembali remote di git, berikut adalah langkah-langkahnya:
Salin URL git SSH dari remote yang ada. Anda dapat mencetaknya ke terminal menggunakan perintah ini:
git remote -v
yang akan mencetak sesuatu seperti ini:
Hapus remote dari repo git lokal Anda:
git remote rm origin
Tambahkan remote kembali ke repo lokal Anda:
git remote add origin [email protected]:account-name/repo-name.git
sumber
git branch -u origin/master
Menjalankan perintah
git update-ref -d refs/heads/origin/branch
memperbaikinya.sumber
git update-ref -d refs/remotes/origin/my_branch
Saya memperbaikinya dengan melakukan hal berikut
Ini dengan asumsi bahwa cabang lokal dan jauh Anda selaras dan Anda hanya mendapatkan kesalahan referensi sebagai tidak fatal.
sumber
Saya memiliki masalah ini karena saya berada di cabang yang memiliki nama yang mirip dengan cabang hulu. yaitu cabang hulu dipanggil
example-branch
dan cabang lokal saya dipanggilexample-branch/backend
. Solusinya mengubah nama cabang lokal saya seperti:sumber
Apa yang berhasil untuk saya adalah:
.git/logs/refs/remotes/origin/branch
.git/refs/remotes/origin/branch
git gc --prune=now
sumber
Ini mungkin diselesaikan sekarang. Tapi inilah yang bekerja untuk saya.
Lokasi:
Jika repositori yang terkunci ada di sisi server:
Jika repositori yang dikunci hanya lokal:
Jalankan perintah ini:
Perbaiki izin pada repositori (jauh atau / dan lokal) Anda jika perlu. Dalam kasus saya, saya harus
chmod
ke777
danchown
keapache:apache
Cobalah untuk mendorong lagi dari repositori lokal:
sumber
Beginilah cara kerjanya untuk saya.
Alternatif yang lebih cepat:
cat /dev/null > /var/lock/apache2/DAVlock
sumber
#> rm DAVLock; touch DAVLock; chown www-data.www-data DAVLock; chmod 755 DAVLock; service apache2 restart
Ini kedengarannya seperti masalah izin - mungkinkah Anda memiliki dua jendela terbuka, mengeksekusi dengan hak terpisah? Mungkin memeriksa kepemilikan folder .git.
Mungkin periksa untuk melihat apakah ada kunci file yang beredar terbuka, mungkin gunakan lsof untuk memeriksa, atau yang setara untuk OS Anda.
sumber
Dalam kasus saya, cabang dipindahkan ke subdirektori dan direktori tersebut disebut cabang. Git bingung dengan itu. Ketika saya menghapus cabang lokal (di SourceTree hanya dengan klik kanan hapus) semuanya berfungsi seperti biasa.
sumber
Dalam kasus saya setelah mendapatkan pesan ini saya melakukan perintah checkout dan diberi pesan ini:
Setelah menjalankan perintah ini saya kembali normal.
sumber
Memperbarui:
Anda mungkin perlu mengedit file ~ / .netrc Anda:
https://bugs.launchpad.net/ubuntu/+source/git-core/+bug/293553
Jawaban asli:
Mengapa Anda menonaktifkan ssl? Saya pikir ini mungkin ada hubungannya dengan Anda tidak dapat mendorong melalui https. Saya akan mengembalikannya dan mencoba mendorong lagi:
sumber
Pastikan Anda (proses git sebenarnya) memiliki akses ke file
.git/info/refs
dan file ini tidak dikunci oleh proses lain.sumber
Saya mengalami masalah ini, ketika saya mencoba membuat cabang fitur baru yang berisi nama cabang lama, misalnya asal - branch1 dan saya ingin membuat fitur branch1. Itu tidak mungkin, tetapi branch1 / fitur sudah.
sumber
Dalam kasus saya, saya harus menghapus tag lama secara manual yang telah dihapus pada jarak jauh.
sumber
Dalam kasus saya, itu terhubung dengan nama cabang yang sudah saya buat.
Untuk memperbaiki masalah ini saya telah membuat cabang dengan nama yang pasti tidak ada, seperti:
Lalu saya sudah membersihkan semua cabang saya yang lain (tidak aktif) karena mereka hanya sampah yang tidak perlu.
dan kemudian mengganti nama cabang saya saat ini dengan nama yang saya maksudkan, seperti:
sumber
Dalam kasus bettercodes.org, solusinya lebih puitis - satu-satunya masalah adalah hak yang diberikan kepada anggota proyek. Anggota sederhana tidak memiliki hak menulis! Pastikan Anda memiliki hak Moderator atau Administrator. Ini perlu diatur di bettercodes.org di pengaturan proyek oleh Administrator, tentu saja.
sumber
Saya melihat kesalahan ini ketika mencoba menjalankan
git filter-branch
untuk melepaskan banyak subdirektori ke dalam repositori baru yang terpisah (seperti dalam jawaban ini ).Saya mencoba semua solusi di atas dan tidak satupun yang berhasil. Akhirnya, saya memutuskan tidak perlu menyimpan semua tag saya dengan buruk di cabang baru dan hanya berlari:
sumber