มีคำสั่ง git เพื่อยกเลิกการเปลี่ยนแปลงที่ไม่ได้รับการผูกมัดทั้งหมดในแผนผังการทำงานและดัชนีรวมถึงลบไฟล์และโฟลเดอร์ที่สร้างขึ้นใหม่หรือไม่?
มีคำสั่ง git เพื่อยกเลิกการเปลี่ยนแปลงที่ไม่ได้รับการผูกมัดทั้งหมดในแผนผังการทำงานและดัชนีรวมถึงลบไฟล์และโฟลเดอร์ที่สร้างขึ้นใหม่หรือไม่?
คำตอบ:
คุณสามารถรันคำสั่งทั้งสองนี้:
# Revert changes to modified files.
git reset --hard
# Remove all untracked files and directories.
# '-f' is force, '-d' is remove directories.
git clean -fd
git clean -i
สำหรับโหมดการโต้ตอบ
git merge --abort
ลองใช้
หากคุณต้องการยกเลิกการเปลี่ยนแปลงในไดเรกทอรีการทำงานปัจจุบันให้ใช้
git checkout -- .
และก่อนหน้านั้นคุณสามารถแสดงรายการไฟล์ที่จะเปลี่ยนกลับโดยไม่ต้องดำเนินการใด ๆ เพียงเพื่อตรวจสอบว่าจะเกิดอะไรขึ้นกับ:
git checkout --
git reset --hard
อะไร?
ใช้ "ชำระเงิน git - ... " เพื่อยกเลิกการเปลี่ยนแปลงในไดเรกทอรีการทำงาน
git checkout -- app/views/posts/index.html.erb
หรือ
git checkout -- *
ลบการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นกับไฟล์ที่ไม่มีสถานะในสถานะ git เช่น
modified: app/controllers/posts.rb
modified: app/views/posts/index.html.erb
git checkout -- *
ไม่ทำงานสำหรับฉันเว้นแต่ฉันจะอยู่ในไดเรกทอรีที่มีไฟล์ที่ถูกเปลี่ยน ในการเช็คเอาต์ไฟล์ทั้งหมดในพื้นที่เก็บข้อมูลทั้งหมดคุณต้องทำgit checkout -- :/
git checkout -- *
ดาวจะถูกแทนที่ด้วยเชลล์ด้วยไฟล์และไดเรกทอรีทั้งหมดในไดเรกทอรีปัจจุบัน ดังนั้นควรไปในไดเรกทอรีย่อย มันใช้งานได้สำหรับฉัน แต่ต้องขอบคุณที่เน้นไวยากรณ์ ": /" ที่ตะเข็บสะอาดกว่าในความคิดของฉัน
วิธีหนึ่งที่ไม่สำคัญคือการเรียกใช้สองคำสั่งนี้:
git stash
สิ่งนี้จะย้ายการเปลี่ยนแปลงของคุณไปยังที่เก็บซึ่งนำคุณกลับสู่สถานะ HEADgit stash drop
นี่จะเป็นการลบที่ซ่อนล่าสุดที่สร้างในคำสั่งสุดท้ายfatal: git-write-tree: error building trees Cannot save the current index state
git clean -fd
ไม่ช่วยไฟล์ใหม่ยังคงอยู่ สิ่งที่ฉันทำคือการลบทรีทำงานทั้งหมดแล้ว
git reset --hard
ดู " ฉันจะล้างไดเรกทอรีการทำงานในท้องถิ่นของฉันในคอมไพล์ได้อย่างไร " สำหรับคำแนะนำในการเพิ่ม-x
ตัวเลือกในการล้างข้อมูล:
git clean -fdx
การ -x
ตั้งค่าสถานะหมายเหตุจะลบไฟล์ทั้งหมดที่ละเว้นโดย Git ดังนั้นโปรดระมัดระวัง (ดูการสนทนาในคำตอบที่ฉันอ้างถึง)
ฉันคิดว่าคุณสามารถใช้คำสั่งต่อไปนี้: git reset --hard
โปรดทราบว่าอาจยังมีไฟล์ที่ดูเหมือนจะไม่หายไป - ไฟล์เหล่านั้นอาจไม่ได้รับการแก้ไข แต่คอมไพล์อาจทำเครื่องหมายว่าถูกแก้ไขเนื่องจากการเปลี่ยนแปลง CRLF / LF ดูว่าคุณได้ทำการเปลี่ยนแปลงบางอย่างใน.gitattributes
เร็ว ๆ นี้
ในกรณีของฉันฉันได้เพิ่มการตั้งค่า CRLF ลงใน.gitattributes
ไฟล์และไฟล์ทั้งหมดยังคงอยู่ในรายการ "ไฟล์ที่แก้ไข" เพราะสิ่งนี้ การเปลี่ยนการตั้งค่า. gitattributes ทำให้หายไป
หากคุณมีการเปลี่ยนแปลงที่ไม่มีข้อผูกมัด (เฉพาะในสำเนาการทำงานของคุณ) ที่คุณต้องการเปลี่ยนกลับเป็นสำเนาในการส่งล่าสุดของคุณให้ทำดังต่อไปนี้:
git checkout filename
git rm filename
และมันไม่ทำงาน error: pathspec 'filename' did not match any file(s) known to git.
git rm
คือgit checkout master -- filename
Git 2.23 แนะนำgit restore
คำสั่งเพื่อกู้คืนไฟล์แผนผังการทำงาน
https://git-scm.com/docs/git-restore
เพื่อเรียกคืนไฟล์ทั้งหมดในไดเรกทอรีปัจจุบัน
คอมไพล์เรียกคืน
หากคุณต้องการกู้คืนไฟล์ต้นฉบับ C ทั้งหมดให้ตรงกับเวอร์ชันในดัชนีคุณสามารถทำได้
git restore '* .c'
คุณสามารถใช้คำสั่ง git ต่อไปนี้ซึ่งสามารถย้อนกลับการเปลี่ยนแปลงที่ไม่มีข้อผูกมัดทั้งหมดที่เกิดขึ้นในที่เก็บของคุณ:
git checkout .
ตัวอย่าง:
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: application/controllers/Drivers.php
modified: application/views/drivers/add.php
modified: application/views/drivers/load_driver_info.php
modified: uploads/drivers/drivers.xlsx
no changes added to commit (use "git add" and/or "git commit -a")
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
ฉันมักจะใช้วิธีนี้ทำงานได้ดี:
mv fold/file /tmp
git checkout fold/file
วิธีที่ปลอดภัยและระยะยาว:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete
ใช้:
git reset HEAD filepath
ตัวอย่างเช่น:
git reset HEAD om211/src/META-INF/persistence.xml