บังคับให้เขียนทับไฟล์ในเครื่องด้วยสิ่งที่อยู่ในแหล่งซื้อคืนต้นทางหรือไม่


224

ฉันต้องการรับไฟล์ล่าสุดที่อยู่ในที่เก็บและเขียนทับสิ่งที่ฉันมีในเครื่อง ฉันจะทำสิ่งนี้กับลูกค้า git ได้อย่างไร?

คำตอบ:


443

หากคุณต้องการเขียนทับไฟล์เดียวเท่านั้น:

git fetch
git checkout origin/master <filepath>

หากคุณต้องการจะเขียนทับทุกไฟล์ที่เปลี่ยนแปลง:

git fetch
git reset --hard origin/master

(สิ่งนี้ถือว่าคุณทำงานในmasterพื้นที่และคุณต้องการให้มีการเปลี่ยนแปลงที่มาของต้นกำเนิดmaster- หากคุณอยู่ในสาขาให้เปลี่ยนมาใช้แทน)


สิ่งนี้ตรงกันข้าม มันเขียนทับที่เก็บด้วยไฟล์ในเครื่องของฉันอย่างไม่ถูกต้อง
C_Rod

git fetch git reset --hard origin/masterหรือ/<branch name>
adrian filipescu

เยี่ยมมาก ... สิ่งที่ฉันกำลังมองหา ขอบคุณ
Thiago Passos

ไม่แน่ใจว่า @C_Rod ทำอะไร แต่สิ่งนี้อาจส่งผลกระทบต่อที่เก็บไม่ได้
Brad Mace

26

เวอร์ชันที่ง่ายที่สุดสมมติว่าคุณกำลังทำงานในสาขาเดียวกับที่ไฟล์ที่คุณต้องการเปิดอยู่:

git checkout path/to/file.

gc='git checkout'ฉันทำเช่นนี้จึงมักจะว่าฉันมีชุดนามแฝงไป


4
เรียบง่ายสง่างามและทำงานได้ดี เพียงจำไว้ว่า 'เรียก git' มาก่อน
Almir Campos

6
git checkout path/to/fileทำงานให้ฉัน นอกจากนี้ฉันพบว่าแผนภาพนี้มีประโยชน์มากในการเข้าใจแนวคิดที่git checkoutกำลังทำ ลิงก์
Cale Sweeney

9

สิ่งนี้ใช้ได้กับฉัน:

git reset HEAD <filename>

ฉันเห็นโซลูชันที่แตกต่างกันเล็กน้อย แต่อันนี้มีประสิทธิภาพมากที่สุดขอบคุณ
Calvin Zhou

3

การซิงค์แบบเต็มมีงานน้อย:

  • คืนค่าการเปลี่ยนแปลง
  • ลบไฟล์ใหม่
  • รับล่าสุดจากที่เก็บระยะไกล

git reset HEAD - ฮาร์ด

git clean -f

git pull master ต้นกำเนิด

หรืออย่างอื่นที่ฉันชอบก็คือฉันอาจสร้างสาขาใหม่โดยใช้ล่าสุดจากระยะไกลโดยใช้:

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

origin คือการอ้างอิงที่เก็บระยะไกลของฉันและ master คือชื่อสาขาที่ฉันพิจารณา สิ่งเหล่านี้อาจแตกต่างจากของคุณ

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