ฉันเพิ่งเปลี่ยนชื่อสาขาในท้องถิ่นของฉันโดยใช้
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_branch
2: นี่จะเป็นการลบสาขาเก่าและผลักสาขาใหม่
git branch -m new_branch
(เปลี่ยนชื่อ old_branch เพื่อ new_branch) 2. git commit -m 'msg'
3. git push
4. 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/*/
ใส่ไว้ในbranch
new-branch-name
.git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/new-branch-name
awe/some/branch
การnew-branch-name
(ท้องถิ่นและระยะไกล!)ข้อมูล:วิธีนี้อาจไม่ดีที่สุด แต่ก็ยังใช้ได้กับคนที่อาจมีปัญหากับวิธีอื่น
ในกรณีของผมผมจำเป็นต้องมีคำสั่งเพิ่มเติมที่จะได้รับการเปลี่ยนชื่อสาขาของฉันที่จะผลักดันขึ้นไป
git branch --unset-upstream
origin 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 oldname
oldname
git push
git 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 เพื่อติดตาม สาขาระยะไกล วิธีนี้จะช่วยแก้ปัญหา