Bagaimana cara saya mengganti nama cabang Git lokal?


Jawaban:


13739

Jika Anda ingin mengganti nama cabang sambil menunjuk ke cabang apa pun, lakukan:

git branch -m <oldname> <newname>

Jika Anda ingin mengganti nama cabang saat ini, Anda dapat melakukan:

git branch -m <newname>

Cara untuk mengingat ini adalah -muntuk "memindahkan" (atau mv), yang merupakan cara Anda mengganti nama file. Menambahkan alias juga bisa membantu. Untuk melakukannya, jalankan yang berikut:

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

Jika Anda menggunakan Windows atau sistem file case-insensitive lainnya, dan hanya ada perubahan kapitalisasi pada nama, Anda perlu menggunakan -M, jika tidak, git akan membuang cabang yang sudah ada kesalahan:

git branch -M <newname>

87
Yang benar-benar ingin saya ketahui adalah apakah ini akan berpengaruh pada cabang jarak jauh ketika / jika Anda mendorong
PandaWood

181
@ PandaWood: itu akan menambah cabang baru saat Anda menekan, tetapi tidak akan menghapus cabang lama. Jika Anda menggunakan git push -f --mirror, maka itu akan mengubah nama cabang pada remote, tetapi Anda hanya harus menggunakan metode ini jika remote hanya menjadi salinan repositori Anda saat ini. Lihat juga pertanyaan ini: stackoverflow.com/questions/1526794/git-rename-remote-branch
siride

19
@ PandaWood, itu tergantung pada bagaimana push.defaultdikonfigurasi. Secara default ( matching) itu akan mendorong ke remote yang namanya cocok. Anda harus melakukan git push origin <newname>:<oldname>atau Anda akan membuat cabang jarak jauh baru. Namun, jika push.defaultdiatur ke upstream, maka Anda bisa push origin headdan semuanya akan pergi ke oldname di remote.
Erin Stanfill

13
@ NightOwl888: -m mungkin adalah kependekan dari "move", mengikuti konvensi Unix untuk menggunakan mvuntuk mengganti nama file. Alasan untuk ini adalah bahwa pemindahan dan penggantian nama, dalam sistem file inode berbasis direktori, sepenuhnya sama.
siride

51
Nama panjang -mopsi adalah --move, misalnya, git branch --move mastermengubah nama cabang saat ini untuk disebut "master".
robenkleene

445
git branch -m old_branch_name new_branch_name

Perintah di atas akan mengubah nama cabang Anda, tetapi Anda harus sangat berhati-hati menggunakan cabang yang diganti nama, karena masih akan merujuk ke cabang hulu lama yang terkait dengannya, jika ada.

Jika Anda ingin mendorong beberapa perubahan menjadi master setelah cabang lokal Anda diubah namanya menjadi new_branch_name (nama contoh):

git push origin new_branch_name:master (sekarang perubahan akan pergi ke cabang master tetapi nama cabang lokal Anda adalah new_branch_name)

Untuk detail lebih lanjut, lihat " Cara mengganti nama nama cabang lokal Anda di Git ."


326

Untuk mengganti nama cabang Anda saat ini:

git branch -m <newname>

159
Anda perlu menggunakan -M untuk mengganti nama jika Anda hanya mengubah kapitalisasi, karena git akan memberi tahu Anda bahwa cabang sudah ada.
cjspurgeon

289

Berikut langkah-langkah untuk mengganti nama cabang:

  1. Beralih ke cabang yang perlu diganti namanya
  2. git branch -m <new_name>
  3. git push origin :<old_name>
  4. git push origin <new_name>:refs/heads/<new_name>

EDIT (12/01/2017): Pastikan Anda menjalankan perintah git statusdan memeriksa bahwa cabang yang baru dibuat menunjuk ke ref sendiri dan bukan yang lebih lama. Jika Anda menemukan referensi ke cabang yang lebih tua, Anda harus membatalkan set upstream menggunakan:

git branch --unset-upstream

1
Di langkah mana seseorang akan membatalkan upstream? Sebelum langkah 4?
Cyclonecode

1
Ini adalah jawaban terbaik di sini karena ini menjelaskan proses lengkap untuk menyelesaikan
penggantian

212

Ganti nama cabang akan berguna setelah cabang Anda selesai. Kemudian barang baru akan datang, dan Anda ingin berkembang di cabang yang sama alih-alih menghapusnya dan membuat yang baru.

Dari pengalaman saya, untuk mengganti nama cabang lokal dan jarak jauh di Git, Anda harus melakukan langkah-langkah berikut.

Mengutip dari Banyak Negara - Mengganti nama cabang lokal dan jarak jauh di git

1. Ganti nama cabang lokal Anda

Jika Anda berada di cabang yang ingin Anda ganti namanya:

git branch -m new-name

Jika Anda berada di cabang yang berbeda:

git branch -m old-name new-name

2. Hapus cabang jarak jauh nama lama dan dorong cabang lokal nama baru

git push origin :old-name new-name

3. Setel ulang cabang upstream untuk cabang lokal nama baru

git push origin -u new-name

1
Yang ini bekerja lebih baik untuk saya. Di sini 2 langkah memberi saya kesalahan berikut: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
Anda mendapat masalah saat menjalankan perintah, git push origin :old-name new-namekan?
trungk18

Yap persis (maaf saya maksudkan "langkah ke-2", bukan "2 langkah" - lelah)
Anto

116

Jawabannya sejauh ini benar, tetapi di sini ada beberapa informasi tambahan:

Seseorang dapat dengan aman mengganti nama cabang dengan '-m' (bergerak), tetapi kita harus berhati-hati dengan '-M', karena itu memaksa nama tersebut, bahkan jika ada cabang yang sudah ada dengan nama yang sama sudah. Berikut adalah kutipan dari halaman manual 'git-branch':

Dengan opsi -m atau -M, <oldbranch>akan diubah namanya menjadi <newbranch>. Jika <oldbranch>memiliki reflog yang sesuai, namanya diubah agar sesuai <newbranch>, dan entri reflog dibuat untuk mengingat penggantian nama cabang. Jika <newbranch>ada, -M harus digunakan untuk memaksa penggantian nama agar terjadi.


2
Apa yang terjadi pada cabang yang ditimpa?
Kevin Dice

Ditimpa oleh nama / cabang baru. Sebagai contoh jika Anda memiliki cabang berikut di git: master b1 <- cabang saat ini b2 setelah Anda melakukan 'git branch -M b2' Anda hanya akan memiliki: master b2 <- cabang saat ini b1 akan hilang dan jika Anda ingin memulihkannya Anda harus memeriksanya dengan hash-nya. Anda dapat melihatnya dengan mengetikkan 'git reflog'. Bersulang.
Vanchev

The -MBendera ini juga berguna untuk memaksa mengubah nama jika Anda hanya mengoreksi kasus nama cabang, misalnya mengubah myBranchke MyBranch. (Dengan -m, git kembali fatal: A branch named 'MyBranch' already exists.)
Jon Schneider

92

1. Ganti nama

Jika itu adalah cabang Anda saat ini, lakukan saja

git branch -m new_name

Jika cabang lain yang ingin Anda ganti namanya

git branch -m old_name new_name

2. Lacak cabang jarak jauh yang baru

- Jika cabang Anda didorong, maka setelah mengganti nama Anda harus menghapusnya dari repositori Git jarak jauh dan meminta lokal baru Anda untuk melacak cabang jarak jauh baru:

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

74

Aku dengan bodohnya memberi nama cabang yang dimulai dengan tanda hubung, dan kemudian memeriksa master. Saya tidak ingin menghapus cabang saya, saya punya pekerjaan di dalamnya.

Tak satu pun dari ini bekerja:

git checkout -dumb-name

git checkout -- -dumb-name

"s, 's dan \s juga tidak membantu. git branch -mtidak bekerja

Inilah cara saya akhirnya memperbaikinya. Pergilah ke copy pekerjaan Anda .git / refs / head, cari nama file "-dumb-name", dapatkan hash dari cabang. Maka ini akan memeriksanya, membuat cabang baru dengan nama waras, dan menghapus yang lama.

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

8
Tidak bisakah Anda mengganti nama file dalam referensi / kepala?
android.weasel

Dito. Jika Anda harus menggali ke dalam struktur direktori untuk melakukan keajaiban ini, pergilah dan lakukan 'mv - -dumb-name brilliant-name' Do a 'git branch -av' dan Anda akan melihat struktur direktori dari .git / ref. Atau mungkin 'grep -R ^ .git / ref' untuk melihat hash secara langsung.
Dave X

2
Anda mungkin bisa menggunakanreflog
Code Whisperer

Jujur, jika itu rute yang ingin Anda ambil, saya akan menghindari (IMO membingungkan dan berpotensi berbahaya jika Anda tidak tahu apa yang Anda lakukan) jaunt melalui direktori .git di tempat pertama, dan lakukan saja dengan beberapa perintah normal dengan parsing "git log" (menggunakan flag yang sesuai untuk menampilkan cabang, dan untuk mengetahui shasum mana Anda ingin checkout dari cabang baru), dan kemudian lakukan. Kemudian, hapus cabang yang dinamai winky. Saya membenci git yang bersikeras bahwa Anda perlu memahami semua pekerjaan batiniahnya untuk melakukan beberapa hal, tetapi sangat menghargai bahwa Anda dapat melakukan hal-hal itu.
Jon V

Lebih sulit untuk membuat cabang dengan nama yang buruk di 2.10.1+. Jika Anda melakukannya, Anda bisa menggunakan git branch -v untuk mendapatkan versi hash pendek dari cabang Anda (tambahkan -r untuk remote). Anda kemudian dapat menggunakan git rev-parse <shorthash> untuk mendapatkan hash lengkap jika Anda membutuhkannya.
House of Dexter

67

Untuk mengganti nama cabang secara lokal:

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

Sekarang Anda harus menyebarkan perubahan ini di server jauh Anda juga.

Untuk mendorong perubahan dari cabang lama yang dihapus:

git push origin :[old-branch]

Untuk mendorong perubahan pembuatan cabang baru:

git push origin [new-branch]

57

Hanya tiga langkah untuk meniru perubahan nama di remotedan juga di GitHub:

Langkah 1 git branch -m old_branchname new_branchname

Langkah 2 git push origin :old_branchname new_branchname

Langkah 3 git push --set-upstream origin new_branchname


2
Saya juga harus melakukan satu hal tambahan: git push --set-upstream origin new_branchnameyang disebutkan dalam @Nomade answer
IbrahimShendy

2
Langkah 3 tidak diperlukan. Semuanya diperbarui setelah Langkah 2.
Dev

@ Ev tidak dalam semua kasus Dev, saya harus memperbarui baru-baru ini karena menggunakan bitbucket dan codecommit, langkah 3 diperlukan
Harry_pb

40

Ganti nama cabang menggunakan perintah ini:

git branch -m [old_branch_name] [new_branch_name]

-m: Ini mengubah nama / memindahkan cabang. Jika sudah ada cabang, Anda akan mendapatkan kesalahan.

Jika sudah ada cabang dan Anda ingin mengganti nama dengan cabang itu, gunakan:

 git rename -M [old_branch_name] [new_branch_name]

Untuk informasi lebih lanjut tentang bantuan, gunakan perintah ini di terminal:

git branch --help

atau

man git branch

40

Pengguna Advanced Git dapat mengubah nama secara manual menggunakan:

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. Ganti nama cabang lokal Anda.

Jika Anda berada di cabang yang ingin Anda ganti namanya:

git branch -m new-name

Jika Anda berada di cabang yang berbeda:

git branch -m old-name new-name
  1. Hapus cabang jarak jauh nama lama dan dorong cabang lokal nama baru.

git push origin :old-name new-name

  1. Setel ulang cabang upstream untuk cabang lokal nama baru. Beralih ke cabang dan kemudian:

git push origin -u new-name

Atau untuk cara cepat melakukannya, Anda dapat menggunakan 3 langkah ini:

# Ganti nama cabang secara lokal

git branch -m old_branch new_branch  

# Hapus cabang jarak jauh yang lama

git push origin :old_branch  

# Dorong cabang baru, atur cabang lokal untuk melacak remote baru

git push --set-upstream origin new_branch   

Referensi: https://www.w3docs.com/snippets/git/how-to-rename-git-local-and-remote-branches.html


ini bekerja untuk saya
Vazgen Manukyan

26

Berikut adalah tiga langkah: Perintah yang dapat Anda panggil di dalam terminal Anda dan ubah nama cabang.

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

Jika Anda membutuhkan lebih banyak: langkah demi langkah, Cara Mengubah Nama Cabang Git adalah artikel yang bagus tentang itu.


25

Mungkin seperti yang disebutkan oleh orang lain, ini akan menjadi kasus ketidakcocokan dalam penamaan cabang.

Jika Anda memiliki situasi seperti itu, saya dapat menebak bahwa Anda menggunakan Windows yang juga akan mengarahkan Anda ke:

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

Maka Anda harus melakukan langkah menengah:

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

Tidak ada lagi.


1
Perhatikan bahwa situasi ini mungkin juga muncul pada Mac, yang juga (sangat mengganggu) tidak sensitif dalam sistem file-nya.
Jon V

Atau, Anda dapat menggunakan -Malih-alih -mmelakukan semacam ini "ganti casing" ganti nama dalam satu langkah.
Jon Schneider

23

Mencoba menjawab secara khusus untuk pertanyaan (setidaknya judul).

Anda juga dapat mengganti nama cabang lokal , tetapi tetap melacak nama lama di remote.

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

Sekarang, ketika Anda menjalankan git push, old_branchreferensi jarak jauh diperbarui dengan lokal Anda new_branch.

Anda harus mengetahui dan mengingat konfigurasi ini. Tetapi ini bisa bermanfaat jika Anda tidak memiliki pilihan untuk nama cabang jarak jauh, tetapi Anda tidak menyukainya (oh, maksud saya, Anda punya alasan yang sangat bagus untuk tidak menyukainya!) Dan lebih suka yang lebih jelas nama untuk cabang lokal Anda.

Bermain dengan konfigurasi ambil, Anda bahkan dapat mengganti nama referensi jarak jauh lokal. yaitu, memiliki refs/remote/origin/new_branchpointer ref ke cabang, yang notabene old_branchon origin. Namun, saya sangat tidak menyarankan ini, untuk keselamatan pikiran Anda.


22

Mengubah cabang secara lokal cukup mudah ...

Jika Anda berada di cabang yang ingin Anda ganti namanya, cukup lakukan ini:

git branch -m my_new_branch

Jika tidak, jika Anda berada di masteratau cabang lain selain yang ingin Anda ganti namanya, cukup lakukan:

git branch -m my_old_branch my_new_branch

Juga, saya membuat gambar di bawah ini untuk menunjukkan ini dalam tindakan pada baris perintah . Dalam hal ini, Anda berada di mastercabang, misalnya:

Ubah nama cabang secara lokal


21

Jika Anda bersedia menggunakan SourceTree (yang sangat saya rekomendasikan), Anda dapat mengklik kanan cabang Anda dan memilih 'Ganti Nama'.

masukkan deskripsi gambar di sini


20

Untuk mengganti nama cabang saat ini (kecuali untuk kondisi HEAD yang terlepas) Anda juga dapat menggunakan alias ini:

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

18

Opsi lain adalah tidak menggunakan baris perintah sama sekali. Klien Git GUI seperti SourceTree mengambil banyak kurva pembelajaran sintaksis / rasa sakit yang menyebabkan pertanyaan seperti ini menjadi salah satu yang paling banyak dilihat di Stack Overflow.

Di SourceTree, klik kanan pada cabang lokal di panel "Cabang" di sebelah kiri dan pilih "Ganti nama ...".


5
Saya tidak akan menyebutnya sakit. Perintah git sangat mudah digunakan, setelah Anda melihat jawaban ini, Anda mungkin tidak akan pernah kembali lagi. Masalahnya lebih dari itu, jadi sepertinya, dokumentasi dari git command-line tidak cukup intuitif.
Nearoo

1
Benar tetapi dengan SourceTree saya hampir tidak perlu khawatir tentang memeriksa dokumentasi. Semuanya umumnya intuitif - cukup klik kanan dan lihat opsi apa yang ada. (BTW saya tidak berafiliasi dengan mereka dengan cara apa pun - sama seperti alat!)
Steve Chambers

17

Cara mudah untuk melakukannya:

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

Untuk lebih lanjut, lihat ini .


15

Karena Anda tidak ingin mendorong cabang ke server jauh, contoh ini akan berguna:

Katakanlah Anda memiliki cabang yang ada yang disebut "fitur-panas-ku", dan Anda ingin mengubah nama menjadi "fitur-15."

Pertama, Anda ingin mengubah cabang lokal Anda. Ini tidak bisa lebih mudah:

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

Untuk informasi lebih lanjut, Anda dapat mengunjungi Secara Lokal dan Mengganti Nama Jarak Jauh Cabang di Git .


13

Git versi 2.9.2

Jika Anda ingin mengubah nama cabang lokal Anda berada di:

git branch -m new_name

Jika Anda ingin mengubah nama cabang yang berbeda:

git branch -m old_name new_name

Jika Anda ingin mengubah nama cabang yang berbeda menjadi nama yang sudah ada:

git branch -M old_name new_name_that_already_exists

Catatan: Perintah terakhir bersifat merusak dan akan mengganti nama cabang Anda, tetapi Anda akan kehilangan cabang lama dengan nama itu dan itu dilakukan karena nama-nama cabang harus unik.


11

Jika Anda ingin mengubah nama cabang saat ini, jalankan:

git branch -m [old_branch] [new_branch]

Jika Anda ingin menghapus cabang jarak jauh yang lama, jalankan:

git push origin :[old_branch]

Jika Anda ingin menghapus cabang jarak jauh yang lama dan membuat cabang jarak jauh yang baru, jalankan:

git push origin :old_branch new_branch

6

Ganti nama cabang Git dapat dilakukan dengan menggunakan:

  1. git branch -m oldBranch newBranch

  2. git branch -M oldBranch ExistingBranch

Perbedaan antara -m dan -M :

-m: jika Anda mencoba mengubah nama cabang Anda dengan nama cabang yang ada menggunakan -m . Ini akan memunculkan kesalahan dengan mengatakan bahwa cabang sudah ada. Anda harus memberi nama yang unik.

Tapi,

-M: ini akan membantu Anda untuk memaksa mengganti nama dengan nama yang diberikan, meskipun itu ada. Jadi cabang yang ada akan menimpa sepenuhnya dengan itu ...

Berikut adalah contoh terminal 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

Untuk pengguna Git GUI itu tidak bisa lebih sederhana. Di Git GUI, pilih nama cabang dari daftar turun bawah di kotak dialog "Ubah Nama Cabang" yang dibuat dari item menu Cabang: Ubah nama, ketikkan Nama Baru, dan klik "Ganti nama". Saya telah menyoroti di mana menemukan daftar drop down.

Ganti nama cabang Git lokal


3

Jika Anda menghendaki:

  • Ganti nama repositori Git, jalankan: git branch -m <oldname> <newname>
  • Hapus cabang lama dengan: git push origin: old-name new-name
  • Komit menggunakan: git commit <newname>
    • dan kemudian dorong menggunakan: git push origin new_branch_name:master
  • Jika Anda ingin memeriksa statusnya maka gunakan: git status
  • Jika Anda ingin check-out maka gunakan: git checkout

3

Semua jawaban sebelumnya dibicarakan git branch -m . Tentu saja, mudah dioperasikan, tetapi bagi saya, mungkin agak sulit mengingat perintah Git yang lain. Jadi saya mencoba menyelesaikan pekerjaan dengan perintah yang saya kenal. Ya, Anda bisa menebaknya.

Saya menggunakan git branch -b <new_branch_name>. Dan jika Anda tidak ingin menyimpan cabang lama sekarang, Anda dapat menjalankan git branch -D <old_branch_name>untuk menghapusnya.

Saya tahu ini mungkin sedikit membosankan, tetapi lebih mudah dipahami dan diingat. Saya harap ini membantu Anda.


Jika Anda kesulitan mengingat perintah, Anda dapat mengatur sendiri shell atau git alias.
sean

bagaimana jika saya perlu menjalankan perintah pada banyak mesin yang berbeda?
Dai Kaixian

1

Dalam PhpStorm:

VCS → Git → Cabang ... → Cabang Lokal → _your_branch_ → Ubah nama


0

Yang harus Anda lakukan adalah tiga langkah:

  1. Berikan cabang lama di bawah .git / refs / head nama baru
  2. Berikan cabang lama di bawah .git / logs / refs / kepala nama baru
  3. Perbarui .git / KEPALA untuk mengarah ke nama cabang baru Anda
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.