คุณจะย้ายคอมมิทไปยังพื้นที่เตรียมการในคอมไพล์ได้อย่างไร?


143

หากคุณต้องการย้ายการมอบหมายไปยังพื้นที่การแสดง - นั่นเป็นเรื่องแปลกและย้ายการเปลี่ยนแปลงทั้งหมดที่อยู่ในพื้นที่การแสดงละคร คุณจะทำอย่างไรมันได้หรือไม่? หรือเป็นสิ่งที่คุณทำไม่ได้?

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

คำตอบ:


267
git reset --soft HEAD^

สิ่งนี้จะรีเซ็ตดัชนีของคุณเป็นHEAD^(การคอมมิชชันก่อนหน้า) แต่ปล่อยให้การเปลี่ยนแปลงของคุณอยู่ในพื้นที่จัดเตรียม

มีไดอะแกรมที่มีประโยชน์บางอย่างในgit-resetเอกสาร

หากคุณใช้ Windows คุณอาจต้องใช้รูปแบบนี้:

git reset --soft HEAD~1

18
หากไม่เป็นเช่นนั้นให้ลองใช้git reset --soft HEAD~1ซึ่งหมายความว่าเหมือนกัน แต่ใช้ได้กับ Windows ด้วย
Roman Starkov

9
ชี้แจงตัวหนอนและแครอตหมายถึงสิ่งที่แตกต่างในรุ่นคอมไพล์ HEAD ~ 1 ตามหลังพาเรนต์แรกของการคอมมิชชันซึ่งอาจไม่ใช่สิ่งที่คุณต้องการหากเป็นการรวมที่คอมมิทที่มีหลายพาเรนต์ สำหรับเชลล์ cmd ของ Windows คุณเพียงแค่ต้องหลบหนี carot ด้วย carot อื่นเช่น "รีเซ็ต git - soft HEAD ^^" เพื่อกลับไปที่ "HEAD ^" นี่เป็นสิ่งประดิษฐ์ของเชลล์ cmd ของ Windows เท่านั้นดังนั้นคุณไม่ควรทำเช่นนั้นหากคุณใช้ git GUI บน Windows Tilde และ carot มีการอธิบายไว้ที่schacon.github.io/git/git-rev-parse#_specifying_revisions
ahains

ฉันเพิ่มลิงก์สำหรับ "ไดอะแกรมที่มีประโยชน์" คุณสามารถตรวจสอบได้อย่างรวดเร็วหรือไม่ว่าจะนำไปสู่ส่วนที่คุณต้องการ ขอบคุณ
Neuron

5

วิธีง่ายๆ

  1. ไฟล์ที่กำหนดไปยัง Staging Area

    git reset --soft HEAD^1

  2. การ Staging เป็น UnStage : (ใช้ "git reset HEAD ... " เพื่อ unstage)

    git reset HEAD git commands.txt or git reset HEAD *ds.txt

ที่นี่, * -> ไฟล์ทั้งหมดลงท้ายด้วย ds.txt ถึง unstage

ดูรูปด้านล่างเพื่อความชัดเจน:

ป้อนคำอธิบายรูปภาพที่นี่

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