ฉันเพิ่งเปลี่ยนชื่อสาขาในท้องถิ่นของฉันโดยใช้
git branch -m oldname newname
แต่สิ่งนี้จะเปลี่ยนชื่อสาขาท้องถิ่นเท่านั้น ฉันจะเปลี่ยนชื่อใหม่ใน GitHub ได้อย่างไร
ฉันเพิ่งเปลี่ยนชื่อสาขาในท้องถิ่นของฉันโดยใช้
git branch -m oldname newname
แต่สิ่งนี้จะเปลี่ยนชื่อสาขาท้องถิ่นเท่านั้น ฉันจะเปลี่ยนชื่อใหม่ใน GitHub ได้อย่างไร
คำตอบ:
ดังที่กล่าวไว้ให้ลบอันเก่าบน Github & re-push ถึงแม้ว่าคำสั่งที่ใช้เป็น verbose มากกว่าที่จำเป็นเล็กน้อย:
git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local
ง่าย การตัดคำสั่งออกไปเล็กน้อยคำสั่ง git push นั้นเป็นหลัก:
git push <remote> <local_branch>:<remote_branch>
ดังนั้นการกดโดยไม่ระบุ local_branch เป็นหลักหมายความว่า "ไม่ต้องทำอะไรจากที่เก็บในเครื่องของฉันและทำให้มันเป็นสาขาระยะไกล" ฉันมักจะคิดว่านี่เป็นสิ่งที่ไร้ค่าอย่างสมบูรณ์ แต่ก็เป็นวิธีที่ทำ
แก้ไข:ตั้งแต่Git 1.7มีไวยากรณ์ทางเลือกสำหรับการลบสาขาระยะไกล:
git push origin --delete name_of_the_remote_branch
แก้ไข:ตามที่กล่าวถึงโดย @ void.pointer ในความคิดเห็น
โปรดทราบว่าคุณสามารถรวมการกด 2 ครั้ง:
git push origin :old_branch new_branchนี่จะเป็นการลบสาขาเก่าและผลักสาขาใหม่
สิ่งนี้สามารถเปลี่ยนเป็นนามแฝงง่ายๆที่ใช้รีโมตสาขาดั้งเดิมและชื่อสาขาใหม่เป็นอาร์กิวเมนต์ใน~/.gitconfig:
[alias]
    branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"
การใช้งาน:
git branchm origin old_branch new_branch
โปรดทราบว่าการขัดแย้งตำแหน่งในคำสั่งเชลล์เป็นปัญหาใน git รุ่นเก่ากว่า (รุ่นก่อน 2.8?) ดังนั้นนามแฝงอาจแตกต่างกันไปตามเวอร์ชัน git ดูการสนทนานี้สำหรับรายละเอียด
git push origin :old_branch new_branch2: นี่จะเป็นการลบสาขาเก่าและผลักสาขาใหม่
                    git branch -m new_branch(เปลี่ยนชื่อ old_branch เพื่อ new_branch) 2. git commit -m 'msg'3. git push4. mhmm, old_branch แสดงขึ้นมาใน Github, Google คำถามและฉันกำลังจะนำไปสู่คำตอบของคุณ 5. git push origin :old_branch(บอกว่ามันลบ) 6. git push origin new_branch... * [new branch]  new_branch -> old_branchเสร็จสมบูรณ์แล้วพูดว่า กลับไปที่ Github และกลับมาold_branchปรากฏตัวอีกครั้ง หากฉันลบใน Github web UI ฉันมีตัวเลือกในการ "กู้คืน" ดังนั้นดูเหมือนว่าการกด new_branch เป็นการกู้คืน
                    คำสั่งต่อไปนี้ทำงานให้ฉัน:
git push origin :old-name-of-branch-on-github
git branch -m old-name-of-branch-on-github new-name-for-branch-you-want
git push origin new-name-for-branch-you-want
              ฉันพบคำสั่ง 3 วิธีที่คุณสามารถเปลี่ยนชื่อสาขา git ของคุณและคำสั่งเหล่านี้เป็นวิธีที่เร็วกว่าในการทำเช่นนั้น
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 push --set-upstreamเป็นส่วนที่สำคัญที่สุดหากคุณเปลี่ยนชื่อสาขาในเครื่องโดยใช้แอพ Github ก่อนที่จะลบสาขาระยะไกล
                    เพียงลบสาขาเก่าและสร้างสาขาใหม่
ตัวอย่าง (เปลี่ยนชื่อสาขาระยะไกลเท่านั้น):
git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname
คุณควรเปลี่ยนชื่อสาขาท้องถิ่นและเปลี่ยนการตั้งค่าสำหรับตำแหน่งที่จะผลัก / ดึง
git push origin newname:refs/heads/newnameใช่หรือไม่ master และ newname อาจไม่ชี้ไปที่การคอมมิชชันเดียวกัน
                    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
ดังนั้นข้อสรุปคือ
git branch -m new-name
git push origin :old-name new-name
git push origin -u new-name
              git branch -m new-name && git push origin :master new-nameลองทำตามขั้นตอนที่หนึ่งและสอง มันจะล้มเหลว หากคำตอบนี้เป็นเพียงเกี่ยวกับคอมไพล์และไม่ใช่ GitHub คำถามนี้เป็นคำถามซ้ำซ้อนกับคำถามอื่น ๆ และควรจะปิด ถ้ามันเกี่ยวกับ GitHub จริงๆแล้วคำตอบจะต้องครอบคลุม GitHub คำตอบนี้ไม่ได้
                    คุณสามารถทำได้โดยไม่ต้องใช้เทอร์มินัลคุณเพียงแค่ต้องสร้างสาขาที่มีชื่อใหม่และลบสาขาเก่าออก คุณสามารถใช้โพสต์นี้เพื่อทำเช่นนั้น
นี่คือสิ่งที่ทำงานให้ฉัน:
1. ) สร้างสาขาใหม่ก่อน: git push github newname: refs / heads / newname
2. ) บนเว็บไซต์ GitHub การตั้งค่าข้ามไปและเปลี่ยนสาขาเริ่มต้นเป็นชื่อใหม่
3. ) ลบ oldname git push github - ลบ oldname
บทความนี้แสดงให้เห็นถึงวิธีการทำมันง่ายจริง
1. หากต้องการเปลี่ยนชื่อสาขา Git ในพื้นที่เราสามารถใช้คำสั่ง Git branch -m เพื่อแก้ไขชื่อ:
 git branch -m feature1 feature2
2. หากคุณเพียงแค่มองหาคำสั่งให้เปลี่ยนชื่อสาขา Git ระยะไกลนี่คือ " 
 git push -u origin feature2:feature3
ตรวจสอบว่าคุณไม่มี แท็กบนกิ่งไม้ก่อนที่คุณจะทำเช่นนี้. git tagคุณสามารถทำเช่นนั้นด้วย
อีกวิธีคือเปลี่ยนชื่อไฟล์ต่อไปนี้ :
.git/refs/head/[branch-name]เป็น.git/refs/head/new-branch-name.git/refs/remotes/[all-remote-names]/[branch-name]เป็น.git/refs/remotes/[all-remote-names]/new-branch-nameเปลี่ยนชื่อส่วนหัว & รีโมททั้งบนพีซีในพื้นที่ของคุณและบนจุดเริ่มต้น / เซิร์ฟเวอร์ระยะไกล
หากชื่อสาขาปัจจุบันของคุณมีเครื่องหมายทับ ( /) git จะสร้างไดเรกทอรีดังนี้:
ชื่อสาขาปัจจุบัน: "awe/some/branch"
.git/refs/head/awe/some/branch.git/refs/remotes/[all-remote-names]/awe/some/branchต้องการชื่อสาขา: "new-branch-name"
branchไฟล์จาก.git/refs/*/awe/some/.git/refs/head/ใส่ไว้ในbranchไฟล์จากทั้งหมด.git/refs/remotes/*/awe/some/.git/refs/remotes/*/ใส่ไว้ในbranchnew-branch-name.git/refs/head/new-branch-name.git/refs/remotes/[all-remote-names]/new-branch-nameawe/some/branchการnew-branch-name(ท้องถิ่นและระยะไกล!)ข้อมูล:วิธีนี้อาจไม่ดีที่สุด แต่ก็ยังใช้ได้กับคนที่อาจมีปัญหากับวิธีอื่น
ในกรณีของผมผมจำเป็นต้องมีคำสั่งเพิ่มเติมที่จะได้รับการเปลี่ยนชื่อสาขาของฉันที่จะผลักดันขึ้นไป  
 git branch --unset-upstreamorigin newname
(เพื่อความสะดวกในการพิมพ์) git checkout oldnameครั้งแรกที่ผม 
จากนั้นเรียกใช้สิ่งต่อไปนี้:  
git branch -m newname
git push origin :oldname หรือ หรือgit push origin --delete oldname
git branch --unset-upstream
git push -u origin newname   git push origin newname  
ขั้นตอนนี้พิเศษเพียงอาจมีความจำเป็นเพราะผม (มักจะ) การติดตั้งระยะไกลติดตามบนกิ่งไม้ของฉันผ่านทาง ด้วยวิธีนี้เมื่อฉันเช็คเอาต์ฉันก็ต้องพิมพ์มากกว่าgit push -u origin oldnameoldnamegit pushgit push origin oldname  
หากฉันไม่ได้ใช้คำสั่งgit branch --unset-upstreamก่อนหน้าgit push origin newbranchนี้คอมไพล์สร้าง oldbranchและผลักดันnewbranchไปที่origin oldbranch- เอาชนะความตั้งใจของฉัน
คำสั่งต่อไปนี้เปลี่ยนชื่อสาขาในพื้นที่ลบสาขาเก่าบนตำแหน่งระยะไกลและผลักสาขาใหม่ตั้งสาขาท้องถิ่นเพื่อติดตามรีโมตใหม่:
git branch -m old_branch new_branch
git push origin :old_branch
git push --set-upstream origin new_branch
              ง่ายๆเป็นว่า ในการเปลี่ยนชื่อสาขา git ในพื้นที่และใช้ตัวอย่างข้อมูลนี้จากระยะไกล (ผ่านการทดสอบและใช้งานได้อย่างมีเสน่ห์):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
คำอธิบาย:
เปลี่ยนชื่อขั้นตอน:
การอ้างอิง Git: ด้วยตัวเลือก -m หรือ -Mจะถูกเปลี่ยนชื่อเป็น หากมีการอ้างอิงที่สอดคล้องกันรายการนั้นจะถูกเปลี่ยนชื่อให้ตรงกันและมีการสร้างรายการ reflog เพื่อจดจำการเปลี่ยนชื่อสาขา หากมีอยู่จะต้องใช้ -M เพื่อบังคับให้เปลี่ยนชื่อเกิดขึ้น
ลบขั้นตอน:
การอ้างอิง Git: ต้นกำเนิดการพุชแบบ Git : การทดลองค้นหาการอ้างอิงที่ตรงกับการทดลองในที่เก็บต้นฉบับ (เช่นการอ้างอิง / หัว / การทดลอง) และลบ
อัปเดตเกี่ยวกับขั้นตอน repo ระยะไกล (การอ้างอิง upstream สำหรับการติดตาม):
การอ้างอิง Git: - set-upstreamสำหรับทุกสาขาที่ทันสมัยหรือถูกผลักสำเร็จให้เพิ่มการอ้างอิง upstream (การติดตาม) ที่ใช้โดยอาร์กิวเมนต์น้อย git-pull [1] และคำสั่งอื่น ๆ สำหรับข้อมูลเพิ่มเติมโปรดดูที่สาขา.. ผสานเป็น git-config [1]
git push ต้นกำเนิด head
git branch -m old-branch-name ใหม่-branch-name
git push ต้นกำเนิด head
บนรัน git branch git branch -m old_name new_name สิ่งนี้จะทำการแก้ไขชื่อสาขาใน repo git push local ของคุณ: old_name new_name สิ่งนี้จะพุชชื่อที่ถูกแก้ไขเป็น remote และลบ branch git push เก่า -u new_name ตั้ง local branch เพื่อติดตาม สาขาระยะไกล วิธีนี้จะช่วยแก้ปัญหา