Saya memiliki server gitosis jarak jauh dan repositori git lokal, dan setiap kali saya membuat perubahan besar dalam kode saya, saya akan mendorong perubahan ke server itu juga.
Tapi hari ini saya menemukan bahwa meskipun saya memiliki beberapa perubahan lokal dan berkomitmen untuk repositori lokal, ketika menjalankannya git push origin master
tertulis 'Semuanya terbaru', tetapi ketika saya gunakan git clone
untuk checkout file pada server jauh, itu tidak mengandung perubahan terbaru . Dan saya hanya memiliki satu cabang bernama "master" dan satu server jauh bernama "asal".
PS: Ini yang ditampilkan git saat berjalan ls-remote
, saya tidak yakin apakah itu membantu
$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c refs/tags/stage3
commit
saya tidak melihat dan mencoba untuk mendorong kodeJawaban:
Apakah Anda bekerja dengan kepala yang terpisah ?
Seperti dalam:
menunjukkan bahwa komit terbaru Anda bukan kepala cabang.
Peringatan : berikut ini tidak a
git reset --hard
: pastikan untuk menggunakangit stash
terlebih dahulu jika Anda ingin menyimpan file yang sedang dimodifikasi.Seperti yang disebutkan di
git checkout
halaman manual (penekanan saya):sumber
Step 1: git fetch origin git checkout -b "nodeAPI" "origin/nodeAPI" Step 2. Review the changes locally Step 3. Merge and fix conflicts git fetch origin git checkout "origin/master" git merge --no-ff "nodeAPI" Step 4. Push the result of the merge to GitLab git push origin "master"
Saya baik sampai langkah terakhir. Tetapi sekarang saya hanya bingung bagaimana untuk bergerak maju.git branch -f myBranch HEAD
:, lalu periksa cabang tersebut, dan dorong. Dalam kasus Anda,myBranch
mungkinmaster
jika Anda sedang dalam proses penggabungannodeAPI
.Err .. Jika Anda seorang git noob, Anda yakin sudah punya
git commit
sebelumnyagit push
? Saya membuat kesalahan ini pertama kali!sumber
git commit -a -m "your message goes here"
dalam kasus sayagit add -A
,git diff --staged
, gulungan melalui perubahan Hmm tampak sangat baik,git commit -m 'bam!'
,git push
Mungkin Anda sedang mendorong cabang lokal baru?
Cabang lokal baru harus didorong secara eksplisit:
Hanya satu dari hal-hal itu tentang git ... Anda mengkloning repo, membuat cabang, melakukan beberapa perubahan, mendorong ... "Semuanya sudah terbaru". Saya mengerti mengapa itu terjadi, tetapi alur kerja ini sangat tidak ramah bagi pendatang baru.
sumber
Masalah saya adalah bahwa cabang lokal saya memiliki nama yang berbeda dari cabang jarak jauh. Saya dapat mendorong dengan melakukan hal berikut:
$ git push origin local-branch-name:remote-branch-name
(Kredit ke https://penandpants.com/2013/02/07/git-pushing-to-a-remote-branch-with-a-different-name/ )
sumber
Situasi lain yang penting untuk diperhatikan: Jenis status default untuk git adalah Anda bekerja di cabang "master". Dan untuk banyak situasi, Anda hanya akan nongkrong di sana sebagai cabang kerja utama Anda (meskipun beberapa orang suka dan melakukan hal-hal lain).
Bagaimanapun, itu hanya satu cabang. Jadi situasi yang mungkin saya hadapi adalah:
Cabang aktif saya sebenarnya BUKAN cabang master. ... Tapi saya biasanya melakukan perintah:
git push
(dan sebelumnya saya lakukangit push origin master
, jadi itu jalan pintas untuk ITU).Jadi saya biasanya mendorong cabang master ke repo bersama ... yang mungkin merupakan hal yang baik, dalam kasus saya ...
Tetapi saya lupa bahwa perubahan yang telah saya kerjakan belum di cabang utama !!!
Jadi karena itu setiap kali saya mencoba
git push
, dan saya melihat "Semuanya up to date", saya ingin berteriak, tetapi tentu saja, itu bukan kesalahan git! Ini milikku.Jadi sebagai gantinya, saya menggabungkan cabang saya menjadi master, dan kemudian melakukan push, dan semuanya bahagia lagi.
sumber
git push
.Penjelasan
Saya memiliki kesalahan yang sama & menghabiskan berjam-jam mencoba mencari tahu. Akhirnya saya menemukannya. Apa yang saya tidak tahu adalah bahwa mendorong seperti ini
git push origin branch-x
akan mencoba mencari branch-x secara lokal kemudian mendorong ke remote branch-x.Dalam kasus saya, saya memiliki dua url jarak jauh. Saya melakukan checkout dari branch-x ke branch-y ketika mencoba untuk mendorong dari y secara lokal ke x remote. Saya mendapat pesan bahwa semuanya sudah terbaru yang merupakan hal biasa karena saya mendorong ke x dari remote kedua.
Singkat cerita untuk tidak jatuh dalam perangkap semacam ini Anda perlu menentukan sumber referensi dan target ref:
Memperbarui:
Jika Anda harus menjalankan perintah ini setiap kali Anda mendorong cabang Anda, Anda mungkin perlu mengatur hulu antara cabang lokal & jauh Anda dengan yang berikut ini:
Atau
sumber
Lihat jawaban VonC di atas - saya perlu langkah ekstra:
Saya melakukan ini, tetapi ketika saya kemudian mencoba
git push remoterepo master
, katanya "kesalahan: gagal mendorong beberapa referensi. Untuk mencegah Anda kehilangan riwayat, pembaruan yang tidak maju cepat ditolak, Gabungkan perubahan jarak jauh (mis. 'Git pull') sebelum mendorong lagi. "Jadi saya melakukan 'git pull remoterepo master', dan ternyata ada konflik. Saya lakukan
git reset --hard <commit-id>
lagi, menyalin file yang konflik ke folder cadangan, lakukangit pull remoterepo master
lagi, menyalin file yang konflik kembali ke proyek saya, lakukangit commit
, kemudiangit push remoterepo master
, dan kali ini berhasil.Git berhenti mengatakan 'semuanya sudah terbaru' - dan berhenti mengeluh tentang 'maju cepat'.
sumber
Saya telah menghadapi situasi yang sama; ketika saya melakukan perubahan dan mencoba
git push origin master
, dikatakan bahwa semuanya sudah mutakhir.Saya harus ke
git add
file yang diubah dan kemudiangit push origin master
. Mulai bekerja sejak saat itu.sumber
git commit
menambahkan file itu sebelum mendorong?Dari status git Anda, Anda mungkin memiliki situasi yang berbeda dari saya.
Tapi bagaimanapun, inilah yang terjadi pada saya .. Saya menemukan kesalahan berikut:
Pesan yang lebih informatif di sini adalah bahwa jarak jauh terputus. Ternyata itu karena melebihi ukuran buffer postingan http. Solusinya adalah meningkatkannya dengan
git config http.postBuffer 524288000
sumber
Saya memiliki masalah ini hari ini dan tidak ada hubungannya dengan jawaban lain. Inilah yang saya lakukan dan bagaimana saya memperbaikinya:
Sebuah repositori milik saya baru-baru ini dipindahkan, tetapi saya memiliki salinan lokal. Saya bercabang dari cabang "master" lokal saya dan membuat beberapa perubahan - dan kemudian saya ingat bahwa repositori telah pindah. Saya biasa
git remote set-url origin https://<my_new_repository_url>
mengatur URL baru tetapi ketika saya mendorongnya hanya akan mengatakan "Semuanya up to date" daripada mendorong cabang baru saya untuk dikuasai.Saya akhirnya menyelesaikannya dengan memunculkan kembali
origin/master
dan kemudian mendorong dengan nama cabang eksplisit, seperti ini:Saya harap ini membantu siapa saja yang memiliki masalah yang sama!
sumber
Sangat jarang - tetapi tetap: Di Windows, mungkin paket -ref memiliki cabang dengan satu case huruf (mis. Dev / mybranch), sedangkan folder refs memiliki case lain (mis. Dev / mybranch) ketika core.ignorecase disetel ke true .
Solusinya adalah secara manual menghapus baris yang relevan dari ref-ref . Tidak menemukan solusi yang lebih bersih.
sumber
Saya mengalami sendiri hal ini ketika saya menggabungkan cabang di Github dan terus mengembangkannya secara lokal. Perbaikan saya sedikit berbeda dari yang lain yang telah disarankan.
Pertama saya bercabang cabang lokal baru dari cabang lokal lama saya (yang saya tidak bisa dorong). Lalu saya mendorong cabang lokal baru ke server asal (Github). Yaitu
Ini membuat perubahan muncul di Github, meskipun di newlocalbranch daripada oldlocalbranch.
sumber
Dalam kasus saya, saya punya 2 repo jarak jauh.
Kedua repo itu sama. Hanya satu yang
https
lainssh
. Jadi menghapus yang tidak diinginkan, (Dalam kasus sayassh
. Karena saya menggunakanhttps
karenassh
tidak berfungsi!) Memperbaiki masalah bagi saya.sumber
Kesalahan saya berbeda dari semua yang disebutkan sejauh ini. Jika Anda tidak tahu mengapa Anda memiliki kepala yang terpisah, maka Anda mungkin tidak. Saya sedang mengerjakan autopilot dengan
git commit
dangit push
, dan belum membaca keluaran darigit commit
. Ternyata, itu adalah pesan kesalahan karena saya lupa -am.Memperbaikinya dengan meletakkan di
-am
tempat yang biasanya saya lakukan:sumber
Saya telah menghadapi masalah yang sama. Karena saya tidak menambahkan perubahan ke area pementasan. Dan saya langsung mencoba mendorong kode ke repo jarak jauh menggunakan perintah:
git push origin master
Dan itu menunjukkan pesannya
Everything up-to-date
.untuk memperbaiki masalah ini, coba langkah-langkah ini
git add .
git commit -m "Bug Fixed"
git push -u origin master
sumber
Pastikan Anda belum melakukan kesalahan pada URL jauh Anda.
Saya hanya ingin juga menyebutkan bahwa saya mengalami ini setelah mengaktifkan Git sebagai CVS di konfigurasi build Jenkins lokal. Tampaknya Jenkins memeriksa komit terbaru dari cabang yang saya berikan dan juga mengatur ulang remote saya agar sesuai dengan jalur yang saya berikan ke repo. Harus checkout cabang fitur saya lagi dan memperbaiki url remote asal saya dengan 'git remote set-url'. Jangan menunjuk alat build ke direktori kerja Anda atau Anda akan memiliki waktu yang buruk. Remote saya disetel ke path file ke direktori kerja saya, jadi secara alami melaporkan semuanya up-to-date ketika saya mencoba untuk mendorong perubahan dengan sumber dan tujuan yang sama.
sumber
Kemungkinan lain adalah Anda memberi nama direktori di file .gitignore Anda yang dikecualikan. Jadi komitmen baru tidak akan didorong. Itu terjadi pada saya bahwa saya menamakan direktori untuk mengabaikan "pencarian", tapi itu juga direktori di pohon sumber saya.
sumber
Ada cara cepat yang saya temukan. Buka folder .git Anda, buka
HEAD
file dan ubah cabang apa pun yang Anda kuasai. Misalnya ref:refs/heads/master
sumber
refs/heads/master
merusak repositori saya. Tapi pengaturan ke apa yang saya pikir menjadi KEPALA komit memberikan pesan berikut:Warning: you are leaving 1 commit behind, not connected to any of your branches
. Saya dapat mengambil komit ke cabang baru dan menggabungkannya kembali ke master.Saya memiliki masalah yang sama. Dalam kasus saya itu disebabkan oleh harusnya nama untuk remote yang sama. Itu menciptakan 'asal' standar, tapi saya sudah menggunakan 'github' sebagai remote saya untuk waktu yang lama, jadi itu juga ada di sana. Segera setelah saya menghapus remote 'asal', kesalahan hilang.
sumber
Saya mengalami ini (komit di git log saya tidak ada di GitHub meskipun git mengatakan semuanya sudah terbaru) dan saya yakin masalahnya adalah Github. Saya tidak mendapatkan pesan kesalahan di git, tetapi GitHub memiliki kesalahan status dan komit saya ada beberapa jam kemudian.
https://status.github.com/messages
Pesan status GitHub adalah:
sumber
Lain kesalahan saya yang sangat sederhana namun noobish: Saya hanya lupa menambahkan
-m
pengubah pesan di komit saya. Jadi saya menulis:Alih-alih benar:
CATATAN: Ini TIDAK menimbulkan kesalahan! Tetapi Anda tidak akan bisa mendorong komitmen Anda dan selalu mendapatkan
Everything up to date
sebaliknyasumber
di sini, solusi saya berbeda dari yang di atas. saya belum menemukan bagaimana masalah ini terjadi, tetapi saya memperbaikinya. sedikit tak terduga.
sekarang datang jalan:
perintah yang bekerja untukku adalah
$git push origin HEAD:use_local_cache
(Harap kalian segera keluar dari masalah ini)
sumber
Saya tahu ini sangat tua, tetapi dalam kasus saya, saya memperbaikinya dengan cepat.
Saya mendapatkan kesalahan yang sama saat menjadi salah satu komit depan
master
. Kemudian saya menemukan posting Stack Overflow saat ini. Namun sebelum melanjutkan dengan ide-ide yang disarankan, saya hanya memutuskan untuk membuat komitmen baru dan mencoba lagi dengan dorongan ke asal dan itu bekerja dengan lancar.Saya tidak tahu mengapa, tapi mungkin itu berguna untuk orang lain.
sumber
Kemungkinan lain adalah bahwa Anda memiliki komit yang tidak memengaruhi direktori yang Anda dorong. Jadi dalam kasus saya, saya memiliki struktur seperti
Dan saya membuat komitmen untuk menguasai modifikasi
README.md
, lalu berlarigit subtree push --prefix client heroku-client master
dan menerima pesanEverything up-to-date
sumber
Saya bekerja dengan Jupyter-Notebook ketika saya menemukan kesalahan tipuan ini.
Saya tidak dapat menyelesaikan melalui solusi yang disediakan di atas karena saya tidak memiliki kepala yang terpisah juga tidak memiliki nama yang berbeda untuk repo lokal dan jarak jauh saya .
Tapi apa yang saya miliki adalah ukuran file saya sedikit lebih besar dari 1MB dan yang terbesar hampir ~ 2MB . Saya mengurangi ukuran file menggunakan Bagaimana saya bisa mengurangi ukuran file notebook iPython saya?teknik. Ini membantu mengurangi ukuran file saya dengan membersihkan output. Saya bisa mendorong kode, selanjutnya karena membawa ukuran file saya di KB.
sumber