Bagaimana saya mengabaikan pesan kesalahan berikut pada Git pull?
Perubahan lokal Anda ke file berikut ini akan ditimpa oleh gabungan
Bagaimana jika saya ingin menimpa mereka?
Saya sudah mencoba hal-hal seperti git pull -f
, tetapi tidak ada yang berhasil.
Agar jelas, saya hanya ingin menimpa perubahan spesifik, bukan segalanya.
git config core.fileMode false
hemat waktu sayaJawaban:
Jika Anda ingin menghapus semua perubahan lokal - termasuk file yang tidak dapat dilacak oleh git - dari copy pekerjaan Anda, cukup sembunyikan saja:
Jika Anda tidak membutuhkannya lagi, Anda sekarang dapat membuang simpanan itu:
Jika Anda tidak ingin menyembunyikan perubahan yang sudah Anda lakukan - misalnya dengan
git add
- lalu tambahkan opsi--keep-index
. Namun perlu dicatat, bahwa ini masih akan mencegah penggabungan jika perubahan bertahap tersebut bertabrakan dengan yang dari hulu.Jika Anda ingin menimpa hanya bagian tertentu dari perubahan lokal Anda, ada dua kemungkinan:
Komit semua yang tidak ingin Anda timpa dan gunakan metode di atas untuk sisanya.
Gunakan
git checkout path/to/file/to/revert
untuk perubahan yang ingin Anda timpa. Pastikan file tersebut tidak dipentaskan melaluigit reset HEAD path/to/file/to/revert
.sumber
git checkout HEAD^ path/to/file/to/revert
. Menggunakan HEAD ^ membuat semua perbedaan.save --keep-index
".Baiklah dengan bantuan dua jawaban lain saya telah datang dengan solusi langsung:
sumber
Ini berfungsi bagi saya untuk mengesampingkan semua perubahan lokal dan tidak memerlukan identitas:
sumber
Berikut adalah solusi yang membuang perubahan bertahap:
sumber
Anda dapat melakukan perubahan sebelum melakukan penggabungan, atau menyimpannya:
git stash save
git merge origin/master
git stash pop
sumber
--autostash
opsi hanya tersedia dengan--rebase
opsi (Jika Anda ingin membuang perubahan lokal Anda pada satu file Anda dapat melakukan hal berikut:
Maka Anda dapat menimpa file dengan versi terbaru hanya dengan melakukan:
sumber
git reset HEAD~
dan kemudian lakukangit checkout
git checkout -- <file>
gagal denganerror: pathspec '<file>' did not match any file(s) known to git.
Jika repositori Anda berisi beberapa file yang dihapus dari
master
:git checkout master
git fetch origin
git reset --hard origin/master
git checkout -b newbranch
sumber
Terkadang, tidak ada yang berhasil. Mengganggu, karena hal LF saya pikir, apa yang akan berhasil adalah menghapus file, lalu menarik. Bukannya saya merekomendasikan solusi ini, tetapi jika file tidak ada, git tidak akan memberi tahu Anda bahwa perubahan Anda (yang mungkin bukan perubahan) akan ditimpa, dan akan membiarkan Anda melanjutkan.
Gunakan dengan risiko Anda sendiri.
sumber
git stash save --keep-index
tidak bekerja untuk saya.perintah di bawah ini berfungsi seperti yang diharapkan.
Itu menimpa semua perubahan lokal jika Anda tidak membutuhkannya.
sumber
Begitu banyak jawaban di sini yang saya benci menambahkan satu lagi, tetapi semua di atas adalah clunkier daripada yang seharusnya. Saya harus melakukan ini sepanjang waktu karena Git tampaknya menjadi bingung dan mengatakan saya telah memodifikasi file yang tidak berubah (tidak dapat kembali karena mereka tidak berubah, tetapi saya tidak dapat menarik karena mereka seharusnya telah berubah) Sederhana dan tercepat yang saya temukan sejauh ini adalah:
sumber
Di Git baru-baru ini, Anda dapat menambahkan
-r
/--rebase
padapull
perintah untuk rebase cabang Anda saat ini di atas cabang hulu setelah mengambil. Peringatan itu seharusnya hilang, tetapi ada risiko Anda akan mendapatkan beberapa konflik yang harus Anda selesaikan.Atau Anda dapat mengecek cabang berbeda dengan paksa, lalu kembali
master
lagi, misalnya:Kemudian tarik lagi seperti biasa:
Menggunakan metode ini dapat menghemat waktu Anda dari menyembunyikan (
git stash
) dan kemungkinan masalah izin, mengatur ulang file (git reset HEAD --hard
), menghapus file (git clean -fd
), dll. Juga hal di atas lebih mudah diingat.sumber
Masalah ini adalah karena Anda telah membuat perubahan secara lokal ke file / s dan file yang sama ada dengan perubahan dalam repositori Git, jadi sebelum menarik / mendorong Anda perlu menyimpan perubahan lokal:
Untuk menimpa perubahan lokal dari satu file:
Untuk menimpa semua perubahan lokal (perubahan dalam semua file):
Juga masalah ini mungkin karena Anda berada di cabang yang tidak digabungkan dengan cabang master.
sumber
git reset --hard && git clean -df
Perhatian : Ini akan mengatur ulang dan menghapus file yang tidak terlacak.
sumber
Anda dapat menggunakan ini untuk menimpa file
sumber
Cara terbaik untuk mengatasi masalah ini adalah:
Setelah itu, Anda dapat menimpa file dengan:
sumber
git checkout -- path/*
sekali saja, dan itu memungkinkan saya untuk melakukan tarikan setelah.Ini berhasil bagi saya untuk membuang perubahan pada server remote langsung dan menarik dari kontrol sumber GitHub:
sumber
Inilah strategi saya untuk menyelesaikan masalah.
Pernyataan masalah
Kami perlu melakukan perubahan di lebih dari 10 file. Kami mencoba
PULL (git pull origin master)
, tetapi Git berteriak:Kami mencoba mengeksekusi
commit
dan kemudianpull
, tetapi mereka juga tidak berhasil.Larutan
Kami sebenarnya berada di tahap kotor , karena file-file berada di "Staging Area" alias "Area Indeks" dan beberapa berada di "Head Area" alias "direktori Git lokal". Dan kami ingin menarik perubahan dari server.
Periksa tautan ini untuk informasi tentang berbagai tahapan Git dengan cara yang jelas: Tahapan GIT
Kami mengikuti langkah-langkah berikut
git stash
(ini membuat direktori kerja kami bersih. Perubahan Anda disimpan di stack oleh Git).git pull origin master
(Tarik perubahan dari server)git stash apply
(Diterapkan semua perubahan dari tumpukan)git commit -m 'message'
(Mengkomit perubahan)git push origin master
(Mendorong perubahan ke server)git stash drop
(Jatuhkan tumpukan)Mari kita pahami kapan dan mengapa Anda perlu menyembunyikan
Jika Anda dalam keadaan kotor , berarti Anda membuat perubahan pada file Anda dan kemudian Anda terpaksa, karena alasan apa pun, untuk menarik atau beralih ke cabang lain untuk beberapa pekerjaan yang sangat mendesak, jadi pada titik ini Anda tidak dapat menarik atau beralih sampai Anda melakukan perubahan Anda. The
stash
perintah di sini sebagai tangan membantu.Dari buku ProGIT , Edisi ke-2:
sumber
Jika Anda ingin menimpa perubahan tertentu, Anda perlu beberapa cara untuk mengatakannya mana yang ingin Anda lupakan.
Anda dapat mencoba menyimpan perubahan yang ingin Anda abaikan dengan menggunakan
git stash --patch
dan kemudian menyimpan simpanan itu secara selektifgit stash drop
. Anda kemudian dapat menarik perubahan jarak jauh dan menggabungkannya seperti biasa.sumber
TL; DR;
Saya tidak tahu mengapa ini belum dijawab, tetapi solusi, seperti yang Anda lihat sederhana. Semua jawaban di sini menyarankan hal yang sama: untuk menghapus / menyimpan perubahan lokal Anda dan menerapkan upstream, lalu (jika Anda
save
) menerapkan perubahan lokal Anda di atas.Apa yang
git pull --rebase --autostash
dilakukan langkah demi langkah:Kasus saya (mungkin juga Anda):
Saya memiliki perubahan lokal (perubahan di direktori kerja):
Ketika saya mencoba untuk menarik perubahan jarak jauh saya mendapatkan kesalahan:
Perubahan ini tidak berpotongan dengan perubahan lokal:
Jadi ketika saya
pull --rebase --autostash
perubahan lokal disimpan dan diterapkan tanpa masalah secara otomatisSekarang perubahan lokal saya sedikit lebih rendah:
sumber
Saya punya kasus khusus ini: Saya punya file dengan --assume-tidak berubah. Sulit ditemukan, karena
git status
perintah tidak menunjukkan perubahansumber
Jika Anda ingin menyimpan perubahan produksi di server, cukup gabungkan menjadi item konfigurasi baru. Metode pemrosesan adalah sebagai berikut:
Mungkin Anda tidak menjalankan semua operasi. Anda bisa tahu apa yang bisa Anda lakukan selanjutnya.
sumber
Saya mengabaikan file di repo saya dan ketika saya melakukannya
git pull upstream master
saya mendapat kesalahan berikut:Untuk mengatasinya saya melakukan hal berikut
Saya kemudian melakukannya
git status
dan menerima pesan iniKemudian saya
git checkout myfile.js
diikuti olehgit pull upstream master
. Kali ini operasi git pull berhasil.sumber
Saya menemukan ini ketika menarik dari master.
Cara saya menanganinya, menggunakan Visual Studio;
Semoga ini membantu!
sumber
Solusi paling sederhana adalah:
sumber
Saya baru di git dan tidak yakin apakah solusi saya adalah ide yang bagus.
Saya telah menguji SEMUA jawaban dan tidak satupun yang berhasil untuk saya!
Tetapi saya menemukan solusi lain:
Semoga ini membantu.
sumber
Kesalahan "Perubahan lokal Anda ke file berikut akan ditimpa oleh gabungan" muncul karena Anda memiliki beberapa perubahan pada repo lokal yang belum pernah dilakukan, jadi sebelum menarik dari repo jarak jauh, cukup lakukan perubahan pada repo lokal.
Katakanlah repo jarak jauh Anda memiliki beberapa cabang xyz dan Anda ingin agar cabang repo xyz jarak jauh digabungkan menjadi (disalin ke) cabang repo xyz lokal,
sumber
Jika kesalahan ini karena akhir baris,
akan bekerja. Saya tidak begitu yakin mengapa itu berhasil.
sumber
Untuk Pycharm, Anda dapat melakukan Git -> Kembalikan dan kemudian tarik.
sumber
Pesan ini juga bisa terjadi jika
git-lfs
digunakan dan penunjuk file ditimpa oleh file nyata.maka Anda menggunakan:
output penuh dari kasing saya
lihat https://github.com/git-lfs/git-lfs/issues/2839
sumber
Saya sudah mencoba dan berhasil, sebelum menarik, biarkan komit semua file yang belum Anda komit, maka Anda tidak akan menerima pesan itu dari AS.
sumber