Nhập một dự án git hiện có vào GitLab?


147

Tôi có một tài khoản cài đặt Gitlab nơi tôi đã tạo kho lưu trữ "ffki-startseite"

Bây giờ tôi muốn sao chép kho lưu trữ git://freifunk.in-kiel.de/ffki-startseite.gitvào kho lưu trữ đó với tất cả các cam kết và các nhánh, vì vậy tôi có thể bắt đầu làm việc với nó trong phạm vi của riêng tôi.

Làm thế nào tôi có thể nhập nó?


3
Một tính năng mới của gitlab, tạo dự án và sau đó đi đến trang dự án. Ở đây bạn sẽ thấy hướng dẫn cơ bản.
Martijn van Wezel

Bản sao có thể có của phản chiếu kho Gitlab
kelvin

Các hướng dẫn cơ bản đã có trong các phiên bản mới hơn của Gitlab, có ai có thể sao chép chúng ở đây không?
jdevora

Câu trả lời:


156

Tôi đã có thể xuất hoàn toàn dự án của mình cùng với tất cả các cam kết, các nhánh và thẻ vào gitlab thông qua các lệnh sau chạy cục bộ trên máy tính của tôi:

Để minh họa ví dụ của tôi, tôi sẽ sử dụng https://github.com/raveren/kint làm kho lưu trữ nguồn mà tôi muốn nhập vào gitlab. Tôi đã tạo một dự án trống có tên Kint(dưới không gian tên raveren) trong gitlab trước đó và nó cho tôi biết url git http của dự án mới được tạo có http://gitlab.example.com/raveren/kint.git

Các lệnh là bất khả tri OS.

Trong một thư mục mới :

git clone --mirror https://github.com/raveren/kint
cd kint.git
git remote add gitlab http://gitlab.example.com/raveren/kint.git
git push gitlab --mirror

Bây giờ nếu bạn có một kho lưu trữ nhân bản cục bộ mà bạn muốn tiếp tục sử dụng với điều khiển từ xa mới, chỉ cần chạy các lệnh sau * đó:

git remote remove origin
git remote add origin http://gitlab.example.com/raveren/kint.git
git fetch --all

* Điều này giả định rằng bạn đã không đổi tên chủ từ xa của mình origin, nếu không, thay đổi hai dòng đầu tiên để phản ánh nó.


1
Nó cho tôi lỗi: từ xa: GitLab: Bạn không được phép buộc mã đẩy vào một nhánh được bảo vệ trong dự án này. Đến 10.0.100.89:8496/project/james-project.git ! [từ chối] chủ -> chủ (móc nhận trước bị từ chối)
James Hirschorn

4
Tôi đã phải tắt các nhánh được bảo vệ trong Cài đặt -> Kho lưu trữ để làm việc này.
James Hirschorn

Xem câu hỏi của tôi tại sao bạn sẽ sử dụng --mirror
Martijn van Wezel

108

Thêm gitlab mới từ xa vào kho lưu trữ hiện tại của bạn và đẩy:

git remote add gitlab url-to-gitlab-repo
git push gitlab master

Tôi đã phải đẩy nó bằng vũ lực, vì tôi đã loay hoay trong gitLab rồi : git push gitlab master -f. Bây giờ tôi có toàn bộ repo với tất cả các cam kết trong GitLab mới của tôi;) cảm ơn
rubo77

19
Bạn có cần làm gương không? Điều gì nếu bạn có các chi nhánh khác ngoài chủ?
slhck

7
có, bằng cách làm như OP gợi ý, bạn mất tất cả các chi nhánh (trừ chủ) và thẻ
raveren

Nhập dự án Gitlab sẽ tải repo từ xa từ một URL khi bạn tạo dự án. Bao gồm các hướng dẫn để nhập repo svn.
rickfoosusa

1
git từ xa thêm gitlab url-to-gitlab-repo git đẩy gitlab master --mirror
Saurabh

23

Để giữ TẤT CẢ CÁC TAG VÀ CHI NHÁNH

Chỉ cần chạy lệnh này trong một existing Git repository

cd existing_repo
git remote rename origin previous-hosts
git remote add gitlab git@git.hutber.com:hutber/kindred.com.git
git push -u gitlab --all
git push -u gitlab --tags

Không sao chép tất cả các chi nhánh
Martijn van Wezel

19

Dưới đây là các bước được cung cấp bởi Gitlab:

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.example.com/rmishra/demoapp.git
git push -u origin --all
git push -u origin --tags

Điều này sẽ chỉ đẩy chủ và không phải các chi nhánh khác
allkenang

18

Đây là một di chuyển cơ bản một repo đến vị trí mới. Tôi sử dụng trình tự này tất cả thời gian te. Với --bare sẽ không thấy tập tin nguồn nào.

Mở Git Bash.
Tạo một bản sao trần của kho lưu trữ.

git clone --bare https://github.com/exampleuser/old-repository.git

Gương đẩy vào kho lưu trữ mới.

cd old-repository.git

git push --mirror https://github.com/exampleuser/new-repository.git

Xóa kho lưu trữ cục bộ tạm thời bạn đã tạo ở bước 1.

cd ../
rm -rf old-repository.git

Tại sao gương? Xem tài liệu của git: https://git-scm.com/docs/git-push

--all Đẩy tất cả các nhánh (tức là refs dưới refs / Heads /); không thể được sử dụng với khác.

--mirror Thay vì đặt tên cho mỗi ref để đẩy, chỉ định rằng tất cả các ref theo ref / (bao gồm nhưng không giới hạn ở refs / Heads /, refs / remotes /, và refs / tags /) được nhân đôi vào kho lưu trữ từ xa. Các ref mới được tạo cục bộ sẽ được đẩy đến đầu từ xa, các ref được cập nhật cục bộ sẽ được cập nhật ở đầu từ xa và các ref được xóa sẽ bị xóa khỏi đầu từ xa. Đây là mặc định nếu tùy chọn cấu hình từ xa..mirror được đặt.


Hoạt động với gitlab là tốt!
khăn

12

rake gitlab: import: repos có thể là một phương thức phù hợp hơn để nhập hàng loạt:

  • sao chép kho lưu trữ dưới repos_path( /home/git/repositories/group/repo.git). Tên thư mục phải kết thúc .gitvà nằm dưới một không gian tên nhóm hoặc người dùng.
  • chạy bundle exec rake gitlab:import:repos

Chủ sở hữu sẽ là quản trị viên đầu tiên và một nhóm sẽ được tạo nếu chưa tồn tại.

Xem thêm: Làm thế nào để nhập kho lưu trữ git trần hiện có vào Gitlab?


Đối với những người có thể bị nhầm lẫn, kho lưu trữ trần là kho lưu trữ thường được đặt ở vị trí tập trung (ví dụ: github) KHÔNG chứa thư mục .git ở thư mục gốc của kho lưu trữ. Đây chỉ là một tùy chọn thuận tiện nếu bạn có quyền truy cập vào máy chủ nơi lưu trữ kho lưu trữ trần. Nếu không, câu trả lời của @Raveren là lựa chọn tốt nhất.
TinkerTenorSoftwareGuy

4
git clone --mirror git@github.com:username/repo-name.git

git remote add gitlab ssh://git@servername.com/username/repo.git

git push -f --tags gitlab refs/heads/*:refs/heads/*

Tốt hơn là làm điều đó qua ssh, https có thể sẽ không hoạt động


"https có thể không hoạt động" điều này không bình thường
Martijn van Wezel

Đây là một điều thực sự vì các kết nối HTTP có thể bị vô hiệu hóa. Cảm ơn câu trả lời.
Mi-chê

2

Chuyển một dự án từ GitHub sang GitLab bao gồm các vấn đề, kéo yêu cầu Wiki, Cột mốc, Nhãn, Ghi chú phát hành và nhận xét

Có một hướng dẫn kỹ lưỡng trên GitLab Docs:

https://docs.gitlab.com/ee/user/project/import/github.html

tl; dr

  • Đảm bảo rằng bất kỳ người dùng GitHub nào bạn muốn ánh xạ tới người dùng GitLab đều có:

    • Tài khoản GitLab đã đăng nhập bằng biểu tượng GitHub - hoặc -
    • Tài khoản GitLab có địa chỉ email khớp với địa chỉ email công khai của người dùng GitHub
  • Từ thanh điều hướng trên cùng, nhấp vào + và chọn Dự án mới.

  • Chọn tab Nhập dự án và sau đó chọn GitHub.
  • Chọn nút đầu tiên để liệt kê kho GitHub của bạn. Bạn được chuyển hướng đến một trang trên github.com để ủy quyền cho ứng dụng GitLab.
  • Nhấp vào Ủy quyền gitlabhq. Bạn được chuyển hướng trở lại trang Nhập của GitLab và tất cả các kho GitHub của bạn được liệt kê.
  • Tiếp tục chọn kho lưu trữ nào để nhập.

Nhưng vui lòng đọc trang Tài liệu GitLab để biết chi tiết và móc!

(Nó không nhiều đâu)


1

Gitlab có một chút lỗi về tính năng này. Bạn có thể mất rất nhiều thời gian để xử lý sự cố đặc biệt nếu dự án của bạn lớn.

Giải pháp tốt nhất sẽ là sử dụng công cụ tạo / nhập, đừng quên đặt tên người dùng và mật khẩu của bạn, nếu không nó sẽ không nhập bất cứ thứ gì cả.

Theo dõi ảnh chụp màn hình của tôi

nhập mô tả hình ảnh ở đây

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.