วิธีลบต้นกำเนิดออกจากที่เก็บ git


279

คำถามพื้นฐาน: ฉันจะยกเลิกการเชื่อมโยง repo git จากแหล่งที่มาที่ถูกโคลนได้อย่างไร

git branch -a แสดงให้เห็นว่า:

* master
  remotes/origin/HEAD -> origin/master

และฉันต้องการลบความรู้เกี่ยวกับแหล่งกำเนิดและการแก้ไขที่เกี่ยวข้องทั้งหมด

คำถามอีกต่อไป: ฉันต้องการใช้ repo การโค่นล้มที่มีอยู่และสร้าง repos git จำนวนน้อยจากนั้น repos git ใหม่แต่ละอันควรมีประวัติเต็มของสาขาที่เกี่ยวข้องเท่านั้น ฉันสามารถตัด repo เป็นทรีย่อยที่ต้องการโดยใช้:

git filter-branch --subdirectory-filter path/to/subtree HEAD

แต่ธุรกรรมซื้อคืนที่เกิดขึ้นยังคงมีการแก้ไขทรีย่อยที่ถูกทิ้งไปทั้งหมดภายใต้สาขาต้นทาง / ต้นแบบ

ฉันรู้ว่าฉันสามารถใช้แฟล็ก -T เพื่อ git-svn เพื่อโคลนทรีย่อยที่เกี่ยวข้องของ repo การโค่นล้มในตอนแรก ฉันไม่แน่ใจว่ามันจะมีประสิทธิภาพมากกว่าในภายหลังเมื่อใช้หลายอินสแตนซ์ของgit filter-branch --subdirectory-filterสำเนา git repo แต่ไม่ว่าในกรณีใดฉันก็ยังอยากจะทำลายลิงค์กับต้นกำเนิด

คำตอบ:


476

ค่อนข้างตรงไปตรงมา:

git remote rm origin

สำหรับfilter-branchคำถาม - เพียงเพิ่ม--prune-emptyคำสั่งตัวกรองสาขาของคุณและมันจะลบการแก้ไขใด ๆ ที่ไม่ได้มีการเปลี่ยนแปลงใด ๆ ใน repo ผลลัพธ์ของคุณ:

git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD

1
ขอบคุณ มันเป็นสิ่ง--prune-emptyที่ฉันขาดหายไป
awy

2
อืมมม ได้รับerror: Could not remove config section 'remote.origin'
Dima Lituiev

5

ลบจุดเริ่มต้นที่มีอยู่และเพิ่มจุดเริ่มต้นใหม่ลงในไดเรกทอรีโครงการของคุณ

>$ git remote show origin

>$ git remote rm origin

>$ git add .

>$ git commit -m "First commit"

>$ git remote add origin Copied_origin_url

>$ git remote show origin

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