หากคุณกำลังจะย้ายสาขาทั้งหมดไปยัง repo ใหม่จากคนเก่าแล้วใน repo ท้องถิ่นของคุณคุณจะต้องตั้งค่าการติดตามของแต่ละสาขาไปยังสาขาแหล่งกำเนิดที่มีอยู่ก่อนที่จะผลักดันไป repo ใหม่มิฉะนั้นทุกสาขากำเนิดของคุณจะไม่ปรากฏใน ต้นกำเนิดใหม่ ทำสิ่งนี้ด้วยตนเองโดยการติดตามหรือตรวจสอบแต่ละสาขาหรือใช้หนึ่งซับ:
for remote in `git branch -r | grep -v '\->' | grep -v master`; do git branch --track `echo $remote|sed 's=origin/=='` `echo $remote`; done
คำสั่งหนึ่งบรรทัดนี้ขึ้นอยู่กับเวอร์ชันของคำตอบอื่น ๆ ในหน้านี้ แต่จะดีกว่าเนื่องจาก:
- มันตั้งค่าการติดตามสาขาอย่างถูกต้องซึ่งแตกต่างจากรุ่นเก่าบางส่วนของคำสั่งนี้ในหน้านี้ซึ่งระบุพารามิเตอร์เดียวให้กับ - แทร็กและทำให้แต่ละสาขาสิ้นสุดการติดตามต้นแบบ - ไม่ดี
- ตั้งชื่อสาขาในท้องที่โดยไม่มีคำนำหน้า“ จุดกำเนิด /” ที่ฉันไม่ต้องการ - และสอดคล้องกับสิ่งที่เกิดขึ้นเมื่อคุณชำระเงินตามปกติ
- ข้ามการติดตามหลักตั้งแต่ที่เกิดขึ้นแล้ว
- ไม่ได้เช็คเอาท์อะไรเลยอย่างรวดเร็ว
- หลีกเลี่ยงการสะดุด -> ในเอาต์พุตของ git branch -r
ถัดไปหากคุณเปลี่ยนแหล่งกำเนิดให้เปลี่ยนลิงค์ไปยังแหล่งกำเนิดเก่าและชี้ไปที่รีโมตใหม่ ตรวจสอบให้แน่ใจว่าคุณสร้างรีโมตใหม่ก่อนโดยใช้ bitbucket / github GUI แต่ไม่ต้องเพิ่มไฟล์ใด ๆ ลงไปมิฉะนั้นจะเกิดปัญหาการรวม เช่น
git remote set-url origin git@bitbucket.org:YOUR/SOMEREPO.git
ตอนนี้ดัน หมายเหตุจำเป็นต้องใช้คำสั่งที่สองในการพุชแท็กด้วย:
git push -u --all origin
git push --tags origin