Saya membuat beberapa pembaruan pada mesin lokal saya, mendorongnya ke repositori jarak jauh, dan sekarang saya mencoba untuk menarik perubahan ke server dan saya mendapatkan pesan;
kesalahan: Perubahan lokal Anda ke file berikut akan ditimpa oleh gabungan:
wp-content / w3tc-config / master.php
Tolong, komit perubahan Anda atau simpan sebelum Anda dapat bergabung.
Jadi saya berlari,
git checkout -- wp-content/w3tc-config/master.php
dan mencoba lagi dan saya mendapatkan pesan yang sama. Saya berasumsi bahwa w3tc
mengubah sesuatu dalam file konfigurasi di server. Saya tidak peduli apakah salinan lokal atau salinan jarak jauh berjalan di server (saya kira yang jauh adalah yang terbaik), saya hanya ingin dapat menggabungkan sisa perubahan saya (pembaruan plugin).
Ada ide?
Jawaban:
Anda tidak dapat bergabung dengan modifikasi lokal. Git melindungi Anda dari kehilangan kemungkinan perubahan penting.
Anda memiliki tiga opsi:
Komit perubahan menggunakan
Simpan itu.
Menyimpan berfungsi sebagai tumpukan, tempat Anda dapat mendorong perubahan, dan Anda membuatnya terbalik.
Untuk menyimpan, ketikkan
Lakukan penggabungan, lalu tarik simpanan:
Buang perubahan lokal
menggunakan
git reset --hard
atau
git checkout -t -f remote/branch
Atau: Buang perubahan lokal untuk file tertentu
menggunakan
git checkout filename
sumber
git reset --hard
Anda mungkin juga ingin menghapus file yang tidak terlacak dengangit clean -dfx
git stash
tidak akan menyimpan file yang tidak ada riwayatnya. Jadi jika Anda memiliki file yang belum Anda tambahkan tetapi yang akan ditimpa atau "dibuat" oleh penggabungan, maka gabungan tersebut akan tetap memblokir. Dalam situasi itu, Anda dapat menggunakangit stash -u
untuk menyimpan file yang tidak dikomit juga. Atau Anda bisa menghapusnya!git clean -dfx
adalah ide yang buruk. Menghapus beberapa file .gitignored yang sebenarnya saya butuhkan.git reset --hard
, masih memiliki perubahan yang tidak dihapus!Perintah pertama menyimpan perubahan Anda sementara di simpanan dan menghapusnya dari direktori kerja.
Perintah kedua beralih cabang.
Perintah ketiga mengembalikan perubahan yang telah Anda simpan di simpanan (
--index
opsi berguna untuk memastikan bahwa file yang dipentaskan masih dipentaskan).sumber
git stash pop
bukangit stash apply
. Yang pertama menghapusnya dari simpanan sementara yang terakhir masih menyimpannya di sanaAnda dapat mencoba salah satu metode berikut:
rebase
Untuk perubahan sederhana cobalah rebasing di atasnya sambil menarik perubahan, misalnya
Jadi itu akan menerapkan cabang Anda saat ini di atas cabang hulu setelah mengambil.
Ini setara dengan:
checkout master
,fetch
danrebase origin/master
perintah git.Periksa
Jika Anda tidak peduli dengan perubahan lokal Anda, Anda dapat beralih ke cabang lain sementara (dengan paksa), dan mengubahnya kembali, misalnya
atur ulang
Jika Anda tidak peduli dengan perubahan lokal Anda, cobalah untuk mengatur ulang ke HEAD (kondisi asal), mis
Jika di atas tidak akan membantu, itu mungkin aturan dalam file normalisasi git Anda (
.gitattributes
) jadi lebih baik untuk melakukan apa yang dikatakannya. Atau sistem file Anda tidak mendukung izin, jadi Anda harus menonaktifkanfilemode
di konfigurasi git Anda.Terkait: Bagaimana cara memaksa "git pull" untuk menimpa file lokal?
sumber
git status
perubahan apa yang Anda miliki setelah menyimpan. Jika tidak ada jawaban yang membantu, pertimbangkan untuk menambahkan pertanyaan baru.Coba ini
dan coba tarik lagi
sumber
git stash -u
, seperti yang dikomentari di stackoverflow.com/questions/15745045/…Jadi situasi yang saya temui adalah sebagai berikut:
kecuali, tepat sebelum itu, jauh: jadi sebenarnya ini:
Apa yang terjadi adalah (saya pikir, bukan 100% positif) git post hook menerima mulai berjalan dan mengacaukan karena perubahan gerakan dalam repositori server jarak jauh, yang secara teori, seharusnya tidak disentuh.
Jadi apa yang akhirnya saya lakukan dengan menelusuri kait pasca-terima dan menemukan ini, harus pergi ke repositori jarak jauh di server, dan ada perubahan (yang tidak ada di repositori lokal saya, yang, pada kenyataannya, mengatakan bahwa itu cocok, tidak ada perubahan, tidak ada komitmen, mutakhir, dll.) Jadi sementara di lokal, tidak ada perubahan, di server, saya kemudian melakukan
git checkout -- some/file.ext
dan kemudian repositori lokal dan jarak jauh benar-benar cocok dan saya bisa terus bekerja, dan gunakan. Tidak sepenuhnya yakin bagaimana situasi ini terjadi, meskipun beberapa pengembang ditambah perubahan IT mungkin ada hubungannya dengan itu.sumber
PERINGATAN: Ini akan menghapus file yang tidak terlacak, jadi itu bukan jawaban yang bagus untuk pertanyaan ini.
Dalam kasus saya, saya tidak ingin menyimpan file, jadi ini bekerja untuk saya:
Git 2.11 dan yang lebih baru:
Git yang lebih tua:
Referensi: http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x berarti file yang diabaikan juga dihapus serta file yang tidak diketahui git.
-d berarti menghapus direktori yang tidak dilacak selain file yang tidak dilacak.
-f diperlukan untuk memaksanya berjalan.
sumber
Untuk menyimpan file Anda yang baru dibuat saat menyelesaikan masalah ini:
Jika Anda memiliki file yang baru dibuat , Anda dapat membuat tambalan perubahan lokal, menarik penggabungan jarak jauh dan menerapkan tambalan lokal Anda setelah penggabungan jauh selesai seperti yang didefinisikan langkah demi langkah di bawah ini:
git add .
git diff --cached > mypatch.patch
git reset --hard
git pull
git apply mypatch.patch
Git akan menggabungkan perubahan dan membuat file .rej untuk perubahan yang tidak digabungkan.
Seperti yang disarankan oleh Anu, jika Anda memiliki masalah menerapkan tambalan, coba:
git apply --reject --whitespace=fix mypatch.patch
Git jawaban ini : tambalan tidak menerapkan pembicaraan secara detail tentang masalah iniNikmati pekerjaan lanjutan Anda pada fitur Anda, dan komit perubahan lokal Anda ketika selesai.
sumber
error: patch failed: yourfile.py:33 error: yourfile.py: patch does not apply
:, saya masih memiliki mypatch.patch, tetapi tidak tahu mengapa itu tidak diterapkan dan saya kehilangan perubahan saya !git apply --reject --whitespace=fix mypatch.patch
, saya mendapatkan perubahan saya kembali phew !!! [Terima kasih] ( stackoverflow.com/a/15375869/6484358 )Meminta komit sebelum menarik
Jika diperlukan :
sumber
Bagi saya, hanya
git reset --hard
berhasil.Berkomitmen bukanlah pilihan, karena tidak ada komitmen.
Menyimpan bukanlah pilihan karena tidak ada yang perlu disimpan.
Sepertinya itu bisa dari file yang dikecualikan
.git/info/exclude
dan memilikigit update-index --assume-unchanged <file>
beberapa file.sumber
Dalam kasus saya, saya mencadangkan dan kemudian menghapus file yang dikeluhkan Git, dikomit, kemudian akhirnya saya bisa memeriksa cabang lain.
Saya kemudian mengganti file, menyalin kembali konten dan melanjutkan seolah-olah tidak ada yang terjadi.
sumber
Ini mungkin disebabkan oleh masalah CRLF.
Lihat: Mengapa saya harus menggunakan core.autocrlf = true di Git?
Gunakan ini untuk menarik dan memaksa pembaruan:
sumber
Saya mencoba jawaban pertama:
git stash
dengan skor tertinggi tetapi pesan kesalahan masih muncul, dan kemudian saya menemukan artikel ini untuk melakukan perubahan alih-alih simpanan 'Reluctant Commit'dan pesan kesalahan akhirnya hilang:
1:
git add .
2:
git commit -m "this is an additional commit"
3:
git checkout the-other-file-name
lalu berhasil. semoga jawaban ini membantu. :)
sumber
Jika Anda menggunakan Git Extensions Anda seharusnya dapat menemukan perubahan lokal Anda seperti pada gambar di
Working directory
bawah ini:Jika Anda tidak melihat perubahan, itu mungkin karena Anda salah sub-modul. Jadi, periksa semua item dengan ikon kapal selam seperti yang ditunjukkan di bawah ini:
Ketika Anda menemukan beberapa perubahan yang tidak dikomit:
Pilih garis dengan
Working directory
, navigasikan ke tab Diff , Klik kanan pada baris dengan ikon pensil (atau+
atau-
), pilih Reset untuk pertama melakukan atau komit atau simpanan atau apa pun yang ingin Anda lakukan dengannya.sumber
Bagi saya ini berhasil:
git reset --hard
lalu
git pull origin <*current branch>
setelah itu
git checkout <*branch>
sumber
Mungkin
akan membantu
sumber