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?
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?
Jawaban:
Ini adalah solusi teraman:
git stash
Sekarang Anda dapat melakukan apa pun yang Anda inginkan tanpa takut akan konflik.
Misalnya:
git checkout origin/master
Jika Anda ingin menyertakan perubahan jarak jauh di cabang master yang dapat Anda lakukan:
git reset --hard origin/master
Ini akan membuat Anda bercabang "master" untuk menunjuk ke "asal / master".
git stash; git fetch origin; git reset --hard origin/master
git stash? git stash listkosong.
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
git checkout remote/branch -- a/file b/another/file
Jika Anda ingin melakukan ini untuk subtrees yang luas dan alih-alih ingin memengaruhi indeks, gunakan secara langsung
git read-tree remote/branch:subdir/
Anda kemudian dapat (secara opsional) memperbarui copy pekerjaan Anda dengan melakukan
git checkout-index -u --force
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:
git checkout -- path/filename
Saya akan checkout file jarak jauh dari "master" (repositori remote / asal) seperti ini:
git checkout master <FileWithPath>
Contoh: komponen master checkout git / indexTest.html
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.