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


8572

ฉันไม่ต้องการที่จะเปลี่ยนชื่อสาขาที่ห่างไกลที่อธิบายไว้ในสาขาต้นแบบเปลี่ยนชื่อสำหรับทั้งภายในและระยะไกลเก็บ Git

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

ในกรณีที่คุณต้องการเปลี่ยนชื่อสาขาระยะไกลเช่นกัน:
ฉันจะเปลี่ยนชื่อทั้ง Git ท้องถิ่นและชื่อสาขาระยะไกลได้อย่างไร

คำตอบ:


13734

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

git branch -m <oldname> <newname>

หากคุณต้องการเปลี่ยนชื่อสาขาปัจจุบันคุณสามารถทำได้:

git branch -m <newname>

วิธีในการจดจำสิ่งนี้มี-mไว้สำหรับ "ย้าย" (หรือmv) ซึ่งเป็นวิธีที่คุณเปลี่ยนชื่อไฟล์ การเพิ่มชื่อแทนอาจช่วยได้เช่นกัน โดยทำตามขั้นตอนต่อไปนี้:

git config --global alias.rename 'branch -m'

หากคุณอยู่บน Windows หรือระบบไฟล์แบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่และมีการเปลี่ยนแปลงตัวพิมพ์ใหญ่ในชื่อคุณจำเป็นต้องใช้-Mมิฉะนั้น git จะโยนสาขาผิดพลาดที่มีอยู่แล้ว :

git branch -M <newname>

87
สิ่งที่ฉันอยากรู้ก็คือสิ่งนี้จะส่งผลต่อสาขาระยะไกลเมื่อหรือไม่ถ้าคุณผลักดัน
PandaWood

181
@PandaWood: มันจะเพิ่มสาขาใหม่เมื่อคุณกด แต่จะไม่ลบสาขาเก่า หากคุณใช้git push -f --mirrorมันจะเปลี่ยนชื่อสาขาบนรีโมต แต่คุณควรใช้วิธีนี้หากรีโมตเป็นเพียงสำเนาของที่เก็บปัจจุบันของคุณ ดูเพิ่มเติมที่คำถามนี้: stackoverflow.com/questions/1526794/git-rename-remote-branch
siride

19
@PandaWood มันขึ้นอยู่กับวิธีการpush.defaultกำหนดค่า โดยค่าเริ่มต้น ( matching) มันจะส่งสัญญาณไปยังรีโมทที่มีชื่อตรงกัน คุณจะต้องทำgit push origin <newname>:<oldname>หรือคุณจะสร้างสาขาระยะไกลใหม่ อย่างไรก็ตามหากpush.defaultตั้งไว้ที่upstreamคุณสามารถทำได้push origin headและสิ่งต่างๆจะไปที่ชื่อเก่าบนรีโมท
Erin Stanfill

13
@ NightOwl888: -m อาจสั้นสำหรับ "move" ตามหลักการของ Unix ในการใช้mvเพื่อเปลี่ยนชื่อไฟล์ เหตุผลในการนี้คือการย้ายและเปลี่ยนชื่อในระบบไฟล์ inode ตามไดเรกทอรีนั้นมีความเท่าเทียมกันทั้งหมด
siride

51
ชื่อยาวของ-mตัวเลือก--moveเช่นgit branch --move masterเปลี่ยนชื่อสาขาปัจจุบันจะเรียกว่า "ต้นแบบ"
robenkleene

445
git branch -m old_branch_name new_branch_name

คำสั่งดังกล่าวจะเปลี่ยนชื่อสาขาของคุณ แต่คุณต้องระมัดระวังในการใช้สาขาที่ถูกเปลี่ยนชื่อเพราะมันจะยังคงอ้างถึงสาขาต้นน้ำเก่าที่เกี่ยวข้องกับมันถ้ามี

ถ้าคุณต้องการที่จะผลักดันการเปลี่ยนแปลงบางอย่างในต้นแบบหลังจากสาขาท้องถิ่นของคุณถูกเปลี่ยนชื่อเป็น new_branch_name (ชื่อตัวอย่าง):

git push origin new_branch_name:master (ตอนนี้การเปลี่ยนแปลงจะไปที่สาขาหลัก แต่ชื่อสาขาในพื้นที่ของคุณคือ new_branch_name)

สำหรับรายละเอียดเพิ่มเติมโปรดดู " วิธีการเปลี่ยนชื่อสาขาท้องถิ่นของคุณใน Git "


326

วิธีเปลี่ยนชื่อสาขาปัจจุบันของคุณ:

git branch -m <newname>

159
คุณจะต้องใช้ -M เพื่อเปลี่ยนชื่อหากคุณเปลี่ยนการใช้อักษรตัวพิมพ์ใหญ่เพียงอย่างเดียวเนื่องจาก git จะบอกคุณว่ามีสาขาอยู่แล้ว
cjspurgeon

289

นี่คือขั้นตอนในการเปลี่ยนชื่อสาขา:

  1. เปลี่ยนเป็นสาขาที่ต้องเปลี่ยนชื่อ
  2. git branch -m <new_name>
  3. git push origin :<old_name>
  4. git push origin <new_name>:refs/heads/<new_name>

แก้ไข (12/01/2017):ตรวจสอบให้แน่ใจว่าคุณเรียกใช้คำสั่งgit statusและตรวจสอบว่าสาขาที่สร้างขึ้นใหม่ชี้ไปที่การอ้างอิงของตัวเองไม่ใช่สาขาที่เก่ากว่า หากคุณพบการอ้างอิงไปยังสาขาที่เก่ากว่าคุณต้องยกเลิกการอัปสตรีมโดยใช้:

git branch --unset-upstream

1
ในขั้นตอนใดที่จะยกเลิกการตั้งค่าอัปสตรีม ก่อนขั้นตอนที่ 4
Cyclonecode

1
นี่เป็นคำตอบที่ดีที่สุดที่นี่เพราะอธิบายถึงกระบวนการทั้งหมดในการเปลี่ยนชื่ออย่างถูกต้อง
Chris Halcrow

212

เปลี่ยนชื่อสาขาจะเป็นประโยชน์เมื่อสาขาของคุณเสร็จสิ้น จากนั้นสิ่งใหม่กำลังจะมาและคุณต้องการที่จะพัฒนาในสาขาเดียวกันแทนที่จะลบมันและสร้างสิ่งใหม่

จากประสบการณ์ของฉันการเปลี่ยนชื่อสาขาในพื้นที่และระยะไกลใน Git คุณควรทำตามขั้นตอนต่อไปนี้

การอ้างจากหลายรัฐ - เปลี่ยนชื่อสาขาในพื้นที่และระยะไกลเป็น git

1. เปลี่ยนชื่อสาขาท้องถิ่นของคุณ

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

git branch -m new-name

หากคุณอยู่ในสาขาอื่น:

git branch -m old-name new-name

2. ลบสาขาระยะไกลชื่อเก่าและผลักดันสาขาท้องถิ่นชื่อใหม่

git push origin :old-name new-name

3. รีเซ็ตสาขาต้นน้ำสำหรับสาขาท้องถิ่นที่มีชื่อใหม่

git push origin -u new-name

1
อันนี้ใช้ได้ดีกว่าสำหรับฉัน ที่นี่ 2 ขั้นตอนทำให้ฉันมีข้อผิดพลาดต่อไปนี้:error: dst ref refs/heads/<old-name> receives from more than one src.; error: failed to push some refs to 'git@uri:foo/bar.git'
Anto

1
คุณประสบปัญหาเมื่อเรียกใช้คำสั่งgit push origin :old-name new-nameใช่ไหม
trungk18

ใช่แน่นอน (ขออภัยฉันหมายถึง "ขั้นตอนที่ 2" ไม่ใช่ "2 ขั้นตอน" - เหนื่อย)
Anto

116

คำตอบที่ได้ถูกต้องแล้ว แต่นี่คือข้อมูลเพิ่มเติม:

หนึ่งสามารถเปลี่ยนชื่อสาขาได้อย่างปลอดภัยด้วย '-m' (ย้าย) แต่ต้องระวังด้วย '-M' เพราะจะบังคับให้เปลี่ยนชื่อแม้ว่าจะมีสาขาที่มีอยู่แล้วที่มีชื่อเดียวกันอยู่แล้ว นี่คือข้อความที่ตัดตอนมาจากหน้าคน 'git-branch':

พร้อมกับตัวเลือก -m หรือ -M, จะเปลี่ยนชื่อเป็น<oldbranch> <newbranch>หาก<oldbranch>มีการอ้างอิงที่สอดคล้องกันรายการนั้นจะถูกเปลี่ยนชื่อให้ตรงกัน<newbranch>และมีการสร้างรายการ reflog เพื่อจดจำการเปลี่ยนชื่อสาขา หาก<newbranch>มีอยู่จะต้องใช้ -M เพื่อบังคับให้เปลี่ยนชื่อเกิดขึ้น


2
เกิดอะไรขึ้นกับสาขาที่เขียนทับ?
Kevin Dice

มันถูกเขียนทับโดยชื่อใหม่ / สาขา ตัวอย่างเช่นหากคุณมีสาขาใน git ต่อไปนี้: master b1 <- branch b2 ปัจจุบันหลังจากที่คุณทำ 'git branch -M b2' คุณจะมีเฉพาะ: master b2 <- branch b1 ปัจจุบันจะหายไปและหากคุณต้องการ กู้คืนได้คุณควรตรวจสอบโดยแฮช คุณสามารถดูได้โดยพิมพ์ 'git reflog' ไชโย
Vanchev

-Mธงยังมีประโยชน์ที่จะบังคับให้เปลี่ยนชื่อถ้าคุณเป็นเพียงการแก้ไขกรณีของชื่อสาขาเช่นการเปลี่ยนแปลงไปmyBranch MyBranch(ด้วย-mgit ส่งคืนfatal: A branch named 'MyBranch' already exists.)
Jon Schneider

92

1. เปลี่ยนชื่อ

ถ้าเป็นสาขาปัจจุบันของคุณเพียงแค่ทำ

git branch -m new_name

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

git branch -m old_name new_name

2. ติดตามสาขาระยะไกลใหม่

- หากสาขาของคุณถูกผลักแล้วหลังจากเปลี่ยนชื่อคุณต้องลบมันออกจากที่เก็บ Git ระยะไกลและขอให้ท้องถิ่นของคุณใหม่เพื่อติดตามสาขาระยะไกลใหม่:

git push origin :old_name
git push --set-upstream origin new_name

74

ฉันตั้งชื่อสาขาที่เริ่มต้นด้วยเครื่องหมายยัติภังค์แล้วก็ไปดูอาจารย์ ฉันไม่ต้องการลบสาขาของฉันฉันทำงานอยู่

ไม่ทำงานเหล่านี้:

git checkout -dumb-name

git checkout -- -dumb-name

"s 'และ\s ไม่ได้ช่วยเช่นกัน git branch -mไม่ทำงาน

นี่คือวิธีที่ฉันแก้ไขมันในที่สุด ไปที่. git / refs / heads ของสำเนาการทำงานของคุณค้นหาชื่อไฟล์ "-dumb-name" รับแฮชของสาขา จากนั้นจะทำการตรวจสอบสร้างสาขาใหม่ด้วยชื่อที่มีสติและลบสาขาเก่า

git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name

8
คุณไม่สามารถเปลี่ยนชื่อไฟล์เป็น refs / heads ได้ใช่ไหม
android.weasel

เหมือนกัน หากคุณต้องขุดลงในโครงสร้างไดเรกทอรีเพื่อทำเวทย์มนตร์นี้ไปตลอดทางและทำ 'mv - -dumb-name brilliant-name' Do 'git branch -av' และคุณจะเห็นโครงสร้างไดเรกทอรีของ .git / refs หรืออาจจะ 'grep -R ^ .git / refs' เพื่อดูแฮชโดยตรง
Dave X

2
คุณอาจจะได้ใช้reflog
Code Whisperer

สุจริตถ้าเป็นเส้นทางที่คุณต้องการฉันจะหลีกเลี่ยง (IMO ที่สับสนและอาจเป็นอันตรายหากคุณไม่รู้ว่าคุณกำลังทำอะไรอยู่) ท่องไปในไดเรกทอรี. git ในตอนแรกและทำบางสิ่งกับมัน คำสั่งปกติที่มีการแยกวิเคราะห์ "git log" (ใช้แฟล็กที่เหมาะสมเพื่อแสดงสาขาและเพื่อพิจารณาว่า shasum ใดที่คุณต้องการเช็คเอาต์สาขาใหม่จากนั้น) จากนั้นเอาสาขาที่ไม่มีชื่อออก ฉันดูถูกว่าคอมไพล์ยืนยันว่าคุณต้องเข้าใจการทำงานภายในทั้งหมดเพื่อทำบางสิ่ง แต่ชื่นชมอย่างมากที่คุณสามารถทำสิ่งเหล่านั้นได้
Jon V

มันยากที่จะสร้างสาขาที่มีชื่อไม่ดีใน 2.10.1+ ถ้าคุณทำอย่างใดคุณสามารถใช้ git branch -v เพื่อรับแฮชเวอร์ชันสั้น ๆ ของ branch ของคุณ (เพิ่ม -r สำหรับ remote) จากนั้นคุณสามารถใช้ git rev-parse <shorthash> เพื่อรับแฮชแบบเต็มหากคุณต้องการ
House of Dexter

67

วิธีเปลี่ยนชื่อสาขาในเครื่อง:

git branch -m [old-branch] [new-branch]

ตอนนี้คุณจะต้องเผยแพร่การเปลี่ยนแปลงเหล่านี้บนเซิร์ฟเวอร์ระยะไกลของคุณเช่นกัน

หากต้องการผลักดันการเปลี่ยนแปลงของสาขาเก่าที่ถูกลบ:

git push origin :[old-branch]

วิธีผลักดันการเปลี่ยนแปลงการสร้างสาขาใหม่:

git push origin [new-branch]

57

เพียงสามขั้นตอนในการทำซ้ำการเปลี่ยนแปลงในชื่อบนremoteและบน GitHub:

ขั้นตอนที่ 1 git branch -m old_branchname new_branchname

ขั้นตอนที่ 2 git push origin :old_branchname new_branchname

ขั้นตอนที่ 3 git push --set-upstream origin new_branchname


2
ฉันยังต้องทำสิ่งหนึ่งเพิ่มเติม: git push --set-upstream origin new_branchnameซึ่งถูกกล่าวถึงใน @Nomade คำตอบ
IbrahimShendy

2
ขั้นตอนที่ 3 ไม่จำเป็น ทุกอย่างทันสมัยหลังจากขั้นตอนที่ 2
Dev

@ ไม่ได้ในทุกกรณี Dev ฉันต้องอัปเดตเมื่อเร็ว ๆ นี้เนื่องจากใช้ bitbucket และ codecommit ขั้นตอนที่ 3 เป็นสิ่งที่จำเป็น
Harry_pb

40

เปลี่ยนชื่อสาขาโดยใช้คำสั่งนี้:

git branch -m [old_branch_name] [new_branch_name]

-m: มันเปลี่ยนชื่อ / ย้ายสาขา หากมีสาขาอยู่แล้วคุณจะได้รับข้อผิดพลาด

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

 git rename -M [old_branch_name] [new_branch_name]

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ใช้คำสั่งนี้ในเทอร์มินัล:

git branch --help

หรือ

man git branch

40

ผู้ใช้ Git ขั้นสูงสามารถเปลี่ยนชื่อได้ด้วยตนเองโดยใช้:

Rename the old branch under .git/refs/heads to the new name

Rename the old branch under .git/logs/refs/heads to the new name

Update the .git/HEAD to point to yout new branch name

34
  1. เปลี่ยนชื่อสาขาท้องถิ่นของคุณ

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

git branch -m new-name

หากคุณอยู่ในสาขาอื่น:

git branch -m old-name new-name
  1. ลบสาขาระยะไกลชื่อเก่าและผลักดันสาขาท้องถิ่นชื่อใหม่

git push origin :old-name new-name

  1. รีเซ็ตสาขาต้นน้ำสำหรับสาขาท้องถิ่นที่มีชื่อใหม่ เปลี่ยนเป็นสาขาแล้ว:

git push origin -u new-name

หรือสำหรับวิธีที่รวดเร็วในการทำเช่นนั้นคุณสามารถใช้ 3 ขั้นตอนเหล่านี้:

# เปลี่ยนชื่อสาขาในพื้นที่

git branch -m old_branch new_branch  

# ลบสาขาระยะไกลเก่า

git push origin :old_branch  

# ดันสาขาใหม่ตั้งสาขาท้องถิ่นเพื่อติดตามรีโมตใหม่

git push --set-upstream origin new_branch   

การอ้างอิง: https://www.w3docs.com/snippets/git/how-to-rename-git-local-and-remote-branches.html


สิ่งนี้ใช้ได้กับฉัน
Vazgen Manukyan

26

นี่คือสามขั้นตอน: คำสั่งที่คุณสามารถโทรภายในเทอร์มินัลของคุณและเปลี่ยนชื่อสาขา

git branch -m old_branch new_branch         # Rename branch locally
git push origin :old_branch                 # Delete the old branch
git push --set-upstream origin new_branch   # Push the new branch, set local branch to track the new remote

หากคุณต้องการเพิ่มเติม: ทีละขั้นตอนวิธีเปลี่ยนชื่อสาขา Gitเป็นบทความที่ดีเกี่ยวกับเรื่องนั้น


25

อาจเป็นไปได้ว่าคนอื่น ๆ กล่าวถึงนี้จะเป็นกรณีที่ไม่ตรงกันในการตั้งชื่อสาขา

หากคุณมีสถานการณ์เช่นนี้ฉันสามารถเดาได้ว่าคุณใช้ Windows ซึ่งจะนำคุณไปสู่:

$ git branch -m CaseSensitive casesensitive
fatal: A branch named 'casesensitive' already exists.

จากนั้นคุณต้องทำตามขั้นตอนกลาง:

$ git branch -m temporary
$ git branch -m casesensitive

ไม่มีอะไรเพิ่มเติม


1
หมายเหตุว่าสถานการณ์นี้ยังอาจเกิดขึ้นบน Mac ซึ่งเป็นยัง (ล้ำรำคาญ) กรณีตายในระบบแฟ้มของมัน
Jon V

หรือคุณสามารถใช้-Mแทนการ-mเปลี่ยนชื่อ "การแก้ไขปลอก" ประเภทนี้ในขั้นตอนเดียว
Jon Schneider

23

พยายามตอบคำถามโดยเฉพาะ (อย่างน้อยชื่อ)

นอกจากนี้คุณยังสามารถเปลี่ยนชื่อสาขาท้องถิ่นได้แต่จะทำการติดตามชื่อเดิมบนรีโมตต่อไป

git branch -m old_branch new_branch
git push --set-upstream origin new_branch:old_branch

ตอนนี้เมื่อคุณทำงานgit push, ระยะไกลเตะมีการปรับปรุงด้วยท้องถิ่นของคุณold_branchnew_branch

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

เล่นกับการกำหนดค่าการดึงข้อมูลคุณสามารถเปลี่ยนชื่อการอ้างอิงระยะไกลภายในเครื่องได้ กล่าวคือมีrefs/remote/origin/new_branchตัวชี้โทษไปยังสาขาที่ในความเป็นจริงในold_branch originอย่างไรก็ตามฉันขอแนะนำอย่างยิ่งเพื่อความปลอดภัยของจิตใจคุณ


22

การเปลี่ยนสาขาในพื้นที่ค่อนข้างง่าย ...

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

git branch -m my_new_branch

มิฉะนั้นถ้าคุณอยู่ในmasterหรือสาขาอื่น ๆ นอกเหนือจากที่คุณต้องการเปลี่ยนชื่อเพียงทำ:

git branch -m my_old_branch my_new_branch

นอกจากนี้ผมสร้างภาพด้านล่างนี้เพื่อแสดงให้เห็นนี้ในการดำเนินการในบรรทัดคำสั่ง ในกรณีนี้คุณอยู่ในmasterสาขาตัวอย่างเช่น:

เปลี่ยนชื่อสาขาในเครื่อง


21

หากคุณยินดีที่จะใช้SourceTree (ซึ่งฉันขอแนะนำอย่างยิ่ง) คุณสามารถคลิกขวาที่สาขาของคุณและเลือก 'เปลี่ยนชื่อ'

ป้อนคำอธิบายรูปภาพที่นี่


20

ในการเปลี่ยนชื่อสาขาปัจจุบัน (ยกเว้นสถานะ HEAD ที่แยกออก) คุณสามารถใช้นามแฝงนี้ได้:

[alias]
    mvh = !sh -c 'git branch -m `git rev-parse --abbrev-ref HEAD` $1'

18

ตัวเลือกอื่นไม่ใช้บรรทัดคำสั่งเลย ไคลเอนต์ Git GUI เช่นSourceTreeใช้เวลาส่วนใหญ่ในการเรียนรู้เกี่ยวกับไวยากรณ์ / ความเจ็บปวดที่ทำให้เกิดคำถามเช่นนี้เพื่อให้ได้รับความนิยมสูงสุดใน Stack Overflow

ใน SourceTree ให้คลิกขวาที่สาขาในเครื่องในบานหน้าต่าง "Branches" ทางด้านซ้ายและเลือก "Rename ... "


5
ฉันจะไม่เรียกมันว่าเจ็บปวด คำสั่ง git นั้นใช้งานง่ายมากเมื่อคุณเห็นคำตอบนี้แล้วคุณจะไม่กลับมาอีก ปัญหาคือสิ่งที่มากกว่าดังนั้นจึงดูเหมือนว่าเอกสารของบรรทัดคำสั่ง git นั้นไม่ง่ายพอ
Nearoo

1
จริง แต่ด้วย SourceTree ฉันแทบจะไม่ต้องกังวลกับการตรวจสอบเอกสารเลย โดยทั่วไปทุกอย่างใช้งานง่ายเพียงแค่คลิกขวาและดูว่าตัวเลือกคืออะไร (BTW ฉันไม่ได้มีส่วนเกี่ยวข้องกับพวกเขาในทางใดทางหนึ่ง - เช่นเดียวกับเครื่องมือ!)
Steve Chambers

17

วิธีง่ายๆในการ:

git branch -m old_branch new_branch         # Rename branch locally
git push origin :old_branch                 # Delete the old branch
git push --set-upstream origin new_branch   # Push the new branch, set local branch to track the new remote

สำหรับข้อมูลเพิ่มเติมโปรดดูที่นี้


15

เนื่องจากคุณไม่ต้องการที่จะผลักสาขาไปยังเซิร์ฟเวอร์ระยะไกลตัวอย่างนี้จะมีประโยชน์:

สมมติว่าคุณมีสาขาที่มีอยู่ชื่อ "my-hot-ฟีเจอร์" และคุณต้องการเปลี่ยนชื่อเป็น "ฟีเจอร์ -15"

ขั้นแรกคุณต้องการเปลี่ยนสาขาในพื้นที่ของคุณ มันไม่ง่ายกว่านี้:

git branch -m my-hot-feature feature-15

สำหรับข้อมูลเพิ่มเติมคุณสามารถเยี่ยมชมภายในและเปลี่ยนชื่อสาขาจาก Gitได้จากระยะไกล


13

Git เวอร์ชั่น 2.9.2

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

git branch -m new_name

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

git branch -m old_name new_name

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

git branch -M old_name new_name_that_already_exists

หมายเหตุ: คำสั่งสุดท้ายจะเป็นการทำลายและจะเปลี่ยนชื่อสาขาของคุณ แต่คุณจะสูญเสียสาขาเก่าด้วยชื่อนั้นและสิ่งที่กระทำเนื่องจากชื่อสาขาต้องไม่ซ้ำกัน


11

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

git branch -m [old_branch] [new_branch]

หากคุณต้องการลบสาขาระยะไกลเก่าให้รัน:

git push origin :[old_branch]

หากคุณต้องการลบสาขาระยะไกลเก่าและสร้างสาขาระยะไกลใหม่ให้รัน:

git push origin :old_branch new_branch

6

การเปลี่ยนชื่อสาขา Git สามารถทำได้โดยใช้:

  1. git branch -m oldBranch newBranch

  2. git branch -M oldBranch ExistingBranch

ความแตกต่างระหว่าง-mและ-M :

-m:ถ้าคุณกำลังพยายามที่จะเปลี่ยนชื่อสาขาที่มีชื่อสาขาที่มีอยู่ใช้-m มันจะทำให้เกิดข้อผิดพลาดที่บอกว่าสาขามีอยู่แล้ว คุณต้องให้ชื่อที่ไม่ซ้ำ

แต่,

-M:สิ่งนี้จะช่วยให้คุณบังคับให้เปลี่ยนชื่อด้วยชื่อที่กำหนดแม้จะมีอยู่ ดังนั้นสาขาที่มีอยู่จะเขียนทับมันทั้งหมด ...

นี่คือตัวอย่างเทอร์มินัล Git

mohideen@dev:~/project/myapp/sunithamakeup$ git branch
  master
  master0
  new_master
  test
* test1
mohideen@dev:~/project/myapp/sunithamakeup$ git branch -m test1 test
fatal: A branch named 'test' already exists.
mohideen@dev:~/project/myapp/sunithamakeup$ git branch -M test1 test
mohideen@dev:~/project/myapp/sunithamakeup$ git branch
  master
  master0
  new_master
* test
mohideen@dev:~/project/myapp/sunithamakeup$

5

สำหรับผู้ใช้ Git GUI มันไม่ง่ายกว่านี้อีกแล้ว ใน Git GUI เลือกชื่อสาขาจากรายการดรอปดาวน์ในกล่องโต้ตอบ "เปลี่ยนชื่อสาขา" ที่สร้างจากรายการเมนูสาขา: เปลี่ยนชื่อพิมพ์ชื่อใหม่แล้วคลิก "เปลี่ยนชื่อ" ฉันได้ไฮไลต์ตำแหน่งที่จะค้นหารายการแบบหล่นลง

เปลี่ยนชื่อสาขา Git ท้องถิ่น


3

ถ้าคุณต้องการ:

  • เปลี่ยนชื่อที่เก็บ Git ให้รัน: git branch -m <oldname> <newname>
  • ลบสาขาเก่าโดย: git push origin: old-name new-name
  • กระทำโดยใช้: git commit <newname>
    • จากนั้นกดใช้: git push origin new_branch_name:master
  • หากคุณต้องการตรวจสอบสถานะให้ใช้: git status
  • หากคุณต้องการตรวจสอบแล้วใช้: git checkout

3

คำตอบก่อนหน้านี้ทั้งหมดกำลังพูดถึง git branch -mทุกคำตอบก่อนหน้านี้มีการพูดคุยเกี่ยวกับแน่นอนมันใช้งานง่าย แต่สำหรับฉันมันอาจจะยากที่จะจำคำสั่ง Git อื่น ดังนั้นฉันจึงพยายามทำงานให้สำเร็จโดยคำสั่งที่ฉันคุ้นเคย ใช่คุณอาจเดาได้

git branch -b <new_branch_name>ฉันใช้ และถ้าคุณไม่ต้องการบันทึกสาขาเก่าตอนนี้คุณสามารถดำเนินการgit branch -D <old_branch_name>เพื่อลบมันได้

ฉันรู้ว่ามันอาจจะน่าเบื่อนิดหน่อย แต่ก็เข้าใจและจดจำได้ง่ายขึ้น ฉันหวังว่ามันจะเป็นประโยชน์สำหรับคุณ


หากคุณมีปัญหาในการจดจำคำสั่งคุณสามารถตั้งค่า shell หรือ git aliases ได้ด้วยตัวเอง
ฌอน

ถ้าฉันต้องการรันคำสั่งบนเครื่องต่าง ๆ มากมาย?
ได Kaixian

1

ใน PhpStorm:

VCS → Git →สาขา ... →สาขาในท้องถิ่น→ _your_branch_ →เปลี่ยนชื่อ


0

สิ่งที่คุณต้องทำคือสามขั้นตอน:

  1. ให้สาขาเก่าภายใต้. git / refs / หัวชื่อใหม่
  2. ตั้งสาขาเก่าภายใต้. git / logs / refs / heads ชื่อใหม่
  3. อัปเดต. git / HEAD เพื่อนำไปสู่ชื่อสาขาใหม่ของคุณ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.