Tôi cần phải làm điều gì đó tương tự, nhưng tôi muốn cơ bản di chuyển một tiểu dự án từ repo này sang repo khác. Những gì tôi đã làm thay vào đó là sử dụng tìm nạp, vì nó có thể lấy các đối tượng từ bất kỳ nguồn nào. Vì vậy, về cơ bản, tôi đã tạo ra một chi nhánh mới, xóa những thứ không cần thiết trong nhánh đó, sau đó sử dụng git fetch để kéo nhánh từ repo này sang repo khác. Một khi tôi đã có các đối tượng, hợp nhất đã làm các trick.
Ví dụ:
Trên kho có những thứ ban đầu:
git checkout -b temp master
git rm -r Unneeded_stuff
git commit -m 'pruning'
Sau đó, bạn có thể lấy mà chi nhánh từ một kho lưu trữ vào một hoàn toàn khác nhau (không liên quan):
cd /path/to/other/repository
git fetch /path/to/source/repo temp:temp
nơi tạm: tạm thời phương tiện "tìm nạp temp trên nguồn và lưu nó dưới dạng temp ở đây". Từ đó bạn có thể hợp nhất kết quả vào tổng thể của bạn.
git merge temp
Sau đó, bạn có thể xóa các nhánh tạm thời, vì trong trường hợp đầu tiên nó không phải là thứ bạn muốn kết hợp với repo gốc và trong trường hợp thứ hai bạn đã hợp nhất.
Tôi chắc chắn các bước này có thể được nén một chút, nhưng bộ này có vẻ đẹp và rõ ràng.
Nguồn
2011-06-28 05:46:58
Lưu ý rằng đây là bản sao của http://stackoverflow.com/questions/359424/detach-subdirectory-into-separate-git-repository (như Jim DeLaHunt nói trong câu trả lời của mình). –