Cách xóa nguồn gốc khỏi kho git


278

Câu hỏi cơ bản: Làm thế nào để tôi tách liên kết một git repo khỏi nguồn gốc mà nó được nhân bản?

git branch -a trình diễn:

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

và tôi muốn loại bỏ tất cả kiến ​​thức về nguồn gốc và các sửa đổi liên quan.

Câu hỏi dài hơn: Tôi muốn có một repo lật đổ hiện có và tạo ra một số repo git nhỏ hơn từ nó. Mỗi repos git mới nên có toàn bộ lịch sử của chi nhánh liên quan. Tôi có thể cắt bớt repo thành cây con mong muốn bằng cách sử dụng:

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

nhưng repo kết quả vẫn chứa tất cả các bản sửa đổi của các cây con đã bị loại bỏ dưới nhánh gốc / nhánh chính.

Tôi nhận ra rằng tôi có thể sử dụng cờ -T để git-svn để sao chép cây con có liên quan của repo lật đổ ở vị trí đầu tiên. Tôi không chắc liệu điều đó có hiệu quả hơn sau này khi chạy nhiều git filter-branch --subdirectory-filterbản sao của các bản sao của git repo hay không, nhưng trong mọi trường hợp, tôi vẫn muốn phá vỡ liên kết với nguồn gốc.

Câu trả lời:


472

Khá đơn giản:

git remote rm origin

Đối với filter-branchcâu hỏi - chỉ cần thêm --prune-emptyvào lệnh nhánh bộ lọc của bạn và nó sẽ xóa mọi sửa đổi không thực sự chứa bất kỳ thay đổi nào trong repo kết quả của bạn:

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

1
Cảm ơn. Đó là cái --prune-emptymà tôi đã mất tích.
khủng khiếp

2
Hừm. nhận đượcerror: Could not remove config section 'remote.origin'
Dima Lituiev

5

Xóa nguồn gốc hiện có và thêm nguồn gốc mới vào thư mục dự án của bạn

>$ 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.