Làm thế nào để sử dụng Bitbucket và GitHub cùng một lúc cho một dự án?


94

Tôi có một kho lưu trữ mà tôi muốn đẩy vào Bitbucket và GitHub. Điều quan trọng là kho lưu trữ của tôi được lưu trữ bởi cả hai.

Có cách nào để làm điều này trong Git không?


4
Điều này có vẻ rất hữu ích. Đặc biệt là khi một kho lưu trữ bị ngừng hoạt động. Hiện tại, bitbucket đang gặp trục trặc và về cơ bản tôi không thể làm việc của mình.
imranal

Câu trả lời:


117

Bạn có thể sử dụng nhiều kho lưu trữ từ xa với git. Nhưng tôi tin rằng bạn sẽ phải đẩy riêng vào 2 điều khiển từ xa của mình.

Ví dụ: nếu dự án của bạn hiện trỏ đến github, bạn có thể đổi tên kho lưu trữ từ xa hiện tại của mình thành github:

$ git remote rename origin github

Sau đó, bạn có thể thêm một kho lưu trữ từ xa khác, nói bitbucket:

$ git remote add bitbucket git@bitbucket.org:your_user/your_repo.git

Bây giờ để đẩy các thay đổi sang nhánh tương ứng trên github hoặc bitbucket, bạn có thể làm như sau:

$ git push github HEAD
$ git push bitbucket HEAD

Quy tắc tương tự cũng áp dụng cho việc kéo: bạn cần chỉ định điều khiển từ xa bạn muốn kéo:

$ git pull github your_branch
$ git pull bitbucket your_branch

9
Lưu ý với những người trong tương lai truy cập, .ssh/configtệp của bạn là chìa khóa để đạt được thiết lập này. Thêm một Host github.comvà một Host bitbucket.orgđể xác định cái nào IdentityFilesẽ sử dụng. Sau đó, bạn sẽ không nhận được quyền bị từ chối khi cố gắng trao đổi qua lại giữa bitbucket và github. Hy vọng điều này sẽ giúp ai đó.
Ultimater

31

Đúng, bạn có thể làm điều đó. Bạn không phải đẩy hai lần mà chỉ cần một lần để đẩy tới cả hai kho lưu trữ từ xa. Tôi đã gặp vấn đề tương tự trước đây nên đã viết cách thực hiện ở đây. Git: Đẩy đến / Kéo từ cả Github và Bitbucket


2
Bài viết hay! Sẽ rất tốt nếu bạn có thể đưa một tóm tắt vào đây.
OneHoopyFrood

28

Một số giải pháp DỄ DÀNG .

Nhiều điều khiển từ xa được đẩy (và tìm nạp) độc lập

Đây là cách dễ dàng nhất để bạn có thể xoay sở, nhưng lại tốn nhiều công sức nhất để duy trì.

Chúng tôi bắt đầu bằng cách thêm điều khiển từ xa mới của chúng tôi:

$ cd myproject 
$ git remote add bitbucket ssh://git@bitbucket.org/user/myproject.git 
$ git push bitbucket master

Thẳng về phía trước không? Tất nhiên, ngoại trừ mỗi khi chúng tôi thực hiện bất kỳ thay đổi nào, chúng tôi cần phải đẩy đến cả “nguồn gốc” ban đầu và “bitbucket” từ xa mới của chúng tôi:

$ git push origin master
$ git push bitbucket master

Không phải là một chi phí lớn, nhưng tôi chắc chắn rằng nó sẽ được ghi lại theo thời gian. Hoặc bạn có thể tạo một `alias gpob =" git push origin master && git push bitbucket master ".

Một điều khiển từ xa với nhiều URL được đẩy (và tìm nạp) liên tiếp

Với phương pháp này, chúng tôi sẽ thêm một URL bổ sung vào “origin” từ xa hiện có của chúng tôi:

$ cd myproject
$ git remote set-url --add origin ssh://git@bitbucket.org/user/myproject.git
$ git push origin master
Everything up-to-date
Everything up-to-date

Ít nỗ lực hơn nhiều!

Tất nhiên lớp lót bạc có một đám mây và trong trường hợp này, đó là mặc dù chúng tôi có thể đẩy đến nhiều URL đồng thời, chúng tôi chỉ có thể tìm nạp từ “origin” ban đầu (bạn có thể thay đổi điều này, nhưng điều đó nằm ngoài phạm vi của bài đăng này ).

Cuối cùng, để xem điều khiển từ xa nào sẽ được tìm nạp từ:

$ git remote -v show

Tôi đã viết blog về nó .

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.