Chuyển kho git từ GitLab sang GitHub - chúng ta có thể, làm thế nào và cạm bẫy (nếu có) không?


204

Có thể chuyển kho từ GitLab sang GitHub nếu cần. Nếu vậy, làm thế nào chính xác tôi có thể làm như vậy?

Ngoài ra, có bất kỳ cạm bẫy nào khi làm như vậy hoặc các biện pháp phòng ngừa mà tôi cần ghi nhớ trước khi thực hiện để tôi có thể quyết định chuyển chúng sang GitHub (vì nó có nhiều tính năng hơn vào lúc này mà tôi có thể thấy hữu ích cho dự án của mình ).

Câu trả lời:


210

Bạn có thể chuyển chúng (đơn giản bằng cách thêm một điều khiển từ xa vào repo GitHub và bằng cách đẩy chúng)

  • tạo một repo trống trên GitHub
  • git remote add github https://yourLogin@github.com/yourLogin/yourRepoName.git
  • git push --mirror github

Lịch sử sẽ giống nhau.

Nhưng bạn sẽ mất kiểm soát truy cập (các nhóm được xác định trong GitLab với quyền truy cập cụ thể trên repo của bạn)

Nếu bạn gặp phải bất kỳ vấn đề nào với URL https của repo GitHub:

The requested URL returned an error: 403

Tất cả những gì bạn cần làm là nhập mật khẩu GitHub của mình, nhưng OP gợi ý:

Sau đó, bạn có thể cần phải đẩy nó theo cách ssh. Bạn có thể đọc thêm về cách làm điều đó ở đây.

Xem " Đẩy vào Git trả về Mã lỗi 403 gây tử vong: Yêu cầu HTTP không thành công ".


Cảm ơn Von - câu trả lời của bạn đã giúp tôi. Tôi vừa thêm một chút vào câu trả lời của bạn về git remote chính xác thêm cmd và đẩy mọi thứ theo cách ssh nếu cần. Hy vọng là ổn.
Bồ tát

@boddhisattva Không sao, nhưng tôi thấy chỉnh sửa của bạn đã bị từ chối. Tôi đã thêm nó trở lại trong câu trả lời chính mình.
VonC

5
Bất kỳ ý kiến ​​về nhập khẩu vấn đề và nhãn? Có thể nhập bất cứ thứ gì ngoài mã bằng cách kéo và đẩy không? Cảm ơn.

@YakovK Tôi không biết về một quy trình tự động có tính đến PR và các vấn đề. Ít nhất, PR trong GitHub là các nhánh (xem stackoverflow.com/a/30542987/6309 ), do đó có thể được nhập.
VonC

1
@kiki nó sẽ đẩy tất cả các chi nhánh địa phương, nhưng nếu repo cục bộ của bạn là bản sao, nó sẽ chỉ có chủ như là chi nhánh kiểm tra cục bộ mặc định của nó. Trước tiên, bạn phải tạo các nhánh cục bộ khác sau các nhánh theo dõi từ xa lặp lại của chúng, trước khi sử dụng push --mirror. stackoverflow.com/a/18911322/6309 . Xem thêm giải pháp thay thế được đề cập tại stackoverflow.com/a/24099141/6309 (câu cuối)
VonC

149

Điều này rất dễ dàng bằng cách nhập tính năng kho lưu trữ Đăng nhập vào github.com,

Bên cạnh hình ảnh hồ sơ bạn sẽ tìm thấy +nút bấm vào đó sau đó sẽ có tùy chọn import repository. bạn sẽ tìm thấy trang như thế này. nhập mô tả hình ảnh ở đây URL bản sao của kho lưu trữ cũ của bạn là bắt buộc, đó là url repo gitlab trong trường hợp của bạn. sau đó chọn Chủ sở hữu và sau đó nhập tên cho repo này và nhấp để bắt đầu nhập nút.


33
Đó là siêu tiện lợi mà GitHub đã thêm vào đó. Tuy nhiên, nó sẽ không hoạt động nếu đó là một GitLab nội bộ phía sau tường lửa, đại diện cho trường hợp sử dụng lớn cho GitLab.
abalter

7
Chỉ cần một lưu ý nhanh cho bất cứ ai khác sử dụng tùy chọn nhập khẩu. Tôi đã phải vô hiệu hóa MFA trên GitLab để nó hoạt động.
D-Day

2
Điều này hoạt động tốt. Tốt hơn nhiều so với câu trả lời được chấp nhận
LnxSlck

Làm thế nào nếu tôi muốn nhập chi nhánh?
coderInrRain

1
Kho lưu trữ đã nhập không nhất thiết phải được công khai ngay bây giờ, vì github đã làm cho việc thêm các kho riêng tư miễn phí.
Shrey Garg


7

Tôi đã gặp vấn đề ngược lại và cuối cùng phải tạo ra tập lệnh bash shell của riêng mình cho công ty để chuyển hàng trăm repos từ Github sang Gitlab do thay đổi chính sách của công ty.
Kịch bản sử dụng API Gitlab để tạo repo từ xa và đẩy repo Github vào đó. Chưa có tệp README.md, nhưng sh được ghi lại rõ ràng.
Điều tương tự có thể được thực hiện ngược lại theo cách tôi tưởng tượng. Hy vọng điều này có thể giúp đỡ.
https://github.com/mahmalsami/migrate-github-gitlab/blob/master/migrate.sh


2

Nếu bạn đã bật MFA trên GitLab, bạn nên truy cập Cài đặt / Kho lưu trữ -> Triển khai khóa và tạo một khóa, sau đó sử dụng nó làm thông tin đăng nhập trong khi nhập repo trên GitHub

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.