Bagaimana saya bisa memberitahu git untuk mengabaikan file lokal saya dan mengambil yang dari cabang jarak jauh saya tanpa mencoba untuk menggabungkan dan menyebabkan konflik?
Akan sangat membantu jika Anda bisa memberikan lebih banyak detail. Apakah Anda ingin mengadopsi konten semua file dari cabang jarak jauh, atau hanya beberapa file (yaitu menyimpan beberapa versi / perubahan lokal)? Apakah Anda memiliki riwayat lokal yang ingin Anda simpan? (Ini mungkin penting jika ada cabang atau repositori lain yang telah memasukkan sejarah lokal Anda.) Jika Anda ingin menyimpan sejarah lokal Anda, apa yang Anda rencanakan untuk dilakukan nanti? (Anda dapat meninggalkan tag yang menunjuk ke sejarah lokal dan setel ulang cabang Anda ke apa yang dimiliki jarak jauh, atau Anda mungkin ingin "menggabungkannya").
Mungkin perlu menunjukkan bahwa ini akan melepaskan KEPALA - penanya mungkin lebih memilih untuk tetap di cabang dengangit stash; git fetch origin; git reset --hard origin/master
Mark Longair
10
Saya pikir komentar Mark Longair adalah jawaban aktual untuk pertanyaan ini
itu adalah jawaban paling berguna bagi saya +1
Andres
Bagaimana cara kembali ke negara sebelum git stash? git stash listkosong.
Leo
Saya ingin memeluk Anda
Ugur Kazdal
45
Saya mengerti pertanyaannya seperti ini: Anda ingin sepenuhnya mengganti konten dari satu file (atau pilihan) dari hulu. Anda tidak ingin memengaruhi indeks secara langsung (jadi Anda harus melalui add + commit seperti biasa).
Pemahaman saya adalah bahwa, misalnya, Anda salah menyimpan file yang telah Anda perbarui hanya untuk tujuan pengujian. Kemudian, ketika Anda menjalankan "git status" file tersebut muncul sebagai "Dimodifikasi" dan Anda mengucapkan beberapa kata-kata buruk. Anda hanya ingin versi lama kembali dan terus bekerja secara normal.
Dalam skenario itu, Anda bisa menjalankan perintah berikut:
Bagi saya bekerja seperti ini "git checkout remote / origin / master <my-file>"
saravanakumar
4
Gunakan opsi -satau --strategydikombinasikan dengan -Xopsi. Dalam pertanyaan spesifik Anda, Anda ingin menyimpan semua file jarak jauh dan mengganti file lokal dengan nama yang sama.
Ganti konflik dengan versi jarak jauh
git merge -s recursive -Xtheirs upstream/master
akan menggunakan versi repo jarak jauh dari semua file yang bertentangan.
Ganti konflik dengan versi lokal
git merge -s recursive -Xours upstream/master
akan menggunakan versi repo lokal dari semua file yang bertentangan.
git merge -s their
.Jawaban:
Ini adalah solusi teraman:
Sekarang Anda dapat melakukan apa pun yang Anda inginkan tanpa takut akan konflik.
Misalnya:
Jika Anda ingin menyertakan perubahan jarak jauh di cabang master yang dapat Anda lakukan:
Ini akan membuat Anda bercabang "master" untuk menunjuk ke "asal / master".
sumber
git stash; git fetch origin; git reset --hard origin/master
git stash
?git stash list
kosong.Saya mengerti pertanyaannya seperti ini: Anda ingin sepenuhnya mengganti konten dari satu file (atau pilihan) dari hulu. Anda tidak ingin memengaruhi indeks secara langsung (jadi Anda harus melalui add + commit seperti biasa).
Lakukan saja
Jika Anda ingin melakukan ini untuk subtrees yang luas dan alih-alih ingin memengaruhi indeks, gunakan secara langsung
Anda kemudian dapat (secara opsional) memperbarui copy pekerjaan Anda dengan melakukan
sumber
Pemahaman saya adalah bahwa, misalnya, Anda salah menyimpan file yang telah Anda perbarui hanya untuk tujuan pengujian. Kemudian, ketika Anda menjalankan "git status" file tersebut muncul sebagai "Dimodifikasi" dan Anda mengucapkan beberapa kata-kata buruk. Anda hanya ingin versi lama kembali dan terus bekerja secara normal.
Dalam skenario itu, Anda bisa menjalankan perintah berikut:
sumber
Saya akan checkout file jarak jauh dari "master" (repositori remote / asal) seperti ini:
Contoh: komponen master checkout git / indexTest.html
sumber
Gunakan opsi
-s
atau--strategy
dikombinasikan dengan-X
opsi. Dalam pertanyaan spesifik Anda, Anda ingin menyimpan semua file jarak jauh dan mengganti file lokal dengan nama yang sama.Ganti konflik dengan versi jarak jauh
akan menggunakan versi repo jarak jauh dari semua file yang bertentangan.
Ganti konflik dengan versi lokal
akan menggunakan versi repo lokal dari semua file yang bertentangan.
sumber