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

การเขียนประวัติของที่เก็บ Git ใหม่เช่นแก้ไขคอมมิทเก่าลบข้อมูลที่ไม่ต้องการ (เช่นข้อมูลส่วนตัวหรือไฟล์ขนาดใหญ่) จัดเรียงโครงสร้างไฟล์ใหม่แก้ไขข้อมูลเมตาของคอมมิต ฯลฯ

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

30
จะเปลี่ยนชื่อผู้แต่งและผู้ส่งและอีเมลของคอมมิทหลายรายการใน Git ได้อย่างไร?
Наэтотвопросестьответына กองมากเกินнарусском : Поменятьуавтораикоммитераемейлиимя вовсехкоммитах ฉันกำลังเขียนสคริปต์ง่ายๆในคอมพิวเตอร์ของโรงเรียนและคอมมิชชันการเปลี่ยนแปลง Git (ใน repo ที่อยู่ใน pendrive ของฉันโคลนจากคอมพิวเตอร์ของฉันที่บ้าน) หลังจากการคอมมิทหลายครั้งฉันรู้ว่าฉันกำลังคอมมิทในฐานะผู้ใช้รูท มีวิธีใดที่จะเปลี่ยนผู้สร้างสิ่งเหล่านี้ให้เป็นชื่อของฉัน?

16
วิธีแก้ไขคอมมิทที่ระบุ?
ฉันมักจะส่งรายการข้อผูกพันเพื่อตรวจสอบ หากฉันมีข้อผูกพันต่อไปนี้: HEAD Commit3 Commit2 Commit1 ... git commit --amendฉันรู้ว่าฉันสามารถปรับเปลี่ยนหัวกระทำด้วย แต่ฉันจะแก้ไขCommit1ได้อย่างไรว่ามันไม่ได้HEADกระทำ

19
เราจะเปลี่ยนการประทับเวลาของการคอมมิชชันเก่าใน Git ได้อย่างไร?
คำตอบของวิธีการแก้ไขคอมมิชชันที่ยังไม่ได้ดำเนินการ อธิบายวิธีแก้ไขข้อความคอมมิชชันก่อนหน้าซึ่งยังไม่ได้รับการอัปสตรีม ข้อความใหม่สืบทอดการประทับเวลาของการส่งต้นฉบับ ดูเหมือนว่ามีเหตุผล แต่มีวิธีตั้งเวลาอีกครั้งหรือไม่

18
วิธีการลบ / ลบไฟล์ขนาดใหญ่จากการคอมมิทประวัติในที่เก็บ Git?
บางครั้งฉันทำ DVD-rip ลงในโปรเจ็กต์ของเว็บไซต์จากนั้นสะเพร่าgit commit -a -m ...และในกรณีที่ซื้อคืน repo นั้นมีจำนวน 2.2 กิ๊ก ครั้งต่อไปที่ฉันทำการแก้ไขลบไฟล์วิดีโอและยืนยันทุกอย่าง แต่ไฟล์บีบอัดยังคงอยู่ในที่เก็บในประวัติ ฉันรู้ว่าฉันสามารถเริ่มต้นสาขาจากการกระทำเหล่านั้นและรีบูตสาขาหนึ่งไปยังสาขาอื่น แต่ฉันควรทำอย่างไรเพื่อรวม 2 คอมมิชชันเข้าด้วยกันเพื่อไม่ให้ไฟล์ขนาดใหญ่ปรากฏในประวัติและถูกล้างข้อมูลในขั้นตอนการรวบรวมขยะ

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

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

11
ลบไฟล์ที่มีความละเอียดอ่อนและความมุ่งมั่นของพวกเขาจากประวัติ Git
ฉันต้องการวางโครงการ Git บน GitHub แต่มีไฟล์บางอย่างที่มีข้อมูลที่ละเอียดอ่อน (ชื่อผู้ใช้และรหัสผ่านเช่น /config/deploy.rb สำหรับ capistrano) ฉันรู้ว่าฉันสามารถเพิ่มชื่อไฟล์เหล่านี้ใน. gitignoreแต่นี่จะไม่ลบประวัติของพวกเขาภายใน Git ฉันไม่ต้องการเริ่มต้นใหม่อีกครั้งโดยการลบไดเรกทอรี /.git มีวิธีที่จะลบทุกร่องรอยของไฟล์โดยเฉพาะอย่างยิ่งในประวัติศาสตร์ Git ของคุณหรือไม่

5
แก้ไขการคอมมิทใน Git หรือไม่
มีวิธีในการเปลี่ยนข้อความจากการกระทำในภายหลัง: git commit --amend # for the most recent commit git rebase --interactive master~2 # but requires *parent* คุณสามารถเปลี่ยนข้อความการส่งข้อความของการส่งข้อความครั้งแรก (ซึ่งไม่มีพาเรนต์) ได้อย่างไร

8
รวมสองคอมมิตแรกของที่เก็บ Git หรือไม่?
สมมติว่าคุณมีประวัติที่มีทั้งสามยอมรับA, BและC : A-B-C ฉันต้องการรวมทั้งสองกระทำAและBกับหนึ่งกระทำAB : AB-C ฉันเหนื่อย git rebase -i A ซึ่งเปิดตัวแก้ไขของฉันด้วยเนื้อหาต่อไปนี้: pick e97a17b B pick asd314f C ฉันเปลี่ยนสิ่งนี้เป็น squash e97a17b B pick asd314f C จากนั้น Git 1.6.0.4 พูดว่า: Cannot 'squash' without a previous commit มีวิธีหรือเป็นไปไม่ได้?

5
การรีบูตการคอมไพล์ Git
ใช้กรณีต่อไปนี้: ฉันมีงานในสาขาหัวข้อและตอนนี้ฉันพร้อมที่จะรวมกลับไปเป็นหลัก: * eb3b733 3 [master] [origin/master] | * b62cae6 2 [topic] |/ * 38abeae 1 ฉันดำเนินการผสานจากต้นแบบแก้ไขข้อขัดแย้งและตอนนี้ฉันมี: * 8101fe3 Merge branch 'topic' [master] |\ | * b62cae6 2 [topic] * | eb3b733 3 [origin/master] |/ * 38abeae 1 ตอนนี้การผสานใช้เวลาพอสมควรดังนั้นฉันจึงทำการดึงข้อมูลอีกครั้งและสังเกตว่าสาขาต้นแบบระยะไกลมีการเปลี่ยนแปลงใหม่: * 8101fe3 Merge branch 'topic' [master] |\ | * b62cae6 2 …

3
ลบ refs / original / heads / master จาก git repo หลังจาก filter-branch --tree-filter หรือไม่
ฉันมีคำถามเดียวกันกับที่ถามที่นี่: ที่เก็บ git ใหม่ในไดเรกทอรีรากเพื่อใช้พื้นที่เก็บข้อมูลที่มีอยู่ในไดเรกทอรีย่อย ฉันได้ทำตามคำตอบนี้ที่นี่: ที่เก็บ git ใหม่ในไดเรกทอรีรากเพื่อใช้พื้นที่เก็บข้อมูลที่มีอยู่ในไดเรกทอรีย่อย ตอนนี้gitk --allแสดงให้เห็นว่าทั้งสองประวัติศาสตร์: หนึ่งสูงสุดในปัจจุบันและเป็นหนึ่งในชื่อmasteroriginal/refs/heads/master ฉันไม่รู้ว่าประวัติที่สองนี้คืออะไรหรือจะลบออกจาก repo ได้อย่างไร ฉันไม่ต้องการประวัติสองอันในที่เก็บของฉัน ฉันจะกำจัดมันได้อย่างไร ในการทำซ้ำตัวเอง: mkdir -p project-root/path/to/module cd project-root/path/to/module mkdir dir1 dir2 dir3 for dir in * ; do touch $dir/source-file-$dir.py ; done git init git add . git commit -m 'Initial commit' ตอนนี้เรามีปัญหาของโปสเตอร์ต้นฉบับ ลองย้ายรูทของ git repo …

6
วิธีแก้ไขหลายคอมมิทใน Git เพื่อเปลี่ยนผู้เขียน
ฉันได้ทำคอมมิชชันชุดใน Git และตอนนี้ฉันรู้แล้วว่าฉันลืมตั้งชื่อผู้ใช้และคุณสมบัติอีเมลผู้ใช้อย่างถูกต้อง (เครื่องใหม่) ฉันยังไม่ได้ส่งข้อผูกมัดเหล่านี้ไปยังที่เก็บข้อมูลของฉันดังนั้นฉันจะแก้ไขข้อผูกพันเหล่านี้ได้อย่างไรก่อนที่จะทำเช่นนั้น (เฉพาะการส่งมอบล่าสุด 3 รายการในสาขาหลัก) ฉันได้รับการดูgit resetและgit commit -C <id> --reset-authorแต่ฉันไม่คิดว่าฉันในการติดตามขวา

4
การล้างไฟล์จาก Git repo ล้มเหลวไม่สามารถสร้างข้อมูลสำรองใหม่ได้
ฉันพยายามลบไฟล์ออกจาก repo ระยะไกลโดยเรียกใช้: git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD แต่ Git บ่นว่า ไม่สามารถสร้างข้อมูลสำรองใหม่ การสำรองข้อมูลก่อนหน้านี้มีอยู่แล้วใน refs / original / Force เขียนทับข้อมูลสำรองด้วย -f rm: ไม่สามารถลบ /.git-rewrite/backup-refs: Permission ปฏิเสธ rm: ไม่สามารถลบไดเร็กทอรี /.git-rewrite: Directory not empty หลังจากที่ฉันลบไดเร็กทอรี. git-rewrite บน Windows ไปแล้ว ฉันจะลบไฟล์นั้นได้อย่างไร มันเป็นไฟล์ขนาด 29Mb ที่อยู่ใน repo ของฉันดังนั้นฉันจึงจำเป็นต้องลบไฟล์ออก ฉันพยายามลบคอมมิตในgit rebase -iแต่เห็นได้ชัดว่าเนื่องจากคอมมิตแตะไฟล์ต่างๆจำนวนมาก Git …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.