มีวิธีการgit pull
ที่จะเพิกเฉยต่อการเปลี่ยนแปลงไฟล์ใด ๆ ในเครื่องโดยไม่ทำให้ไดเรคทอรีหายไปและต้องทำgit clone
?
rm -rf local_repo && git clone remote_url
ในระยะสั้นเพียงแค่เรียกใช้คำสั่งเช่นถ้า
มีวิธีการgit pull
ที่จะเพิกเฉยต่อการเปลี่ยนแปลงไฟล์ใด ๆ ในเครื่องโดยไม่ทำให้ไดเรคทอรีหายไปและต้องทำgit clone
?
rm -rf local_repo && git clone remote_url
ในระยะสั้นเพียงแค่เรียกใช้คำสั่งเช่นถ้า
คำตอบ:
ถ้าคุณหมายถึงคุณต้องการให้ pull เขียนทับการเปลี่ยนแปลงในท้องถิ่นให้ทำการผสานราวกับว่าแผนผังการทำงานนั้นสะอาดดีให้ทำความสะอาดแผนผังการทำงาน:
git reset --hard
git pull
หากมีไฟล์โลคัลที่ไม่ได้ติดตามคุณสามารถใช้git clean
เพื่อลบออก ใช้git clean -f
เพื่อลบไฟล์ที่ไม่ได้-df
ติดตามและลบไฟล์และไดเรกทอรี-xdf
ที่ไม่ได้ติดตามและเพื่อลบไฟล์หรือไดเรกทอรีที่ไม่ได้ติดตามหรือไม่สนใจ
หากในอีกทางหนึ่งที่คุณต้องการให้การแก้ไขในพื้นที่อยู่อย่างใดคุณควรใช้ที่ซ่อนเพื่อซ่อนไว้ก่อนที่จะดึงแล้วนำไปใช้ใหม่ในภายหลัง:
git stash
git pull
git stash pop
ฉันไม่คิดว่ามันสมเหตุสมผลที่จะเพิกเฉยต่อการเปลี่ยนแปลง แต่อย่างใด - การดึงครึ่งหนึ่งเป็นการรวมเข้าด้วยกันและจำเป็นต้องรวมเนื้อหาเวอร์ชันที่คอมมิทเข้ากับเวอร์ชั่นที่ดึงมา
git reset
ไฟล์ของคุณยังคงแตกต่างจากรีโมทให้อ่าน stackoverflow.com/questions/1257592/…
git reset --hard
ส่งผลกระทบต่ออดีตไม่ใช่อย่างหลัง หากคุณต้องการรีเซ็ตเป็นสถานะของรีโมตอย่างสมบูรณ์git reset --hard origin/<branch>
- แต่บ่อยครั้งและในกรณีนี้ทั้งสองยอมรับว่าคุณทำงานก่อนหน้านี้โดยเป็นงานที่คุณทำไม่ใช่สิ่งที่คุณต้องการทิ้ง
สำหรับฉันทำงานต่อไปนี้:
(1) เรียกการเปลี่ยนแปลงทั้งหมดก่อน:
$ git fetch --all
(2) รีเซ็ตต้นแบบ:
$ git reset --hard origin/master
(3) ดึง / อัปเดต:
$ git pull
คุณแค่ต้องการคำสั่งที่ให้ผลลัพธ์เหมือนrm -rf local_repo && git clone remote_url
กันใช่ไหม? ฉันต้องการคุณสมบัตินี้ด้วย ฉันสงสัยว่าทำไมคอมไพล์ไม่ได้ให้คำสั่งดังกล่าว (เช่นgit reclone
หรือgit sync
) และทั้ง svn ไม่ให้คำสั่งดังกล่าว (เช่นsvn recheckout
หรือsvn sync
)
ลองคำสั่งต่อไปนี้:
git reset --hard origin/master
git clean -fxd
git pull
git clean -fxd
ลบไฟล์จาก.gitignore
ยัง
คำสั่งร้องเคยชินทำงานเสมอ ถ้าคุณทำเพียง:
$ 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.
และอื่น ๆ ...
หากต้องการเริ่มต้นใหม่จริงๆให้ดาวน์โหลดการกู้คืนและเขียนทับการเปลี่ยนแปลงในเครื่องทั้งหมดของคุณเพียงทำ:
$ git checkout thebranch
$ git reset --hard origin/thebranch
นี้จะทำงานได้ดี
$ 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'
git fetch --all && git reset --hard origin/master
ดูที่git stashเพื่อทำให้การเปลี่ยนแปลงในพื้นที่ทั้งหมดของคุณเป็น "stash file" และเปลี่ยนกลับไปเป็นคอมมิทล่าสุด ณ จุดนี้คุณสามารถใช้การเปลี่ยนแปลงที่ถูกเก็บถาวรหรือทิ้งได้
หากคุณอยู่บน Linux:
git fetch
for file in `git diff origin/master..HEAD --name-only`; do rm -f "$file"; done
git pull
สำหรับวงจะลบไฟล์ที่ถูกติดตามทั้งหมดซึ่งมีการเปลี่ยนแปลงใน repo ท้องถิ่นดังนั้นgit pull
จะทำงานได้โดยไม่มีปัญหาใด ๆ
สิ่งที่ดีที่สุดเกี่ยวกับเรื่องนี้คือมีเพียงไฟล์ที่ถูกติดตามเท่านั้นที่จะถูกเขียนทับโดยไฟล์ใน repo ไฟล์อื่น ๆ ทั้งหมดจะไม่ถูกแตะต้อง
วิธีที่สั้นที่สุดที่จะทำคือ:
git pull --rebase --autostash
--autostash
มาก่อนขอบคุณ!
สิ่งนี้ใช้ได้สำหรับฉัน
git fetch --all
git reset --hard origin/master
git pull origin master
ด้วยคำตอบที่ยอมรับฉันได้รับข้อผิดพลาดความขัดแย้ง
ฉันมักจะทำ:
git checkout .
git pull
ในโฟลเดอร์รูทของโครงการ
สิ่งนี้จะดึงข้อมูลสาขาปัจจุบันและพยายามที่จะส่งต่ออย่างรวดเร็วไปยังต้นแบบ:
git fetch && git merge --ff-only origin/master
.gitignore
"การเพิ่มไฟล์ที่ไม่ต้องการลงใน. gitignore สามารถทำงานได้ตราบใดที่คุณยังไม่ได้กำหนดให้กับทุกสาขา"
นอกจากนี้คุณสามารถเรียกใช้:
git update-index --assume-unchanged filename
https://chamindac.blogspot.com/2017/07/ignoring-visual-studio-2017-created.html