โอนที่เก็บข้อมูล git จาก GitLab ไปยัง GitHub - เราจะทำอย่างไรและผิดพลาด (ถ้ามี) ได้ไหม?


204

สามารถถ่ายโอนที่เก็บจาก GitLab ไปยัง GitHub ได้ไหมถ้าต้องการ ถ้าเป็นเช่นนั้นฉันจะทำสิ่งเดียวกันได้อย่างไร?

นอกจากนี้ยังมีข้อผิดพลาดใด ๆ ในการทำเช่นนั้นหรือมาตรการป้องกันไว้ล่วงหน้าที่ฉันต้องจำไว้ก่อนที่จะทำเช่นนั้นเนื่องจากฉันอาจตัดสินใจย้ายพวกเขาไปที่ GitHub ในที่สุด (เนื่องจากมีคุณสมบัติเพิ่มเติมในขณะที่ฉันอาจพบว่ามีประโยชน์สำหรับโครงการของฉัน )

คำตอบ:


210

คุณสามารถถ่ายโอนสิ่งเหล่านั้นได้ (เพียงเพิ่มรีโมตไปยัง repo ของ GitHub และกดพวกมัน)

  • สร้าง repo ที่ว่างเปล่าบน GitHub
  • git remote add github https://yourLogin@github.com/yourLogin/yourRepoName.git
  • git push --mirror github

ประวัติจะเหมือนกัน

แต่คุณจะสูญเสียการควบคุมการเข้าถึง (ทีมที่กำหนดไว้ใน GitLab มีสิทธิ์การเข้าถึงเฉพาะใน repo ของคุณ)

หากคุณประสบปัญหากับ https URL ของ repo GitHub:

The requested URL returned an error: 403

สิ่งที่คุณต้องทำคือป้อนรหัสผ่าน GitHub ของคุณ แต่ OP แนะนำ:

จากนั้นคุณอาจจำเป็นต้องผลักดันวิธีการ ssh คุณสามารถอ่านเพิ่มเติมเกี่ยวกับวิธีการทำที่นี่

ดูที่ "การผลักดันไปยัง Git ที่ส่งคืนรหัสข้อผิดพลาด 403 ร้ายแรง: คำขอ HTTP ล้มเหลว "


ขอบคุณฟอน - คำตอบของคุณทำให้ฉันได้ฉันเพิ่งเพิ่มคำตอบของคุณเกี่ยวกับ git remote ที่แน่นอนเพิ่ม cmd และผลักดันสิ่งต่าง ๆ ในแบบที่คุณต้องการ หวังว่าไม่เป็นไร
boddhisattva

@boddhisattva ไม่เป็นไร แต่ฉันเห็นว่าการแก้ไขของคุณถูกปฏิเสธ ฉันได้เพิ่มมันกลับมาในคำตอบของตัวเอง
VonC

5
ความคิดเห็นใด ๆ เกี่ยวกับปัญหาการนำเข้าและป้ายกำกับ? สามารถนำเข้าสิ่งอื่นใดนอกจากรหัสโดยการดึงแล้วพุช ขอบคุณ

@ YakovK ฉันไม่ได้ตระหนักถึงกระบวนการอัตโนมัติที่คำนึงถึงการประชาสัมพันธ์และปัญหา อย่างน้อย PR ใน GitHub เป็นสาขา (ดูstackoverflow.com/a/30542987/6309 ) เพื่อให้สามารถนำเข้าได้
VonC

1
@ kiki มันจะผลักสาขาในประเทศทั้งหมดแต่ถ้า repo ในพื้นที่ของคุณเป็นโคลนมันจะมีมาสเตอร์เป็นสาขาเริ่มต้นที่สาขาในท้องถิ่นเท่านั้น ครั้งแรกที่คุณต้องสร้างสาขาในประเทศอื่น ๆ หลังจาก repsective push --mirrorของพวกเขาจากระยะไกลติดตามสาขาก่อนที่จะใช้ stackoverflow.com/a/18911322/6309 ดูตัวเลือกอื่น ๆ ที่กล่าวถึงในstackoverflow.com/a/24099141/6309 (ประโยคสุดท้าย)
VonC

149

นี้เป็นเรื่องง่ายมากโดยคุณลักษณะพื้นที่เก็บข้อมูลนำเข้าสู่ระบบgithub.com,

ด้านข้างของภาพรายละเอียดที่คุณจะพบปุ่มคลิกที่ว่าตัวเลือกแล้วจะมีการ+ import repositoryคุณจะพบหน้านี้ ป้อนคำอธิบายรูปภาพที่นี่ ต้องมีการโคลน URL พื้นที่เก็บข้อมูลเก่าของคุณซึ่งเป็น gitlab repo url ในกรณีของคุณ จากนั้นเลือกเจ้าของแล้วพิมพ์ชื่อสำหรับ repo นี้และคลิกเพื่อเริ่มการนำเข้าปุ่ม


33
นั่นสะดวกสุด ๆ ที่ GitHub ได้เพิ่มเข้าไป อย่างไรก็ตามมันจะไม่ทำงานหากเป็น GitLab ภายในหลังไฟร์วอลล์ซึ่งแสดงถึงกรณีการใช้งานที่มีขนาดใหญ่สำหรับ GitLab
ปิดบัง

7
เพียงบันทึกย่อสำหรับคนอื่น ๆ โดยใช้ตัวเลือกการนำเข้า ฉันต้องปิดการใช้งาน MFA ใน GitLab เพื่อให้สิ่งนี้ทำงาน
D-Day

2
ใช้งานได้ดี ดีกว่าคำตอบที่ได้รับการยอมรับ
LnxSlck

ฉันจะนำเข้าสาขาได้อย่างไร
coderInrRain

1
พื้นที่เก็บข้อมูลที่นำเข้าไม่จำเป็นต้องเป็นสาธารณะในขณะนี้เนื่องจาก Github ได้เพิ่มที่เก็บส่วนตัวให้ฟรี
Shrey Garg


7

ฉันมีปัญหาตรงข้ามและในที่สุดก็ต้องสร้างสคริปต์ bash shell ของตัวเองสำหรับ บริษัท เพื่อโยกย้ายร้อย repos จาก Github ไปยัง Gitlab เนื่องจากการเปลี่ยนแปลงนโยบายของ บริษัท
สคริปต์ใช้ Gitlab API เพื่อสร้าง repo จากระยะไกลและผลักดัน Github repo เข้าไป ยังไม่มีไฟล์ README.md แต่ sh เป็นเอกสารที่ดี
ฉันสามารถจินตนาการสิ่งเดียวกันได้ หวังว่านี่จะช่วยได้
https://github.com/mahmalsami/migrate-github-gitlab/blob/master/migrate.sh


2

หากคุณเปิดใช้งาน MFA ใน GitLab คุณควรไปที่การตั้งค่าที่เก็บ / ที่เก็บ -> ปรับใช้คีย์และสร้างหนึ่งใช้จากนั้นใช้เป็นล็อกอินในขณะที่นำเข้า repo บน GitHub

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