Git pull sambil mengabaikan perubahan lokal?

Apakah ada cara untuk melakukan git pull yang mengabaikan perubahan file lokal tanpa meniup direktori, dan harus melakukan git clone ?

265
11 нояб. diatur oleh markdorison 11 nov. 2010-11-11 20:19 '10 pada 20:19 2010-11-11 20:19
@ 7 jawaban

Jika Anda ingin menonaktifkan perubahan lokal, lakukan penggabungan, seolah-olah pohon kerja bersih, yah, bersihkan pohon kerja:

 git reset --hard git pull 

Jika ada file lokal yang tidak diverifikasi, Anda dapat menggunakan git clean untuk menghapusnya. Gunakan git clean -f untuk menghapus file yang tidak diproses, -df untuk menghapus file dan direktori yang -df , dan -xdf untuk menghapus file atau direktori yang -xdf atau diabaikan.

Sebaliknya, jika Anda ingin menyimpan perubahan lokal, Anda harus menggunakan cache untuk menyembunyikannya sebelum menarik, dan kemudian menerapkannya kembali setelah:

 git stash git pull git stash pop 

Saya tidak berpikir masuk akal untuk benar-benar mengabaikan perubahan, meskipun setengah dari peregangan adalah penggabungan, dan dia perlu menggabungkan versi konten yang sempurna dengan versi yang dia ekstrak.

463
11 нояб. Jawabannya diberikan oleh Jefromi pada 11 November. 2010-11-11 20:25 '10 jam 8:25 malam 2010-11-11 20:25

Bagi saya itu berhasil:

(1) Pertama pilih semua perubahan:

 $ git fetch --all 

(2) Kemudian reset master:

 $ git reset --hard origin/master 

(3) Tarik / perbarui:

 $ git pull 
110
23 марта '15 в 11:42 2015-03-23 11:42 jawabannya diberikan oleh Artur Barseghyan 23 Maret '15 pukul 11:42 2015-03-23 ​​11:42

Perintah di bawah ini biasanya tidak berfungsi . Jika Anda hanya:

 $ git checkout thebranch Already on 'thebranch' Your branch and 'origin/thebranch' have diverged, and have 23 and 7 different commits each, respectively. $ git reset --hard HEAD is now at b05f611 Here the commit message bla, bla $ git pull Auto-merging thefile1.c CONFLICT (content): Merge conflict in thefile1.c Auto-merging README.md CONFLICT (content): Merge conflict in README.md Automatic merge failed; fix conflicts and then commit the result. 

dan seterusnya

Untuk benar-benar memulai dengan mengunduh cabang dan menimpa semua perubahan lokal Anda, lakukan saja:


 $ git checkout thebranch $ git reset --hard origin/thebranch 

Ini akan bekerja dengan baik.

 $ git checkout thebranch Already on 'thebranch' Your branch and 'origin/thebranch' have diverged, and have 23 and 7 different commits each, respectively. $ git reset --hard origin/thebranch HEAD is now at 7639058 Here commit message again... $ git status # On branch thebranch nothing to commit (working directory clean) $ git checkout thebranch Already on 'thebranch' 
14
24 нояб. Jawabannya diberikan oleh Dr Beco pada 24 November. 2014-11-24 03:10 '14 pada 3:10 2014-11-24 03:10

Jika Anda berada di Linux:

 git fetch for file in `git diff origin/master..HEAD --name-only`; do rm -f "$file"; done git pull 

For loop akan menghapus semua file terlacak yang telah diubah di repo lokal, jadi git pull akan bekerja tanpa masalah.
Hal yang paling menyenangkan tentang ini adalah hanya file pelacakan yang akan ditimpa oleh file dalam repo, semua file lain akan tetap utuh.

7
06 нояб. jawaban yang diberikan oleh Strahinja Kustudic 06 November 2012-11-06 02:40 '12 pada 2:40 2012-11-06 02:40

Lihatlah simpanan git untuk meletakkan semua perubahan lokal Anda di "file-dienkripsi" dan kembali ke komit terakhir. Pada titik ini, Anda dapat menerapkan perubahan tersembunyi atau membuangnya.

7
11 нояб. Jawaban diberikan oleh Seth Johnson 11 Nov 2010-11-11 20:23 '10 pada 20:23 2010-11-11 20:23
 git fetch --all  git reset --hard origin/master 
1
12 сент. Jawabannya diberikan oleh Luca C. 12 September 2017-09-12 18:26 '17 jam 6:26 sore 2017-09-12 18:26

Ini akan memungkinkan Anda untuk mendapatkan cabang saat ini dan mencoba untuk melakukan fast forward:

 git fetch  git merge --ff-only origin/master 
0
06 мая '16 в 0:04 2016-05-06 00:04 jawabannya diberikan Petah 06 Mei '16 pada 0:04 2016-05-06 00:04

Pertanyaan lain tentang tag atau Ajukan Pertanyaan