เปลี่ยนชื่อสาขาใน repo Git


295

ฉันจะเปลี่ยนชื่อสาขาที่มีอยู่ใน Git repo ได้อย่างไร

ฉันต้องการให้สาขาปัจจุบันมีชื่อใหม่


2
ยอมรับคำตอบ @Alex หรือพูดว่าทำไมคุณไม่ต้องการยอมรับมัน
Charlie Parker

1
@CharlieParker มันอาจจะเกี่ยวข้องกับข้อเท็จจริงที่ว่านี่เป็นคำถามเดียวของอเล็กซ์และเขาอาจจะไม่ได้เข้าสู่ระบบตั้งแต่: "เห็นครั้งสุดท้าย 3 ก.พ. 11 เวลา 21:29"
สีเหลืองนักบุญ

13
@JB OMG คุณกำลังพูดอะไรบางอย่างที่อาจเกิดขึ้นกับเขา ??? !!!!!!!!!
abbood

1
คำตอบที่ได้รับการโหวตอย่างสูงสามารถยอมรับได้หรือไม่?
Steve Chambers

คำตอบ:


465

สมมติว่าคุณอยู่ในสาขาที่คุณต้องการเปลี่ยนชื่อ:

git branch -m newname

เอกสารนี้มีไว้ในคู่มือสำหรับgit-branchซึ่งคุณสามารถดูการใช้งานได้

man git-branch

หรือ

git help branch

โดยเฉพาะคำสั่งคือ

git branch (-m | -M) [<oldbranch>] <newbranch>

โดยที่พารามิเตอร์คือ:

   <oldbranch>
       The name of an existing branch to rename.

   <newbranch>
       The new name for an existing branch. The same restrictions as for <branchname> apply.

<oldbranch> เป็นทางเลือกถ้าคุณต้องการเปลี่ยนชื่อสาขาปัจจุบัน


10
หรือgit branch -m other-branch renamed-other-branchถ้าคุณไม่ได้
mipadi

32
git push origin :branchnameนอกจากนี้ถ้าคุณได้ผลักสาขาเก่าไประยะไกลคุณสามารถลบมันด้วย ที่จะช่วยให้คุณสามารถผลักดันอันใหม่และลบอันเก่าออกโดยการเปลี่ยนชื่อใหม่บนรีโมท
Jonathan

1
@mipadi มันสร้างสาขาใหม่และอย่าลบสาขาก่อนหน้า
Mohammad Arif

git branch (-m | -M) [<oldbranch>] <newbranch> ใช้งานไม่ได้สำหรับฉันทำให้เกิดข้อผิดพลาดทางไวยากรณ์
Mohammad Arif

@MohammedArif ด้วย-mก็เปลี่ยนชื่อสาขาเก่าจึงไม่ลบก่อนหน้านี้หนึ่ง
Richard Fearn

177

หากคุณอยู่ในสาขาที่คุณต้องการเปลี่ยนชื่อ:

git branch -m new_name 

หรืออื่น ๆ:

git branch -m old_name new_name 

คุณสามารถตรวจสอบกับ:

git branch -a

อย่างที่คุณเห็นมีเพียงชื่อท้องถิ่นเท่านั้นที่เปลี่ยนตอนนี้เพื่อเปลี่ยนชื่อในรีโมทคุณต้องทำ:

git push origin :old_name

สิ่งนี้จะลบสาขาจากนั้นอัปโหลดด้วยชื่อใหม่:

git push origin new_name

ที่มา: https://web.archive.org/web/20150929104013/http://blog.changecong.com:80/2012/10/rename-a-remote-branch-on-github


13
ฉันคิดว่านี่เป็นคำตอบที่ถูกต้องคำตอบที่ได้รับการโหวตอย่างสูงจาก Richard Feam ครอบคลุมเฉพาะ repo ในพื้นที่เท่านั้นคำตอบนี้ครอบคลุมระยะไกล
user1145404

4
เห็นด้วยกับความคิดเห็นข้างต้นคำตอบนี้เสร็จสมบูรณ์มากขึ้นในกรณีของฉัน นอกจากนี้เมื่อฉันเพิ่มความมุ่งมั่นไปยังสาขาระยะไกลหลังจากทำตามขั้นตอนทั้งหมดที่กล่าวถึงในคำตอบนี้คอมไพล์พยายามที่จะผลักดันไปที่old_nameสาขาอีกครั้ง git-branch --unset-upstreamโชคดีที่คอมไพล์ยังคงรักษาแก้ไขในบรรทัดคำสั่ง: หลังจากนี้สิ่งที่ผลักดันทั้งหมดไปที่new_nameสาขาระยะไกล
Hans Roerdinkholder

2
ระวังด้วยวิธีนี้คุณจะสูญเสียคณาจารย์ที่จะผลักดันgit pushเพราะคุณได้รับคำเตือนเมื่อพูดว่าYour branch is based on 'old_name, but the upstream is gone.A git push -u origin new_nameแก้ปัญหา
netalex
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.