Tôi có một máy chủ mà tôi đang gỡ xuống. Điều duy nhất tôi còn lại để di chuyển là kho lưu trữ của tôi. Máy chủ này được liệt kê là nguồn gốc (chính) cho một trong các dự án của tôi. Cách thích hợp để di chuyển kho lưu trữ để giữ lịch sử.
Tôi có một máy chủ mà tôi đang gỡ xuống. Điều duy nhất tôi còn lại để di chuyển là kho lưu trữ của tôi. Máy chủ này được liệt kê là nguồn gốc (chính) cho một trong các dự án của tôi. Cách thích hợp để di chuyển kho lưu trữ để giữ lịch sử.
Câu trả lời:
Để thêm vị trí repo mới,
git remote add new_repo_name new_repo_url
Sau đó đẩy nội dung đến vị trí mới
git push new_repo_name master
Cuối cùng loại bỏ cái cũ
git remote rm origin
Sau đó, bạn có thể thực hiện những gì bdonlan đã nói và chỉnh sửa tệp.git / config để thay đổi new_Vpo_name thành nguồn gốc. Nếu bạn không xóa nguồn gốc (kho lưu trữ từ xa gốc), bạn chỉ cần đẩy các thay đổi sang repo mới bằng
git push new_repo_name master
git push -u new_repo_name --all
.
git remote rename new_repo_name origin
Nếu bạn muốn di chuyển tất cả các nhánh và thẻ, bạn nên sử dụng các lệnh sau:
git clone --mirror [oldUrl]
nhân bản repo cũ với tất cả các chi nhánh
cd the_repo
git remote add remoteName newRepoUrl
để thiết lập một điều khiển từ xa mới
git push -f --tags remoteName refs/heads/*:refs/heads/*
để đẩy tất cả các ref dưới refs / Heads (có lẽ là những gì bạn muốn)
--tags
và refs/heads/*:refs/heads/*
không tương thích với --mirror
. stackoverflow.com/a/26552740/1484831 hoạt động tốt.
refs/heads/refs/heads
bằng cách sử dụng git push -f --tags remoteName refs/heads/*:refs/heads/*
vì vậy tôi đã đổi sanggit push remoteName --mirror
push
cũng hỗ trợ --mirror
. git clone --mirror; cd repo; git push --mirror new_remote
nên thực hiện các mẹo
Điều này làm việc cho tôi hoàn hảo .
git clone --mirror <URL to my OLD repo location>
cd <New directory where your OLD repo was cloned>
git remote set-url origin <URL to my NEW repo location>
git push -f origin
Tôi phải đề cập đến mặc dù điều này tạo ra một tấm gương của repo hiện tại của bạn và sau đó đẩy nó đến vị trí mới. Do đó, điều này có thể mất một thời gian cho các repos lớn hoặc kết nối chậm .
git push --mirror origin
hơn -f
.
Sao chép nó qua. Nó thực sự đơn giản. :)
Về phía khách hàng, chỉ cần chỉnh sửa .git / config trong repo cục bộ của máy khách để trỏ từ xa của bạn tới URL mới khi cần thiết.
Đây là loại được thực hiện trong các phần trong một số câu trả lời khác.
git clone --mirror git@oldserver:oldproject.git
cd oldproject.git
git remote add new git@newserver:newproject.git
git push --mirror new
--mirror
trong việc thúc đẩy là rất quan trọng: đây phải là câu trả lời chính xác
git init --bare
Tôi chỉ đăng lại những gì người khác đã nói, trong một danh sách đơn giản để làm theo danh sách hướng dẫn.
Di chuyển kho lưu trữ: Chỉ cần đăng nhập vào máy chủ mới, cd
vào thư mục mẹ nơi bạn muốn giữ kho lưu trữ và sử dụng rsync
để sao chép từ máy chủ cũ:
new.server> rsync -a -v -e ssh user@old.server.com:path/to/repository.git .
Làm cho máy khách trỏ đến kho lưu trữ mới: Bây giờ trên mỗi máy khách sử dụng kho lưu trữ, chỉ cần xóa con trỏ về nguồn gốc cũ và thêm một con trỏ vào kho lưu trữ mới.
client> git remote rm origin
client> git remote add origin user@new.server.com:path/to/repository.git
git remote set-url origin user@new.server.com:path/to/repository.git
Hãy xem công thức này trên GitHub: https://help.github.com/articles/importing-an-external-git-reposeective
Tôi đã thử một số phương pháp trước khi khám phá git push --mirror
.
Làm việc như người ở!
git clone --mirror ...
, git remote add ...
,git push --mirror ...
Tôi đã làm theo hướng dẫn trên BitBucket để di chuyển một repo với tất cả các chi nhánh của nó ở đó. Đây là các bước với lời giải thích sau #
nhân vật:
cd path/to/local/repo
git remote remove origin # to get rid of the old setting, this was not in the BitBucket instructions
git remote add origin ssh://git@bitbucket.org/<username>/<newrepo> # modify URL as needed
git push -u origin --all # pushes _ALL_ branches in one go
git push -u origin --tags # pushes _ALL_ tags in one go
Làm việc độc đáo cho tôi.
Đây là một biến thể của câu trả lời này , hiện được gitlab đề xuất để "di chuyển" một kho lưu trữ git từ máy chủ này sang máy chủ khác.
Hãy để chúng tôi giả định rằng dự án cũ của bạn được gọi existing_repo
, được lưu trữ trong một existing_repo
thư mục.
Tạo một repo trên máy chủ mới của bạn. Chúng tôi sẽ cho rằng url của dự án mới đó làgit@newserver:newproject.git
Mở giao diện dòng lệnh và nhập thông tin sau:
cd existing_repo
git remote rename origin old-origin
git remote add origin git@newserver:newproject.git
git push -u origin --all
git push -u origin --tags
Lợi ích của phương pháp này là bạn không xóa chi nhánh tương ứng với máy chủ cũ của mình.
Bạn có thể sử dụng lệnh sau:
git remote set-url --push origin new_repo_url
Ví dụ từ http://gitref.org/remotes/
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/github/git-reference.git (push)
$ git remote set-url --push origin git://github.com/pjhyett/hw.git
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/pjhyett/hw.git (push)
Nên đơn giản như:
git remote set-url origin git://new.url.here
Bằng cách này, bạn giữ tên origin
cho repo mới của mình - sau đó đẩy sang repo mới như repo cũ như chi tiết trong các câu trả lời khác. Giả sử bạn làm việc một mình và bạn có một repo cục bộ mà bạn muốn phản chiếu với tất cả hành trình của bạn trong đó, bạn cũng có thể (từ bên trong repo địa phương của bạn)
git push origin --mirror # origin points to your new repo
nhưng xem "git đẩy --mirror" có đủ để sao lưu kho lưu trữ của tôi không? (trong tất cả không sử dụng --mirror
nhưng một lần).
Nếu bạn muốn chuyển từ nguồn gốc này sang nguồn gốc khác và cũng giữ một bản sao lưu nguồn gốc hiện tại của mình trên máy cục bộ, bạn có thể sử dụng các bước sau:
Bây giờ trong thư mục làm
git remote get-url origin
Lệnh trên cung cấp url nguồn gốc từ xa hiện tại, hữu ích để đặt lại nguồn gốc ở bước cuối cùng
git remote set-url origin git@github.newlocation:folder/newrepo.git
Lệnh trên đặt nguồn gốc từ xa đến vị trí mới
git push --set-upstream origin develop
Lệnh trên đẩy nhánh cục bộ đang hoạt động hiện tại lên từ xa với tên nhánh phát triển. Tất nhiên nó bảo tồn tất cả lịch sử như với git, tất cả lịch sử cũng được đẩy mạnh.
git remote set-url origin <original old origin>
Lệnh trên đặt lại nguồn gốc từ xa về nguồn gốc hiện tại của bạn: bạn muốn điều này bởi vì bạn đang ở trong thư mục hiện tại của bạn và bạn có thể không muốn trộn lẫn tên thư mục cục bộ hiện tại của mình với thư mục mới mà bạn sẽ tạo để sao chép repo bạn chỉ cần đẩy đến.
Hi vọng điêu nay co ich,
Nếu bạn muốn di chuyển kho lưu trữ #git từ một máy chủ sang máy chủ mới, bạn có thể làm như thế này:
git clone OLD_REPOSITORY_PATH
cd OLD_REPOSITORY_DIR
git remote add NEW_REPOSITORY_ALIAS NEW_REPOSITORY_PATH
#check out all remote branches
for remote in `git branch -r | grep -v master `; do git checkout --track $remote ; done
git push --mirror NEW_REPOSITORY_PATH
git push NEW_REPOSITORY_ALIAS --tags
Tất cả các nhánh và thẻ từ xa từ kho lưu trữ cũ sẽ được sao chép vào kho lưu trữ mới.
Chạy lệnh này một mình:
git push NEW_REPOSITORY_ALIAS
sẽ chỉ sao chép một nhánh chính (chỉ theo dõi các nhánh) vào kho lưu trữ mới.