จะใช้ Bitbucket และ GitHub พร้อมกันสำหรับโครงการเดียวได้อย่างไร?


95

ฉันมีที่เก็บหนึ่งที่ฉันต้องการส่งไปยัง Bitbucket และ GitHub เป็นสิ่งสำคัญสำหรับที่เก็บของฉันที่จะโฮสต์โดยทั้งสองอย่าง

มีวิธีทำใน Git หรือไม่?


4
สิ่งนี้ดูเหมือนมีประโยชน์มาก โดยเฉพาะอย่างยิ่งเมื่อที่เก็บหนึ่งไม่ทำงาน ในขณะนี้ bitbucket หยุดทำงานและโดยพื้นฐานแล้วฉันไม่สามารถทำงานได้
imranal

คำตอบ:


120

คุณสามารถใช้ที่เก็บระยะไกลหลาย ๆ กับ git แต่คุณจะต้องแยกออกเป็น 2 รีโมทของคุณที่ฉันเชื่อ

ตัวอย่างเช่นหากโครงการของคุณชี้ไปที่ github ในปัจจุบันคุณสามารถเปลี่ยนชื่อที่เก็บระยะไกลปัจจุบันของคุณเป็นgithub:

$ git remote rename origin github

จากนั้นคุณสามารถเพิ่มที่เก็บระยะไกลอื่นโดยพูดว่าbitbucket:

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

ตอนนี้เพื่อที่จะผลักดันการเปลี่ยนแปลงไปยังสาขาที่เกี่ยวข้องบน github หรือ bitbucket คุณสามารถทำได้:

$ git push github HEAD
$ git push bitbucket HEAD

กฎเดียวกันนี้ใช้กับการดึง: คุณต้องระบุว่าคุณต้องการดึงจากรีโมตใด:

$ git pull github your_branch
$ git pull bitbucket your_branch

9
โปรดทราบว่าคนที่มาเยี่ยมในอนาคต.ssh/configไฟล์ของคุณคือกุญแจสำคัญในการตั้งค่านี้ เพิ่ม a Host github.comและHost bitbucket.orgเพื่อระบุว่าIdentityFileจะใช้ จากนั้นคุณจะไม่ได้รับอนุญาตถูกปฏิเสธข้อผิดพลาดที่พยายามสลับไปมาระหว่าง bitbucket และ github หวังว่านี่จะช่วยใครบางคนได้
Ultimater

31

ใช่คุณสามารถทำได้ คุณไม่จำเป็นต้องกดสองครั้ง แต่เพียงครั้งเดียวเพื่อส่งไปยังที่เก็บระยะไกลทั้งสอง ฉันเคยมีปัญหาเดียวกันมาก่อนจึงเขียนวิธีการทำที่นี่ Git: Push to / Pull จากทั้ง Github และ Bitbucket


2
โพสต์ดีๆ! จะเป็นการดีหากคุณสามารถรวมฤดูร้อนไว้ที่นี่ได้
OneHoopyFrood

28

ไม่กี่EASYการแก้ปัญหา

รีโมทหลายตัวผลัก (และดึงข้อมูล) อย่างอิสระ

วิธีนี้เป็นวิธีที่ง่ายที่สุดในการก้มหน้า แต่ต้องพยายามมากที่สุดในการรักษา

เราเริ่มต้นด้วยการเพิ่มรีโมทใหม่ของเรา:

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

ตรงไปตรงมาไม่? ยกเว้นแน่นอนทุกครั้งที่เราทำการเปลี่ยนแปลงใด ๆ เราจำเป็นต้องผลักดันทั้ง "ต้นทาง" ดั้งเดิมและ "บิตบัคเก็ต" ระยะไกลใหม่ของเรา:

$ git push origin master
$ git push bitbucket master

ไม่ใช่ค่าใช้จ่ายที่มาก แต่ฉันแน่ใจว่ามันจะเสียดสีเมื่อเวลาผ่านไป หรือคุณสามารถสร้าง `alias gpob =" git push origin master && git push bitbucket master "

รีโมตเดียวที่มี URL หลายรายการที่ผลักดัน (และดึงข้อมูล) ติดต่อกัน

ด้วยวิธีนี้เราจะเพิ่ม URL เพิ่มเติมให้กับ "ต้นทาง" ระยะไกลที่มีอยู่ของเรา:

$ 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

ออกแรงน้อยกว่ามาก!

แน่นอนว่าซับเงินมีเมฆและในกรณีนี้ก็คือในขณะที่เราสามารถพุชไปยัง URL หลายรายการพร้อมกัน แต่เราสามารถดึงข้อมูลจาก "ต้นทาง" ดั้งเดิมเท่านั้น (คุณสามารถเปลี่ยนแปลงได้ แต่โพสต์นี้อยู่นอกขอบเขต ).

สุดท้ายเพื่อดูว่ารีโมทใดจะถูกดึงมาจาก:

$ git remote -v show

ฉันเขียนบล็อกเกี่ยวกับเรื่องนี้เช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.