Apakah ada cara untuk melakukan git pull
itu yang mengabaikan perubahan file lokal tanpa membuang direktori dan harus melakukan git clone
?
rm -rf local_repo && git clone remote_url
.
Apakah ada cara untuk melakukan git pull
itu yang mengabaikan perubahan file lokal tanpa membuang direktori dan harus melakukan git clone
?
rm -rf local_repo && git clone remote_url
.
Jawaban:
Jika Anda ingin tarik untuk menimpa perubahan lokal, lakukan penggabungan seolah-olah pohon yang bekerja bersih, lalu bersihkan pohon yang bekerja:
git reset --hard
git pull
Jika ada file lokal yang tidak bisa dilacak yang dapat Anda gunakan git clean
untuk menghapusnya. Gunakan git clean -f
untuk menghapus file yang tidak dilacak, -df
untuk menghapus file dan direktori yang tidak dilacak, dan -xdf
untuk menghapus file atau direktori yang tidak dilacak atau diabaikan.
Jika di sisi lain Anda ingin menyimpan modifikasi lokal, Anda harus menggunakan simpanan untuk menyembunyikannya sebelum menarik, lalu menerapkannya kembali setelahnya:
git stash
git pull
git stash pop
Saya tidak berpikir masuk akal untuk benar - benar mengabaikan perubahan, meskipun - setengah dari tarik adalah penggabungan, dan itu perlu menggabungkan versi konten yang dilakukan dengan versi yang diambil.
git reset
file Anda masih berbeda dari jarak jauh, baca stackoverflow.com/questions/1257592/...
git reset --hard
mempengaruhi yang pertama, bukan yang terakhir. Jika Anda ingin mengatur ulang sepenuhnya ke kondisi jarak jauh, git reset --hard origin/<branch>
- tetapi sering dan dalam kasus ini, kedua komitmen yang Anda lakukan sebelumnya adalah pekerjaan yang Anda lakukan, bukan sesuatu yang ingin Anda buang.
Bagi saya yang berikut ini berfungsi:
(1) Pertama ambil semua perubahan:
$ git fetch --all
(2) Kemudian reset master:
$ git reset --hard origin/master
(3) Tarik / perbarui:
$ git pull
Anda hanya ingin perintah yang memberikan hasil yang sama persis rm -rf local_repo && git clone remote_url
, kan? Saya juga menginginkan fitur ini. Saya bertanya-tanya mengapa git tidak menyediakan perintah seperti itu (seperti git reclone
atau git sync
), juga tidak memberikan perintah seperti itu (seperti svn recheckout
atausvn sync
).
Coba perintah berikut:
git reset --hard origin/master
git clean -fxd
git pull
git clean -fxd
menghapus file dari .gitignore
juga.
Perintah di bawah tidak akan berfungsi . Jika Anda melakukannya saja:
$ 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, 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'
Lihatlah git stash untuk meletakkan semua perubahan lokal Anda menjadi "file simpanan" dan kembali ke komit terakhir. Pada titik itu, Anda dapat menerapkan perubahan simpanan Anda, atau membuangnya.
Jika Anda menggunakan 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 yang dilacak yang diubah dalam repo lokal, sehingga git pull
akan berfungsi tanpa masalah.
Hal terbaik tentang ini adalah bahwa hanya file yang dilacak yang akan ditimpa oleh file dalam repo, semua file lain akan dibiarkan tidak tersentuh.
ini bekerja untuk saya
git fetch --all
git reset --hard origin/master
git pull origin master
dengan jawaban yang diterima saya mendapatkan kesalahan konflik
Saya biasanya melakukan:
git checkout .
git pull
Di folder root proyek.
.gitignore
"Menambahkan file yang tidak diinginkan ke .gitignore berfungsi selama Anda belum memberikannya ke cabang mana pun."
Anda juga dapat menjalankan:
git update-index --assume-unchanged filename
https://chamindac.blogspot.com/2017/07/ignoring-visual-studio-2017-created.html