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

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

25
แยกไดเรกทอรีย่อย (ย้าย) ออกเป็นที่เก็บ Git แยกต่างหาก
ฉันมีที่เก็บGitซึ่งมีจำนวนไดเรกทอรีย่อย ตอนนี้ฉันได้พบว่าหนึ่งในไดเรกทอรีย่อยที่ไม่เกี่ยวข้องกับอื่น ๆ และควรจะแยกออกไปที่เก็บแยกต่างหาก ฉันจะทำสิ่งนี้ในขณะที่เก็บประวัติของไฟล์ในไดเรกทอรีย่อยได้อย่างไร ฉันเดาว่าฉันสามารถสร้างโคลนและลบส่วนที่ไม่ต้องการของแต่ละโคลนได้ แต่ฉันคิดว่านี่จะให้ต้นไม้ที่สมบูรณ์แก่ฉันเมื่อตรวจสอบการแก้ไขรุ่นเก่า ฯลฯ ซึ่งอาจเป็นที่ยอมรับ แต่ฉันอยากจะแกล้งทำเป็นว่า ที่เก็บสองแห่งไม่มีประวัติที่ใช้ร่วมกัน เพียงเพื่อให้ชัดเจนฉันมีโครงสร้างดังต่อไปนี้ XYZ/ .git/ XY1/ ABC/ XY2/ แต่ฉันต้องการสิ่งนี้แทน: XYZ/ .git/ XY1/ XY2/ ABC/ .git/ ABC/

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

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

11
ฉันจะลบประวัติเก่าออกจากที่เก็บ git ได้อย่างไร
ฉันเกรงว่าฉันจะไม่พบอะไรที่เหมือนสถานการณ์นี้ ฉันมีที่เก็บคอมไพล์ที่มีประวัติมายาวนาน: 500+ สาขา, 500+ แท็กกลับไปจนถึงกลางปี ​​2007 มันมีความมุ่งมั่น ~ 19,500 เราต้องการลบประวัติทั้งหมดก่อนวันที่ 1 มกราคม 2010 เพื่อให้มีขนาดเล็กลงและจัดการได้ง่ายขึ้น (เราจะเก็บสำเนาประวัติทั้งหมดไว้ในที่เก็บถาวร) ฉันรู้ว่าความมุ่งมั่นที่ฉันต้องการจะกลายเป็นรากของที่เก็บใหม่ อย่างไรก็ตามฉันไม่สามารถคิดโมโจ git ที่ถูกต้องเพื่อตัดทอน repo เพื่อเริ่มต้นด้วยความมุ่งมั่นที่ ฉันคาดเดาบางอย่างของ git filter-branch จำเป็นต้องมีการต่อกิ่ง มันก็อาจจะจำเป็นในการรักษาแต่ละสาขา 200+ เราต้องการที่จะให้แยกแล้วแก้ไข repo กลับมารวมกัน (สิ่งที่ฉันทำรู้วิธีการทำ) มีใครเคยทำอะไรแบบนี้บ้างไหม? ฉันมีคอมไพล์ 1.7.2.3 ถ้าเป็นเช่นนั้น

10
แยกไดเรกทอรีย่อยจำนวนมากออกเป็นที่เก็บ Git ใหม่แยกต่างหาก
คำถามนี้อ้างอิงจากไดเร็กทอรีย่อยแยกออกเป็นที่เก็บ Git แยกต่างหาก แทนที่จะแยกไดเรกทอรีย่อยเดียวฉันต้องการแยกสองรายการออก ตัวอย่างเช่นโครงสร้างไดเรกทอรีปัจจุบันของฉันมีลักษณะดังนี้: /apps /AAA /BBB /CCC /libs /XXX /YYY /ZZZ และฉันต้องการสิ่งนี้แทน: /apps /AAA /libs /XXX --subdirectory-filterอาร์กิวเมนต์git filter-branchจะไม่ทำงานเพราะจะได้รับการกำจัดของทุกอย่างยกเว้นไดเรกทอรีที่กำหนดครั้งแรกที่มันวิ่ง ฉันคิดว่าการใช้--index-filterอาร์กิวเมนต์สำหรับไฟล์ที่ไม่ต้องการทั้งหมดจะใช้งานได้ (แม้ว่าจะน่าเบื่อ) แต่ถ้าฉันลองเรียกใช้มากกว่าหนึ่งครั้งฉันจะได้รับข้อความต่อไปนี้: Cannot create a new backup. A previous backup already exists in refs/original/ Force overwriting the backup with -f ความคิดใด ๆ ? TIA


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 …

8
git rm - fatal: pathspec ไม่ตรงกับไฟล์ใด ๆ
ฉันเพิ่มรูปภาพมากกว่า 9000 รูปลงในโฟลเดอร์โครงการโดยไม่ได้ตั้งใจ และมุ่งมั่นพวกเขา จากนั้นลบออกจากดิสก์ มุ่งมั่น. ตอนนี้ฉันพยายามพุชการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์ git แต่ใช้เวลานานเกินไปและพยายามส่งข้อมูล 12 Gb ฉันตรวจสอบขนาดไฟล์บนดิสก์และเห็นว่าจริงๆแล้ว.gitโฟลเดอร์นั้นใช้เวลา 12 Gb จะลบรูปภาพจากที่นั่นได้อย่างไร? ฉันพยายามgit rmแต่ล้มเหลว: ❯ git rm public/photos fatal: pathspec 'public/photos' did not match any files เพราะฉันลบออกจากดิสก์แล้ว แต่มันยังอยู่ใน.gitโฟลเดอร์ ฉันพยายามเพิ่มpublic/photosใน.gitignore: public/photos/ *.zip แต่ไม่มีผล. แน่นอนว่าฉันสามารถทำได้hard reset headในช่วงเวลาที่ฉันไม่มีรูปถ่ายขยะมากมายในโปรเจ็กต์ของฉัน แต่ตั้งแต่นั้นเป็นต้นมาฉันก็ทำผิดหลายครั้งและทำการเปลี่ยนแปลงโค้ดมากมาย

5
แยกที่เก็บ Git ขนาดใหญ่ออกเป็นที่เก็บข้อมูลขนาดเล็กจำนวนมาก
หลังจากแปลงที่เก็บ SVN เป็น Git เรียบร้อยแล้วตอนนี้ฉันมีที่เก็บ Git ขนาดใหญ่มากที่ฉันต้องการแยกย่อยออกเป็นที่เก็บขนาดเล็กหลาย ๆ ที่เก็บและรักษาประวัติไว้ ดังนั้นใครสักคนสามารถช่วยแบ่ง repo ที่อาจมีลักษณะดังนี้: MyHugeRepo/ .git/ DIR_A/ DIR_B/ DIR_1/ DIR_2/ ออกเป็นสองที่เก็บที่มีลักษณะดังนี้: MyABRepo/ .git DIR_A/ DIR_B/ My12Repo/ .git DIR_1/ DIR_2/ ฉันได้พยายามเส้นทางต่อไปนี้ในคำถามก่อนหน้านี้ แต่ก็ไม่ได้จริงๆพอดีเมื่อพยายามที่จะนำไดเรกทอรีหลายเป็น repo แยกต่างหาก ( แยก (ย้าย) ไดเรกทอรีย่อยลงพื้นที่เก็บข้อมูล Git แยกต่างหาก )
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.