Nếu bạn đang chuyển tất cả các nhánh sang một repo mới từ một repo cũ thì trong repo cục bộ của bạn, bạn cần thiết lập theo dõi từng nhánh đến các nhánh gốc hiện có, trước khi đẩy sang repo mới, nếu không tất cả các nhánh gốc của bạn sẽ không xuất hiện trong nguồn gốc mới. Làm điều này bằng tay bằng cách theo dõi hoặc kiểm tra từng chi nhánh hoặc sử dụng một lớp lót:
for remote in `git branch -r | grep -v '\->' | grep -v master`; do git branch --track `echo $remote|sed 's=origin/=='` `echo $remote`; done
Lệnh một dòng này dựa trên các phiên bản của nó trong các câu trả lời khác trên trang này, nhưng được cho là tốt hơn bởi vì:
- nó thiết lập chính xác theo dõi nhánh, không giống như một số biến thể cũ hơn của lệnh này trên trang này chỉ cung cấp một tham số cho --track và do đó mỗi nhánh kết thúc theo dõi chính - không tốt
- đặt tên cho các chi nhánh địa phương mà không có tiền tố Xuất xứ / điều mà cá nhân tôi không muốn - và phù hợp với những gì xảy ra khi bạn kiểm tra một chi nhánh bình thường.
- bỏ qua chủ theo dõi vì điều đó đã xảy ra
- không thực sự kiểm tra bất cứ điều gì vì vậy là nhanh
- tránh vấp ngã trên -> trong đầu ra của nhánh git -r
Tiếp theo, nếu bạn đang chuyển đổi nguồn gốc, hãy thay thế liên kết đến nguồn gốc cũ và trỏ đến một điều khiển từ xa mới. Đảm bảo bạn tạo điều khiển từ xa mới trước, sử dụng GUI bitbucket / github, nhưng không thêm bất kỳ tệp nào vào đó hoặc sẽ có vấn đề hợp nhất. Ví dụ
git remote set-url origin git@bitbucket.org:YOUR/SOMEREPO.git
Bây giờ đẩy. Lưu ý lệnh thứ hai là cần thiết để đẩy các thẻ:
git push -u --all origin
git push --tags origin