ฉันจะเปิดเวทีโต้ตอบก้อนใหญ่ในคอมไพล์ได้อย่างไร?


107

ในคอมไพล์ถ้าฉันมี hunks สองสามตัวจากไฟล์เดียวกันที่จัดฉากในดัชนีของฉันฉันจะยกเลิกการแสดงหนึ่งในนั้นได้อย่างไร?

มีทางเลือกอื่นในการยกเลิกการจัดเตรียมไฟล์ทั้งหมดจากนั้นจัดเตรียม hunks ที่ฉันต้องการเก็บไว้อีกครั้งหรือยกเลิกการเปลี่ยนแปลงในสำเนาที่ใช้งานได้ด้วยตนเองจากนั้นเพิ่มการเปลี่ยนแปลงที่เลิกทำแบบโต้ตอบ

คำตอบ:


138

ลองgit reset --patch filename; นี้ควรจะทำตรงข้ามของgit add --patchตามเอกสาร รูปแบบสั้น-pยังใช้ได้กับทั้งสองคำสั่ง


ฉันไม่คิดว่าเวอร์ชันของฉันมีมัน (เป็น 1.6.3.3) แต่ดูเหมือนว่าจะเป็นคำตอบที่ถูกต้อง
Andrew Grimm

2
ในกรณีนั้น (และสมมติว่าคุณไม่สามารถอัปเกรดได้ด้วยเหตุผลบางประการ) ฉันขอแนะนำให้คุณใช้git stash save --keep-indexเพื่อบันทึกและรีเซ็ตการเปลี่ยนแปลงสำเนาการทำงานปัจจุบันของคุณ จากนั้นคุณสามารถรีเซ็ตไฟล์และเลิกทำการเปลี่ยนแปลงที่คุณไม่ต้องการได้ หากคุณคัดลอกไฟล์ไปยังตำแหน่งชั่วคราวก่อนคุณสามารถใช้diffเพื่อบันทึกการเปลี่ยนแปลงที่คุณเลิกทำ จากนั้นคุณสามารถเพิ่มไฟล์กลับได้อีกครั้ง (ไม่จำเป็นต้องมีการเพิ่มแบบโต้ตอบเนื่องจากคุณได้ซ่อนการเปลี่ยนแปลงอื่น ๆ ที่คุณไม่สนใจ) ใช้git stash popเพื่อเรียกคืนการเปลี่ยนแปลงเก่าและdiffใช้การเปลี่ยนแปลงที่คุณไม่ได้ทำ ค่อนข้างยุ่งยาก ... :-(
Aasmund Eldhuset

The short form -p also works for both commands... คุณหมายถึงgit reset -p filename?
Nawaz

1
@Nawaz: ถูกต้อง - git add -p filenameขั้นตอนการเลือกเปลี่ยนจากไฟล์นั้นและgit reset -p filenameเลือกการเปลี่ยนแปลงขั้นตอน นอกจากนี้ยังgit checkout -p -- filenameช่วยให้คุณสามารถเลือกละทิ้งการเปลี่ยนแปลงจากไฟล์ได้ คำเตือน: แต่ละรายการaddและresetสามารถใช้เพื่อเลิกทำการเปลี่ยนแปลงอีกรายการหนึ่งได้ แต่ถ้าคุณใช้รูปแบบนี้checkoutเพื่อยกเลิกการเปลี่ยนแปลงคุณจะไม่สามารถเรียกคืนได้
Aasmund Eldhuset

2

git guiมี GUI ที่ดีในการแสดงบนเวทีแบบโต้ตอบหรือเปิดฉากฝูงชนหรือเส้น มีไคลเอนต์ GUI ที่สวยกว่า / ดีกว่า แต่git guiมีน้ำหนักเบาในตัวและข้ามแพลตฟอร์ม (lin, win, mac)

https://git-scm.com/docs/git-gui

เพียงคลิกขวาที่ก้อนใหญ่เพื่อแสดงบนเวที / เปิดเวที สำหรับเส้นให้ไฮไลต์เส้นก่อนจากนั้นคลิกขวา


-1

GitXมี UI ที่ดีสำหรับการยกเลิกการจัดเตรียมส่วนของไฟล์: ป้อนคำอธิบายภาพที่นี่

ลูกค้าอย่างเป็นทางการไม่ได้รับการดูแลมาสักระยะหนึ่งแล้ว แต่การแยกไปที่ GitHubพร้อมคุณสมบัติเพิ่มเติมเป็นที่นิยมในบางแวดวง ( โพสต์บล็อกเกี่ยวกับเรื่องนี้ )


1
สำหรับผู้ใช้ Windows ที่นั่นGit Extensionsมี UI ที่ดีเหมือนกัน
Aasmund Eldhuset

4
ดังนั้นในการสร้างgit guiยกเว้นผมไม่แน่ใจว่าผมจะใช้คำว่า "ดี";)
MatrixFrog

1
SourceTree (Windows + Mac) ยังมี UI ที่ดีสำหรับสิ่งนี้
chrnola

ฉันควรพูดถึงไคลเอนต์ Git แบบกราฟิกล่าสุดในตอนนี้ - GitKrakenนั้นสวยงามและรองรับสิ่งนี้ (แม้ว่าตอนนี้จะมาพร้อมกับค่าธรรมเนียมที่สูงสำหรับการใช้งานเชิงพาณิชย์) GitHub DesktopของGitHubนั้นฟรีสวยงามและรองรับการแสดงละครและการแสดงละครได้อย่างง่ายดาย GitKraken และ GitHub Desktop เป็นทั้งข้ามแพลตฟอร์ม แต่ไม่ได้เป็นโอเพ่นซอร์ส
jdgregson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.