Paksa menimpa file lokal dengan apa yang ada di repo asal?

224

Saya ingin mendapatkan file terbaru yang ada di repositori, dan menimpa apa yang saya miliki secara lokal. Bagaimana saya bisa melakukan ini dengan klien git?

Blankman
sumber

Jawaban:

443

Jika Anda ingin menimpa hanya satu file:

git fetch
git checkout origin/master <filepath>

Jika Anda ingin menimpa semua file yang diubah:

git fetch
git reset --hard origin/master

(Ini mengasumsikan bahwa Anda sedang mengerjakan mastersecara lokal dan Anda menginginkan perubahan pada yang asli master- jika Anda menggunakan cabang, gantikan dengan yang asli.)

Amber
sumber
Ini melakukan yang sebaliknya. Itu menimpa repositori dengan file lokal saya secara keliru.
C_Rod
git fetch git reset --hard origin/masteratau/<branch name>
adrian filipescu
Itu hebat ... Persis apa yang saya cari. Terima kasih
Thiago Passos
Tidak yakin apa yang dilakukan @C_Rod, tetapi ini tidak mungkin memengaruhi repositori
Brad Mace
26

Versi paling sederhana, dengan asumsi Anda bekerja di cabang yang sama dengan file yang Anda inginkan:

git checkout path/to/file.

Saya sering melakukan ini sehingga saya memiliki alias untuk gc='git checkout'.

JM Janzen
sumber
4
Sederhana, elegan, dan melakukan pekerjaan. Ingatlah untuk 'git fetch' sebelumnya.
Almir Campos
6
git checkout path/to/filebekerja untukku. Juga, saya menemukan diagram ini sangat berguna untuk memahami secara konseptual apa git checkoutyang dilakukan. tautan
Cale Sweeney
9

Ini bekerja untuk saya:

git reset HEAD <filename>
arn-arn
sumber
Saya melihat beberapa solusi yang berbeda tetapi yang ini adalah yang paling efektif, terima kasih
Calvin Zhou
3

Sinkronisasi penuh memiliki beberapa tugas:

  • mengembalikan perubahan
  • menghapus file baru
  • dapatkan yang terbaru dari repositori jarak jauh

git atur ulang HEAD --hard

git bersih -f

git tarik master asal

Atau yang lain, yang saya sukai adalah, saya dapat membuat cabang baru dengan yang terbaru dari jarak jauh menggunakan:

git checkout origin/master -b <new branch name>

origin adalah referensi repositori jarak jauh saya, dan master adalah nama cabang saya yang dianggap. Ini mungkin berbeda dari milik Anda.

Chand Priyankara
sumber