Saya baru saja mengganti nama cabang lokal saya menggunakan
git branch -m oldname newname
tetapi ini hanya mengganti nama versi lokal cabang. Bagaimana saya bisa mengganti nama yang ada di GitHub?
Saya baru saja mengganti nama cabang lokal saya menggunakan
git branch -m oldname newname
tetapi ini hanya mengganti nama versi lokal cabang. Bagaimana saya bisa mengganti nama yang ada di GitHub?
Jawaban:
Seperti yang disebutkan, hapus yang lama di Github & tekan kembali, meskipun perintah yang digunakan sedikit lebih bertele-tele daripada yang diperlukan:
git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local
Sederhana. Membedah perintah sedikit, perintah git push pada dasarnya:
git push <remote> <local_branch>:<remote_branch>
Jadi melakukan push tanpa local_branch ditentukan pada dasarnya berarti "mengambil apa-apa dari repositori lokal saya, dan menjadikannya cabang jarak jauh". Saya selalu berpikir ini benar-benar kotor, tapi begitulah caranya.
Sunting: Pada Git 1.7 ada sintaks alternatif untuk menghapus cabang jarak jauh:
git push origin --delete name_of_the_remote_branch
Sunting: Seperti yang disebutkan oleh @ void.pointer di komentar
Perhatikan bahwa Anda dapat menggabungkan 2 operasi push:
git push origin :old_branch new_branch
Ini akan menghapus cabang lama dan mendorong yang baru.
Ini bisa diubah menjadi alias sederhana yang menggunakan remote, cabang asli dan nama cabang baru sebagai argumen, di ~/.gitconfig
:
[alias]
branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"
Pemakaian:
git branchm origin old_branch new_branch
Perhatikan bahwa argumen posisional dalam perintah shell bermasalah di versi git yang lebih lama (pra 2.8?), Sehingga alias dapat bervariasi sesuai dengan versi git. Lihat diskusi ini untuk detailnya.
git push origin :old_branch new_branch
. Ini akan menghapus cabang lama dan mendorong yang baru.
git branch -m new_branch
(ganti nama old_branch menjadi new_branch) 2. git commit -m 'msg'
, 3. git push
4. Mhmm, old_branch muncul di Github, pertanyaan Google dan saya diarahkan ke jawaban Anda 5. git push origin :old_branch
(mengatakan itu dihapus) 6. git push origin new_branch
... selesai kemudian berkata * [new branch] new_branch -> old_branch
. Kembali ke Github dan old_branch
muncul lagi. Jika saya menghapus di Github web UI, saya memiliki opsi untuk "Pulihkan," jadi sepertinya mendorong new_branch baru saja memulihkan.
Perintah berikut bekerja untuk saya:
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
Saya telah menemukan 3 perintah bagaimana Anda dapat mengubah nama cabang git Anda, dan perintah ini adalah cara yang lebih cepat 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
Jika Anda memerlukan langkah demi langkah Anda dapat membaca artikel yang bagus ini
git push --set-upstream
adalah bagian terpenting jika Anda mengubah nama cabang secara lokal menggunakan aplikasi github sebelum menghapus cabang jarak jauh.
Hapus saja cabang lama dan buat yang baru.
Contoh (hanya mengganti nama cabang jarak jauh):
git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname
Anda juga mungkin harus mengganti nama cabang lokal dan mengubah pengaturan tempat mendorong / menarik.
git push origin newname:refs/heads/newname
? master dan newname mungkin tidak menunjuk ke komit yang sama.
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.
Beralih ke cabang dan kemudian:
git push origin -u new-name
Jadi kesimpulannya adalah
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
. Itu akan gagal. Jika jawaban ini hanya tentang git dan bukan github maka pertanyaan ini adalah duplikat dari beberapa pertanyaan lain dan harus ditutup. Jika itu benar-benar tentang github maka jawabannya harus mencakup github. Jawaban ini tidak.
Anda dapat melakukannya tanpa terminal, Anda hanya perlu membuat cabang dengan nama baru, dan menghapus yang lama setelahnya. Anda dapat menggunakan pos ini untuk melakukan itu.
Artikel ini menunjukkan cara melakukannya dengan sangat mudah.
1. Untuk mengganti nama cabang Git lokal, kita dapat menggunakan perintah Git branch -m untuk memodifikasi nama:
git branch -m feature1 feature2
2. Jika Anda hanya mencari perintah untuk mengubah nama cabang Git jarak jauh, ini dia "
git push -u origin feature2:feature3
Periksa apakah Anda tidak memiliki tag pada cabang sebelum Anda melakukan ini. Anda dapat melakukannya dengan git tag
.
Cara lain adalah mengubah nama file-file berikut :
.git/refs/head/[branch-name]
menjadi.git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/[branch-name]
menjadi.git/refs/remotes/[all-remote-names]/new-branch-name
Ganti nama head & remote pada PC lokal Anda dan pada asal-usul / server jauh
Jika nama cabang Anda saat ini mengandung garis miring ( /
) git akan membuat direktori seperti:
nama cabang saat ini: "awe/some/branch"
.git/refs/head/awe/some/branch
.git/refs/remotes/[all-remote-names]/awe/some/branch
berharap nama cabang: "new-branch-name"
branch
file dari.git/refs/*/awe/some/
.git/refs/head/
.branch
file dari semua.git/refs/remotes/*/awe/some/
.git/refs/remotes/*/
.branch
file yang disalin menjadinew-branch-name
..git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/new-branch-name
awe/some/branch
menjadinew-branch-name
(lokal dan jauh!)Info: Cara ini mungkin bukan yang terbaik, tetapi masih berfungsi untuk orang yang mungkin memiliki masalah dengan cara lain
Dalam kasus saya, saya membutuhkan perintah tambahan
untuk mendorong cabang saya yang diganti nama menjadi push up .
git branch --unset-upstream
origin newname
(Untuk kemudahan mengetik), saya pertama kali git checkout oldname
.
Kemudian jalankan yang berikut ini:
git branch -m newname
git push origin :oldname
atau ataugit push origin --delete oldname
git branch --unset-upstream
git push -u origin newname
git push origin newname
Langkah tambahan ini mungkin hanya diperlukan karena saya (cenderung) mengatur pelacakan jarak jauh melalui cabang saya melalui . Dengan cara ini ketika saya sudah check out, saya hanya perlu mengetik daripadagit push
-u
origin oldname
oldname
git push
git push origin oldname
Jika saya TIDAK menggunakan perintah git branch --unset-upstream
sebelumnya git push origin newbranch
, git menciptakan kembali oldbranch
dan mendorong newbranch
untuk origin oldbranch
- mengalahkan maksud saya.
Perintah berikut mengubah nama cabang secara lokal, menghapus cabang lama di lokasi jarak jauh dan mendorong cabang baru, mengatur cabang lokal untuk melacak jarak jauh baru:
git branch -m old_branch new_branch
git push origin :old_branch
git push --set-upstream origin new_branch
Sesederhana itu . Untuk mengganti nama cabang git secara lokal dan menggunakan potongan ini dari jarak jauh (diuji dan bekerja seperti mantra):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
Penjelasan:
Ganti nama Langkah:
Referensi Git: Dengan opsi -m atau -M , akan diubah namanya menjadi. Jika memiliki reflog yang sesuai, namanya diubah agar sesuai, dan entri reflog dibuat untuk mengingat penggantian nama cabang. Jika ada, -M harus digunakan untuk memaksa penggantian nama terjadi.
Hapus Langkah:
Referensi Git: git push origin: eksperimental Temukan ref yang cocok dengan eksperimen dalam repositori asal (mis. Ref / head / eksperimental), dan hapus.
Perbarui pada repo jarak jauh Langkah (referensi hulu untuk pelacakan):
Referensi Git: --set-upstream Untuk setiap cabang yang up to date atau berhasil didorong, tambahkan referensi upstream (pelacakan), digunakan oleh argumen-less git-pull [1] dan perintah lainnya. Untuk informasi lebih lanjut, lihat branch..merge in git-config [1].
git dorong kepala asal
git branch -m nama-cabang-lama-nama-cabang baru
git dorong kepala asal
Pada cabang git, jalankan cabang git -m old_name new_name. Ini akan mengubah nama cabang pada repo lokal git Anda. cabang terpencil. Ini menyelesaikan masalah