วิธีเปลี่ยนกลับเป็นไฟล์เวอร์ชันสาขาหลักของต้นกำเนิด


425

ฉันอยู่ในสาขาหลักของคอมพิวเตอร์ในพื้นที่ของสาขาหลักที่โคลนของ repo จากเซิร์ฟเวอร์ระยะไกล

ฉันอัปเดตไฟล์และฉันต้องการเปลี่ยนกลับเป็นเวอร์ชั่นดั้งเดิมจากสาขาต้นแบบระยะไกล

ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


874

สมมติว่าคุณไม่ได้ยืนยันไฟล์หรือเพิ่มลงในดัชนีจากนั้น:

git checkout -- filename

สมมติว่าคุณเพิ่มลงในดัชนี แต่ไม่ได้ยืนยันแล้ว:

git reset HEAD filename
git checkout -- filename

สมมติว่าคุณทำมันแล้ว:

git checkout origin/master filename

สมมติว่าคุณต้องการที่จะระเบิดความมุ่งมั่นทั้งหมดจากสาขาของคุณ (การทำลายอย่างมาก):

git reset --hard origin/master

43
ตัวเลือกที่สามของคุณนั้นแตกต่างจากตัวเลือกสองตัวแรกของคุณเนื่องจากมันแตะทุกไฟล์ไม่ใช่แค่ไฟล์เดียว คุณอาจต้องการชี้ให้ชัดเจนยิ่งขึ้น ทำไมถึงไม่แนะนำgit checkout HEAD filenameและgit checkout origin/master filenameสำหรับตัวเลือกที่หนึ่งและสองมันจะมีความสอดคล้องมากกว่าหรือไม่
CB Bailey

5
@CharlesBailey: ฉันเพิ่มgit checkout origin/master filenameตัวเลือกในคำตอบของ gahooa
แฟรงค์

2
@cilphex มันระเบิดความมุ่งมั่นทั้งหมดในสาขาปัจจุบันของคุณ
WattsInABox

1
ฉันกลับมาใช้งานใหม่โดยไม่ได้ตั้งใจสาขาจาก B และจำเป็นต้องรีเซ็ตเป็นสาขาหลักในท้องถิ่น git reset --hard masterเพียงอย่างเดียวคือวิธีการแก้ปัญหาของฉันเพราะฉันไม่ต้องการเอื้อมมือออกไป ขอบคุณ
taco

3
@gahooa น่าจะเป็น git checkout - ชื่อไฟล์จะเป็นอย่างไรถ้าไฟล์นั้นเรียกว่า "master" คุณจะได้รับพฤติกรรมที่ไม่ได้ตั้งใจ
user2602152

50

ฉันประสบปัญหาเดียวกันและพบกับหัวข้อนี้ แต่ปัญหาของฉันอยู่กับ upstreamแต่ปัญหาของฉันอยู่กับ ด้านล่างคำสั่ง git ทำงานสำหรับฉัน

วากยสัมพันธ์

git checkout {remote-name} / {branch} - {file / path.js}

ตัวอย่าง

git checkout อัพสตรีม / พัฒนา - public / js / index.js


0

หากคุณยังไม่ได้มอบให้สาขาหลักก็ง่าย

  • ลงจากสาขาหลัก (เช่นgit checkout -b oops/fluke/dang)
  • ส่งการเปลี่ยนแปลงของคุณที่นั่น (เช่นgit add -u; git commit;)
  • ย้อนกลับสาขาหลัก (เช่นgit checkout master)

การเปลี่ยนแปลงของคุณจะถูกบันทึกไว้ในกิ่งสาขา oops / fluke / แดง; เจ้านายจะเป็นเหมือนเดิม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.