ฉันมีที่เก็บหนึ่งที่ฉันต้องการส่งไปยัง Bitbucket และ GitHub เป็นสิ่งสำคัญสำหรับที่เก็บของฉันที่จะโฮสต์โดยทั้งสองอย่าง
มีวิธีทำใน Git หรือไม่?
ฉันมีที่เก็บหนึ่งที่ฉันต้องการส่งไปยัง Bitbucket และ GitHub เป็นสิ่งสำคัญสำหรับที่เก็บของฉันที่จะโฮสต์โดยทั้งสองอย่าง
มีวิธีทำใน Git หรือไม่?
คำตอบ:
คุณสามารถใช้ที่เก็บระยะไกลหลาย ๆ กับ 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
.ssh/config
ไฟล์ของคุณคือกุญแจสำคัญในการตั้งค่านี้ เพิ่ม a Host github.com
และHost bitbucket.org
เพื่อระบุว่าIdentityFile
จะใช้ จากนั้นคุณจะไม่ได้รับอนุญาตถูกปฏิเสธข้อผิดพลาดที่พยายามสลับไปมาระหว่าง bitbucket และ github หวังว่านี่จะช่วยใครบางคนได้
ใช่คุณสามารถทำได้ คุณไม่จำเป็นต้องกดสองครั้ง แต่เพียงครั้งเดียวเพื่อส่งไปยังที่เก็บระยะไกลทั้งสอง ฉันเคยมีปัญหาเดียวกันมาก่อนจึงเขียนวิธีการทำที่นี่ Git: Push to / Pull จากทั้ง Github และ Bitbucket
ไม่กี่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 เพิ่มเติมให้กับ "ต้นทาง" ระยะไกลที่มีอยู่ของเรา:
$ 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
ฉันเขียนบล็อกเกี่ยวกับเรื่องนี้เช่นกัน