Cara mengembalikan ke versi file master cabang asal

425

Saya di cabang master komputer lokal saya dari cabang-master kloning dari repo dari server jauh.

Saya memperbarui file, dan saya ingin kembali ke versi asli dari cabang master jarak jauh.

Bagaimana saya bisa melakukan ini?

mrblah
sumber

Jawaban:

874

Dengan asumsi Anda tidak melakukan file, atau menambahkannya ke indeks, lalu:

git checkout -- filename

Dengan asumsi Anda menambahkannya ke indeks, tetapi tidak melakukannya, maka:

git reset HEAD filename
git checkout -- filename

Dengan asumsi Anda memang melakukan itu, maka:

git checkout origin/master filename

Dengan asumsi Anda ingin menerbangkan semua komitmen dari cabang Anda (SANGAT DESTRUKTIF):

git reset --hard origin/master
gahooa
sumber
43
Opsi ketiga Anda sangat berbeda dari dua opsi pertama Anda karena menyentuh semua file dan bukan hanya satu file. Anda mungkin ingin menunjukkan ini secara lebih eksplisit. Juga mengapa tidak merekomendasikan git checkout HEAD filenamedan git checkout origin/master filenameuntuk opsi satu dan dua, itu akan lebih konsisten?
CB Bailey
5
@CharlesBailey: Saya menambahkan git checkout origin/master filenameopsi untuk jawaban gahooa.
Frank
2
@cilphex, itu menerbangkan semua komit di cabang Anda saat ini
WattsInABox
1
Saya tidak sengaja me-rebate branchA dari branchB dan perlu mengatur ulang untuk menguasai cabang lokal. git reset --hard mastersendirian adalah solusi saya karena saya tidak ingin menjangkau asal. Terima kasih.
taco
3
@ gahooa Mungkin seharusnya git checkout - nama file, bagaimana jika file tersebut disebut "master", maka Anda akan mendapatkan perilaku yang tidak dimaksudkan.
user2602152
50

Saya menghadapi masalah yang sama dan menemukan utas ini tetapi masalah saya ada pada upstream. Di bawah ini perintah git bekerja untuk saya.

Sintaksis

git checkout {nama-jauh} / {branch} - {file / path.js}

Contoh

git checkout upstream / develop - publik / js / index.js

Venkat.R
sumber
0

Jika Anda belum mengkomitnya ke cabang master, itu mudah:

  • turun dari cabang utama (seperti git checkout -b oops/fluke/dang)
  • komit perubahan Anda di sana (seperti git add -u; git commit;)
  • kembali ke cabang utama (seperti git checkout master)

Perubahan Anda akan disimpan di oops cabang / kebetulan / dang; tuan akan seperti itu.

Commonpike
sumber