คำถามติดแท็ก git-revert

ยกเลิกการเปลี่ยนแปลงของคอมมิตในที่เก็บ Git

30
ฉันจะเปลี่ยนที่เก็บ Git กลับเป็นการคอมมิชชันก่อนหน้าได้อย่างไร
คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันจะเปลี่ยนจากสถานะปัจจุบันเป็นสแน็ปช็อตที่เกิดขึ้นจากการกระทำบางอย่างได้อย่างไร ถ้าฉันทำgit logแล้วฉันจะได้ผลลัพธ์ต่อไปนี้: $ git log commit a867b4af366350be2e7c21b8de9cc6504678a61b` Author: Me <me@me.com> Date: Thu Nov 4 18:59:41 2010 -0400 blah blah blah... commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4 Author: Me <me@me.com> Date: Thu Nov 4 05:13:39 2010 -0400 more blah blah blah... commit 0766c053c0ea2035e90f504928f8df3c9363b8bd Author: Me <me@me.com> Date: Thu Nov 4 00:55:06 …

13
จะยกเลิกการเปลี่ยนแปลงที่ไม่ได้รับการยอมรับรวมถึงไฟล์และโฟลเดอร์ได้อย่างไร
มีคำสั่ง git เพื่อยกเลิกการเปลี่ยนแปลงที่ไม่ได้รับการผูกมัดทั้งหมดในแผนผังการทำงานและดัชนีรวมถึงลบไฟล์และโฟลเดอร์ที่สร้างขึ้นใหม่หรือไม่?

12
วิธีการย้อนกลับคอมไพล์หลายคอมมิท
ฉันมีที่เก็บ git ที่มีลักษณะเช่นนี้: A -> B -> C -> D -> HEAD ฉันต้องการให้หัวหน้าสาขาชี้ไปที่ A เช่นฉันต้องการให้ B, C, D และ HEAD หายไปและฉันต้องการให้หัวมีความหมายเหมือนกันกับ A ดูเหมือนว่าฉันจะพยายามรีบูต (ไม่ได้ใช้เนื่องจากฉันผลักการเปลี่ยนแปลงระหว่าง) หรือเปลี่ยนกลับ แต่ฉันจะยกเลิกการคอมมิชชันหลายรายการได้อย่างไร ฉันจะย้อนกลับทีละครั้งหรือไม่? คำสั่งซื้อสำคัญหรือไม่
982 git  commit  git-revert 

11
ย้อนกลับไปที่ Git เก่าที่กระทำใน repo สาธารณะ
ฉันจะย้อนกลับไปสู่การคอมมิทเฉพาะทางได้อย่างไร? คำตอบที่ดีที่สุดที่ใครบางคนสามารถให้ฉันได้คือการใช้git revertX ครั้งจนกว่าฉันจะถึงความมุ่งมั่นที่ต้องการ สมมุติว่าฉันต้องการกลับไปใช้ความมุ่งมั่นที่อายุ 20 คอมมิทฉันจะต้องรันมัน 20 ครั้ง มีวิธีที่ง่ายกว่านี้หรือไม่? ฉันไม่สามารถใช้รีเซ็ตได้เพราะพื้นที่เก็บข้อมูลนี้เป็นแบบสาธารณะ

4
เลิกทำการคอมมิทเฉพาะใน Git ที่ถูกผลักไปที่ repos ระยะไกล
เป็นวิธีที่ง่ายที่สุดในการยกเลิกการกระทำที่เฉพาะเจาะจงคือ: ไม่อยู่ในหัวหรือหัวหน้า ได้ถูกผลักไปยังระยะไกล เพราะถ้ามันไม่ได้กระทำล่าสุด git reset HEAD ไม่ทำงาน และเนื่องจากมันถูกผลักไปที่รีโมต git rebase -i และ git rebase --onto จะทำให้เกิดปัญหาในรีโมท ยิ่งกว่านั้นฉันไม่ต้องการแก้ไขประวัติจริงๆ หากมีรหัสไม่ดีแสดงว่ามีอยู่ในประวัติและสามารถมองเห็นได้ ฉันแค่ต้องการมันในสำเนาที่ใช้งานได้และฉันก็ไม่รังเกียจที่จะรวมการย้อนกลับ กล่าวอีกนัยหนึ่งสิ่งที่เทียบเท่าGitของคำสั่ง svn ต่อไปนี้: svn merge -r 303:295 http://svn.example.com/repos/calc/trunk ซึ่งจะลบการเปลี่ยนแปลงทั้งหมดจาก 295 ถึง 302 โดยย้อนกลับการรวมการเปลี่ยนแปลงทั้งหมดในการแก้ไขเหล่านั้นเป็นการกระทำใหม่ svn merge -c -302 ^/trunk ซึ่งยกเลิกการกระทำ 302 แน่นอนโดยการเพิ่มการกระทำอื่นที่ย้อนกลับผสานการเปลี่ยนแปลงจากการกระทำนั้น ๆ ฉันคิดว่ามันควรจะใช้งานได้ง่ายใน Git และกรณีการใช้งานที่ค่อนข้างธรรมดา ปรมาณูมีจุดมุ่งหมายอะไรอีก? เรามีการจัดเตรียมstashingและทั้งหมดเพื่อให้แน่ใจว่าการกระทำนั้นสมบูรณ์แบบในระดับอะตอมคุณไม่ควรเลิกทำการคอมมิทเหล่านั้นอย่างน้อยหนึ่งอย่างได้อย่างง่ายดายหรือไม่?

3
รีเซ็ตการเปลี่ยนแปลงทั้งหมดหลังจากคอมมิทครั้งสุดท้ายในคอมไพล์
ฉันจะยกเลิกทุกการเปลี่ยนแปลงที่เกิดขึ้นกับไดเรกทอรีของฉันหลังจากที่ล่าสุดกระทำรวมถึงการลบไฟล์เพิ่มการรีเซ็ตการแก้ไขไฟล์และบวกกลับไฟล์ที่ถูกลบ?

6
ความแตกต่างระหว่าง Git Revert, Checkout และ Reset
ฉันพยายามที่จะเรียนรู้วิธีการที่จะเรียกคืนหรือไฟล์ย้อนกลับและโครงการไปยังรัฐก่อนและไม่เข้าใจความแตกต่างระหว่างgit revert, และcheckout resetเหตุใดจึงมี 3 คำสั่งต่างกันสำหรับวัตถุประสงค์เดียวกันและเมื่อมีคนควรเลือกคำสั่งอื่น

8
ทำการผสานการคืนค่าใน Git อีกครั้ง
ฉันพบปัญหาเล็กน้อยที่นี่: ฉันมีสาขาเฉพาะปัญหา28sใน Git ที่ฉันรวมอยู่ในdevelopสาขาทั่วไป ปรากฎว่าฉันทำมันเร็วเกินไปดังนั้นฉันจึงใช้ git-revert เพื่อเลิกทำการผสาน อย่างไรก็ตามถึงเวลาแล้วที่จะรวม28sเข้าdevelopด้วยกัน แต่คำสั่ง git-merge จะเห็นการผสานดั้งเดิมและประกาศอย่างมีความสุขว่าทุกอย่างเป็นไปด้วยดีและมีการรวมสาขาเข้าด้วยกันแล้ว ฉันทำอะไรตอนนี้? สร้าง 'เปลี่ยนกลับ "เปลี่ยนกลับ" 28s -> พัฒนา ""' กระทำหรือไม่ ดูเหมือนจะไม่ใช่วิธีที่ดีที่จะทำ แต่ฉันไม่สามารถจินตนาการได้ในขณะนี้ โครงสร้างต้นไม้มีลักษณะอย่างไร:

3
ทำไม git จึงกลับบ่นเกี่ยวกับตัวเลือก -m ที่หายไป?
ดังนั้นฉันจึงทำงานในโครงการร่วมกับคนอื่นและมีส้อม github หลายตัวที่ใช้งานได้ มีคนเพิ่งแก้ไขปัญหาและรวมกับส้อมของเขา แต่แล้วฉันก็ตระหนักว่าฉันสามารถหาทางออกที่ดีกว่า ฉันต้องการคืนความมุ่งมั่นที่เพิ่งทำไป ฉันพยายามทำสิ่งนี้ด้วยgit revert HEADแต่มันทำให้ฉันมีข้อผิดพลาดนี้: ร้ายแรง: Commit <SHA1> เป็นผสาน แต่ไม่มีการกำหนดตัวเลือก -m นั่นหมายความว่าอย่างไร? เมื่อฉันรวมและมุ่งมั่นฉันใช้ตัวเลือก -m เพื่อพูดว่า "ผสานกับ <ชื่อผู้ใช้>" ฉันทำอะไรผิดที่นี่
185 git  github  git-revert 

7
ฉันจะย้าย HEAD กลับไปยังตำแหน่งก่อนหน้าได้อย่างไร (หัวเดี่ยว) & เลิกทำ
ใน Git ฉันพยายามทำsquash commitโดยรวมสาขาอื่นแล้วรีเซ็ตHEADเป็นสถานที่ก่อนหน้าผ่าน: git reset origin/master แต่ฉันต้องก้าวออกจากนี้ ฉันจะย้าย HEAD กลับไปยังตำแหน่งก่อนหน้าได้อย่างไร ฉันมี SHA-1 fragment ( 23b6772) ของการกระทำที่ฉันต้องการย้ายไป ฉันจะกลับไปที่การกระทำนี้ได้อย่างไร?

3
ฉันต้องการป๊อปอัปและทิ้งคอมมิต "กลาง" ในสาขาหลักของฉัน ฉันจะทำมันได้อย่างไร?
ตัวอย่างเช่นในสาขาหลักต่อไปนี้ฉันต้องทิ้งเฉพาะการกระทำ af5c7bf16e6f04321f966b4231371b21475bc4da ซึ่งเป็นครั้งที่สองเนื่องจาก rebase ก่อนหน้านี้: commit 60b413512e616997c8b929012cf9ca56bf5c9113 Author: Luca G. Soave <luca.soave@gmail.com> Date: Tue Apr 12 23:50:15 2011 +0200 add generic config/initializers/omniauth.example.rb commit af5c7bf16e6f04321f966b4231371b21475bc4da Author: Luca G. Soave <luca.soave@gmail.com> Date: Fri Apr 22 00:15:50 2011 +0200 show github user info if logged commit e6523efada4d75084e81971c4dc2aec621d45530 Author: Luca G. Soave <luca.soave@gmail.com> Date: …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.