ฉันทิ้งการเปลี่ยนแปลงของฉันในไฟล์ในแผนผังการทำงานในเครื่องของฉันโดยไม่ตั้งใจผ่านการชำระเงิน git ไฟล์ไม่ได้ถูกจัดแสดงในขณะนี้ เป็นไปได้หรือไม่ที่จะ "ยกเลิก" การชำระเงินนี้?
ฉันทิ้งการเปลี่ยนแปลงของฉันในไฟล์ในแผนผังการทำงานในเครื่องของฉันโดยไม่ตั้งใจผ่านการชำระเงิน git ไฟล์ไม่ได้ถูกจัดแสดงในขณะนี้ เป็นไปได้หรือไม่ที่จะ "ยกเลิก" การชำระเงินนี้?
คำตอบ:
ฉันเชื่อว่าหากไฟล์ถูกแก้ไข แต่ยังไม่ได้เพิ่ม (staged) ไฟล์นั้นจะเป็น "ส่วนตัว" อย่างแท้จริง
ความหมายมันไม่สามารถกู้คืนได้โดย GIT หากเขียนทับด้วยดัชนีหรือรุ่น HEAD (เว้นแต่คุณจะมีสำเนางานปัจจุบันอยู่ที่อื่น) "
เนื้อหา "ส่วนตัว" สามารถมองเห็นได้ในไดเรกทอรีปัจจุบันของคุณเท่านั้น แต่ไม่ได้ลงทะเบียนใน Git
git checkout --) reflogผมคาดหวังว่ามันจะสามารถยกเลิกการดำเนินการที่อาจจะผ่านทาง ความคาดหวังนั้นผิดหรือเปล่า?
git checkout folders/subfolders/fileแต่กด Enter โดยไม่ตั้งใจหลังจากไปfolderและทำงานทั้งหมดของฉัน / คือ 1 ซม. จากการป้อนบนแป้นพิมพ์ของฉันและฉันสลับระหว่างเครื่องที่มีรูปแบบแป้นพิมพ์ที่แตกต่างกันบ่อยครั้งดังนั้นจึงมีเวลา 10-15 นาทีที่นิ้วของฉันจะคุ้นเคยกับตำแหน่งใหม่ ยากที่จะเชื่อในปี 2018 ที่คอมไพล์ไฟล์ขยะแม้ว่ามันจะบอกว่าในหนังสือคอมไพล์ที่คอมไพล์ทำจากมันเป็นวิธีที่จะไม่ทำงาน
หากคุณใช้โอกาส IDE "ระดับมืออาชีพ" เป็นสิ่งที่ดีที่คุณสามารถกู้คืนไฟล์จากประวัติภายในเครื่องได้ ใน Rubymine คุณสามารถคลิกขวาที่ไฟล์และดูประวัติการเปลี่ยนแปลงที่เป็นอิสระจากการเปลี่ยนแปลง git ได้ช่วยฉันสองสามครั้งตอนนี้ ^^
หากคุณกำลังทำงานในโปรแกรมแก้ไขเช่น Sublime Text และมีไฟล์ที่เป็นปัญหายังคงเปิดอยู่คุณสามารถกด ctrl + z และมันจะกลับสู่สถานะเดิมก่อนที่จะทำการเช็คเอาต์
น่าเสียดายที่การเปลี่ยนแปลงของคุณสูญหาย การแก้ไขส่วนตัวของคุณจะถูกเขียนทับ ถ้าคุณไม่ได้git stashทำการเช็คเอาต์ก่อน ...
นำมาจากด้านสว่าง: ตอนนี้คุณสามารถใช้สิ่งต่าง ๆ ได้ดียิ่งขึ้น;)
ตรวจสอบประวัติท้องถิ่นใน IDE ของคุณ
การพัฒนาบนOS X? ใช้Xcode ไหม คุณน่าจะโชคดี!
ตามที่อธิบายไว้ในการแสดงความคิดเห็นโดย qungu , OS X รักษาบันทึกอัตโนมัติประวัติรุ่นของแฟ้มแม้ว่าคุณไม่ได้ใช้เครื่องย้อนเวลา
ดังนั้นถ้าคุณได้ปลิวไปเปลี่ยนแปลงในท้องถิ่นของคุณกับ unstaged ประมาทgit checkout .นี่คือวิธีที่คุณสามารถอาจกู้คืนทุกการทำงานของคุณ
หากใครบางคนพบว่ากระทู้นี้มีการทำลายงานใน XCode มีวิธีที่จะได้รับประวัติบันทึกอัตโนมัติ XCode นั้นไม่มีรายการเมนูเพื่อดูประวัติการบันทึกอัตโนมัติ แต่จะเก็บไว้ หากคุณเปิดไฟล์ดังกล่าวใน TextEdit คุณสามารถย้อนกลับและดูประวัติบันทึกอัตโนมัติภายใต้ไฟล์> ย้อนกลับ
ซึ่งยอดเยี่ยมมากและกู้คืนได้หนึ่งวันสำหรับฉันเมื่อวานนี้
คุณอาจถามว่า"ทำไม UI บรรทัดคำสั่ง git ไม่เป็น VCS ระดับพรีเมียร์ที่ใช้สำหรับวิศวกรรมซอฟต์แวร์ใน2016 2017 20182019 อย่างน้อยต้องสำรองไฟล์ก่อนที่จะพัดไป เช่นเดียวกับที่คุณรู้เครื่องมือซอฟต์แวร์ที่เขียนขึ้นอย่างดีในช่วงสามทศวรรษที่ผ่านมา "
หรือบางทีคุณถามว่า"เหตุใดคุณสมบัติประวัติไฟล์ที่ยอดเยี่ยมนี้จึงสามารถเข้าถึงได้ใน TextEdit แต่ไม่ใช่ Xcode ที่ฉันต้องการจริง ๆ "
ฉันคิดว่า…และทั้งสองอย่างนี้จะบอกคุณค่อนข้างมากเกี่ยวกับอุตสาหกรรมของเรา หรือบางทีคุณอาจไปและแก้ไขเครื่องมือเหล่านั้น ซึ่งจะเป็นซุปเปอร์
Modelน่าเสียดาย
ใน VSCODE ctrl + z (เลิกทำ) ใช้ได้สำหรับฉัน
ฉันทำgit checkout .แทนgit add .และการเปลี่ยนแปลงไฟล์ทั้งหมดของฉันก็หายไป
แต่ตอนนี้ใช้command + zใน mac ของฉันกู้คืนการเปลี่ยนแปลงและบันทึกเสียงการทำงานสำหรับฉัน
ในกรณีที่คุณเคยทำการเปลี่ยนแปลงก่อนหน้านี้ (เช่นก่อนที่จะทำการรีบูต) สิ่งนี้อาจช่วยได้
วิธีการกู้คืนที่ถูกทิ้งใน Git?
แม้ว่าคุณจะซ่อนการเปลี่ยนแปลงแล้วก็ตาม
ผู้ช่วยที่มีประสิทธิภาพสำหรับสถานการณ์เช่นนี้คือ Time Machine (OS X) หรือระบบสำรองข้อมูลตามเวลาที่คล้ายกัน มันช่วยฉันสองสามครั้งเพราะฉันสามารถย้อนกลับและกู้คืนไฟล์นั้นได้เพียงไฟล์เดียว
ฉันเพิ่งเกิดสิ่งนั้นกับฉันฉันไปดูทั้งโฟลเดอร์ที่มีชั่วโมงการทำงาน! โชคดีที่ฉันพบว่า IDE Netbeans ของฉันเก็บประวัติของแต่ละไฟล์ซึ่งทำให้ฉันสามารถกู้คืน 99% ของสิ่งต่าง ๆ แม้ว่าฉันจะต้องแก้ไขบางสิ่งด้วยตนเอง
ปกติแล้วฉันจะทำงานทั้งหมดในโฟลเดอร์ดรอปบ็อกซ์ สิ่งนี้ทำให้ฉันมั่นใจได้ว่าฉันจะมีโฟลเดอร์ปัจจุบันอยู่นอกเครื่องท้องถิ่นของฉันและ Github ฉันคิดว่ามันเป็นขั้นตอนอื่นของฉันที่จะรับประกัน "การควบคุมเวอร์ชัน" นอกเหนือจาก git คุณสามารถติดตามสิ่งนี้เพื่อเปลี่ยนไฟล์ของคุณกลับเป็นไฟล์ดรอปบ็อกซ์รุ่นก่อนหน้า
หวังว่านี่จะช่วยได้
ใช่แล้ว แต่ในบางกรณีเท่านั้น ตัวอย่างเช่นถ้าคุณมีรหัสหน้าขึ้นมาและคุณกดเช็คเอาต์คอมไพล์แล้วคุณก็รู้ว่าคุณเช็คเอาต์ผิดหน้าหรือบางอย่างผิดพลาด ไปที่หน้าและคลิกเลิกทำ (สำหรับฉันคำสั่ง + z) และมันจะกลับไปที่ที่คุณเคยอยู่ก่อนที่คุณจะไปถึงจุดชำระเงิน git เก่าที่ดี
สิ่งนี้จะไม่ทำงานหากหน้าเว็บของคุณถูกปิดและจากนั้นคุณก็กดเช็คเอาต์คอมไพล์ ใช้งานได้เฉพาะเมื่อเปิดหน้ารหัสจริง
ถ้าคุณทำงานกับ / ขั้ว cmd พรอมต์เปิดและใช้คำสั่งคอมไพล์ใด ๆ ที่จะได้แสดงให้เห็นการเปลี่ยนแปลง unstaged ( diff, add -p, checkout -pฯลฯ ) และยังไม่ได้ปิด / ขั้ว cmd พรอมต์ตั้งแต่คุณจะพบการเปลี่ยนแปลง unstaged ยังคงพร้อมใช้งานหากคุณเลื่อนไปยังตำแหน่งที่คุณรันคำสั่ง git ดังกล่าว
เพื่อน,
สมมติว่าคุณเป็นคนที่โชคดีมากอย่างที่ฉันเคยกลับไปที่เครื่องมือแก้ไขของคุณและเลิกทำ (คำสั่ง + Z สำหรับ mac) คุณควรเห็นเนื้อหาที่หายไปของคุณในไฟล์ หวังว่ามันจะช่วยคุณ แน่นอนว่าสิ่งนี้จะใช้ได้กับไฟล์ที่มีอยู่เท่านั้น
บางทีการเปลี่ยนแปลงของคุณจะไม่สูญหาย ตรวจสอบ "git reflog"
ฉันพูดบทความด้านล่าง:
"โดยทั่วไปทุกการกระทำที่คุณทำภายใน Git ที่เก็บข้อมูลคุณสามารถค้นหาได้จาก reflog Git พยายามอย่างหนักที่จะไม่สูญเสียข้อมูลของคุณดังนั้นถ้าด้วยเหตุผลบางอย่างที่คุณคิดว่ามีโอกาสคุณสามารถขุดได้ ใช้ git reflog "
ดูรายละเอียด:
http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html
git reflogนี่ฉันพบคำตอบนี้เมื่อฉันกำลังค้นหาการยกเลิกgit checkout HEAD .- ฉันหมายถึงพิมพ์git reset HEAD .- ฉันเพิ่งทำ 'รีเซ็ต git - soft HEAD ~ 1' และไม่รู้ เกี่ยวกับgit reflogดังนั้นก็สามารถที่จะได้รับกลับมาทำงานที่ผมเคยทำมา :)