การย้าย Git remote/origin ไปยัง URL อื่น

Posted on
git

เรื่องมีอยู่ว่า repo ของแอพที่กำลังพัฒนาอยู่มีการย้าย Git server. ย้ายบ้านจาก Gitlab ไปยัง Github. ฝั่ง Git server หรือ Git remote เรามีการ migrate codes หรือ repos ทั้งหมดไปแล้ว โพสต์นี้บันทึกไว้สำหรับฝั่ง dev ว่าถ้าไม่ clone codes มาจาก URL หรือ server ใหม่ เราจะแก้ไข local repo ในเครื่องของเราได้อย่างไร

ขั้นตอนคือ

1 เราจะเปลี่ยนชื่อ remote เดิมในเครื่องเรา (โดยปกติมันจะเป็นชื่อ origin) 2 เพิ่ม remote ใหม่ซึ่งจะมาเป็น default remote (มาเป็น origin แทนตัวเดิม) 3 เปลี่ยนให้ branch ที่ clone ลงมาแล้วไป sync กับ origin (ตัวใหม่)

เปลี่ยนชื่อ remote เดิม (ซึ่งทั่วไปก็จะเป็น origin) ตัวอย่าคำสั่งจาก github document

$ git remote -v
# View existing remotes
> origin  https://github.com/OWNER/REPOSITORY.git (fetch)
> origin  https://github.com/OWNER/REPOSITORY.git (push)

$ git remote rename origin destination
# Change remote name from 'origin' to 'destination'

$ git remote -v
# Verify remote's new name
> destination  https://github.com/OWNER/REPOSITORY.git (fetch)
> destination  https://github.com/OWNER/REPOSITORY.git (push)

เพิ่ม remote ตัวใหม่เข้ามาใน repo ในเครื่องเรา

$ git remote add origin https://github.com/OWNER/REPOSITORY.git
# Set a new remote

$ git remote -v
# Verify new remote
> origin  https://github.com/OWNER/REPOSITORY.git (fetch)
> origin  https://github.com/OWNER/REPOSITORY.git (push)

เปลี่ยนให้ branch ที่ clone ลงมาแล้วไป sync กับ origin ใหม่

ตัวอย่าง

$ git fetch origin
$ git branch develop -u origin/develop
branch 'develop' set up to track 'origin/develop'.

ไม่ควรมีงานค้างอยู่แล้ว ต้อง clear code กับ repo ตัวเดิมให้เรียบร้อย เราจะ reset files ใน folder เราให้ตรงกับ remote server ทั้งหมด สะอาดหมดจด✨

$ git reset --hard origin/develop