Saya ingin menghapus cabang, baik lokal dan jarak jauh.
``bash $ git branch -d remote/asal/bugfix kesalahan: cabang 'remote/asal/bugfix' tidak ditemukan.
$ git branch -d asal/bugfix kesalahan: cabang 'asal/bugfix' tidak ditemukan.
$ git branch -rd asal/bugfix Dihapus remote branch asal/bugfix (itu 2a14ef7).
$ git push Segala sesuatu yang up-to-date
$ git pull Dari github.com:gituser/gitproject
Apa yang harus saya lakukan secara berbeda untuk berhasil menghapus
remote/asal/bugfix
cabang baik lokal dan jarak jauh?
$ git push -d <remote_name> <branch_name>
$ git branch -d <branch_name>
Perhatikan bahwa dalam kebanyakan kasus remote nama asal
.
Untuk menghapus lokal cabang menggunakan salah satu dari berikut:
$ git branch -d branch_name
$ git branch -D branch_name
Catatan: The -d
pilihan adalah alias untuk --delete
, yang hanya menghapus cabang jika sudah sepenuhnya bergabung di hulu cabang. Anda juga bisa menggunakan -D
, yang merupakan alias untuk --delete --force
, yang menghapus cabang "terlepas dari digabung status." [Sumber: pria git-cabang
]
Sebagai Git v1.7.0, anda dapat menghapus remote branch menggunakan
$ git push <remote_name> --delete <branch_name>
yang mungkin lebih mudah untuk diingat daripada
$ git push <remote_name> :<branch_name>
yang ditambahkan dalam Git v1.5.0 "untuk menghapus remote cabang atau tag."
Dimulai pada [Git v2.8.0][git-2.8.0] anda juga dapat menggunakan git pushdengan
dpilihan sebagai alias untuk
--delete`.
Oleh karena itu, versi Git anda telah diinstal akan menentukan apakah anda perlu menggunakan lebih mudah atau lebih sulit sintaks.
Dari Bab 3 Pro Git oleh Scott Chacon:
Menghapus Remote Cabang
Misalkan anda selesai dengan remote cabang — katakanlah, anda dan rekan kerja anda selesai dengan fitur dan telah bergabung ke remote master cabang (atau apapun branch stabil kode-line lebih dalam). Anda dapat menghapus cabang jarak jauh menggunakan agak tumpul sintaks
git push [remotename] :[cabang]
. Jika anda ingin menghapus server anda-memperbaiki cabang dari server, anda menjalankan perintah berikut:$ git push origin :serverfix Untuk [email protected]:schacon/simplegit.git
- [dihapus] serverfix
Boom. Tidak ada lagi cabang-cabang pada server anda. Anda mungkin ingin dog-ear halaman ini, karena anda akan membutuhkan perintah, dan anda mungkin akan lupa sintaks. Cara untuk mengingat perintah ini adalah dengan mengingat
git push [remotename] [localbranch]:[remotebranch]
sintaks yang kita pergi sedikit lebih awal. Jika anda meninggalkan dari[localbranch]
bagian, maka anda pada dasarnya mengatakan, "Mengambil apa-apa di sisi saya dan membuatnya menjadi[remotebranch]
."
Saya mengeluarkan git push origin: bugfix
dan itu bekerja dengan indah. Scott Chacon adalah benar—saya akan ingin anjing bahwa halaman (atau hampir telinga anjing ini dengan menjawab pada Stack Overflow).
[git-2.8.0]: https://github.com/git/git/blob/master/Documentation/RelNotes/2.8.0.txt
Maka anda harus melakukan ini pada mesin lainnya
# Fetch changes from all remotes and locally delete
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune
untuk menyebarkan perubahan.
Matius's jawaban sangat bagus untuk menghilangkan remote cabang dan saya juga menghargai penjelasan, tetapi untuk membuat sederhana perbedaan antara dua perintah:
Untuk menghapus cabang lokal dari mesin anda:
git branch -d {the_local_branch}
(menggunakan -D
bukan untuk memaksa menghapus cabang tanpa memeriksa digabung status)
Untuk menghapus remote branch dari server:
git push origin --delete {the_remote_branch}
Referensi: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote
Jika anda ingin penjelasan lebih detail mengenai perintah berikut, kemudian melihat jawaban di bagian berikutnya.
Menghapus remote branch:
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin :<branch> # Git versions older than 1.7.0
Menghapus sebuah cabang lokal:
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches
Menghapus sebuah daerah terpencil-cabang pelacakan:
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
Bila anda're berurusan dengan menghapus cabang, baik lokal dan jarak jauh, perlu diingat bahwa ada 3 cabang yang berbeda yang terlibat:
X
.X
.asal/X
yang melacak remote branch X
.Poster asli yang digunakan
git branch -rd origin/bugfix
yang hanya dihapus-nya daerah terpencil-cabang pelacakan asal/bugfix
, dan tidak aktual remote branch perbaikan bug
pada asal
.
Untuk menghapus yang sebenarnya remote branch, yang anda butuhkan
git push origin --delete bugfix
Bagian berikut ini menggambarkan rincian tambahan yang perlu dipertimbangkan ketika anda menghapus remote dan remote-cabang pelacakan.
Perhatikan bahwa menghapus remote branch X
dari baris perintah dengan menggunakan git push**juga akan menghapus daerah terpencil-cabang pelacakan**
asal/X, sehingga tidak perlu untuk memangkas usang remote-cabang pelacakan dengan
git fetch-pruneatau
git fetch-p`, meskipun itu tidak't salahnya jika anda tetap melakukannya.
Anda dapat memverifikasi bahwa remote-cabang pelacakan asal/X
juga dihapus dengan menjalankan perintah berikut:
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
Jika anda didn't menghapus remote branch X
dari baris perintah (seperti di atas), maka anda repo lokal masih akan berisi (yang sekarang usang) remote-cabang pelacakan asal/X
. Hal ini dapat terjadi jika anda menghapus sebuah remote branch langsung melalui GitHub's web interface, misalnya.
Cara yang khas untuk menghapus usang remote-pelacakan cabang (sejak Git versi 1.6.6) adalah untuk hanya menjalankan git fetchdengan
--memangkasatau pendek
-p`. Perhatikan bahwa ini akan menghapus semua usang lokal remote-cabang pelacakan untuk setiap cabang yang tidak lagi ada di remote:
git fetch origin --prune
git fetch origin -p # Shorter
Berikut adalah kutipan yang relevan dari 1.6.6 catatan rilis (penekanan dari saya):
"git fetch" belajar
--semua
dan--beberapa
pilihan, untuk menjalankan ambil dari banyak repositori, dan--memangkas
pilihan untuk menghapus remote tracking cabang-cabang yang pergi basi. Ini membuat "git remote update" dan "git remote prune" kurang diperlukan (tidak ada rencana untuk memindahkan "remote update" atau "remote prune", meskipun).
Atau, bukan pemangkasan anda usang lokal remote-cabang pelacakan melalui git fetch-p
, anda dapat menghindari membuat jaringan ekstra operasi dengan hanya secara manual menghapus branch(es) dengan --jauh
atau -r
bendera:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
git push origin --delete <your_branch>
Untuk menghapus cabang lokal, anda memiliki tiga cara:
1: git branch -D <branch_name>
2: git branch --delete --force <branch_name> //same as -D
3: git branch --delete <branch_name> //error on unmerge
Menjelaskan: OK, hanya menjelaskan apa yang's terjadi di sini!
Cukup lakukan git push origin --delete
untuk menghapus branch jauh HANYA, tambahkan nama cabang pada akhir dan ini akan menghapus dan push ke remote di waktu yang sama...
Juga, git branch -D
, yang hanya menghapus cabang lokal HANYA!...
-D
singkatan dari --delete --force
yang akan menghapus cabang bahkan itu's tidak digabung(force delete), tetapi anda juga dapat menggunakan -d
yang merupakan singkatan dari --delete
yang melempar kesalahan masing-masing cabang gabungan status...
Saya juga membuat gambar di bawah ini untuk menunjukkan langkah-langkah:
Anda juga dapat menggunakan berikut untuk menghapus remote branch
git push --delete origin serverfix
Yang melakukan hal yang sama seperti yang
git push origin :serverfix
tapi itu mungkin lebih mudah untuk diingat.
Tip: Bila anda menghapus cabang-cabang yang menggunakan
git branch -d <branchname> # deletes local branch
atau
git push origin :<branchname> # deletes remote branch
hanya referensi dihapus. Meskipun cabang ini benar-benar dihapus pada remote referensi untuk itu masih ada di repositori lokal dari anggota tim anda. Ini berarti bahwa untuk anggota tim lainnya dihapus cabang-cabang yang masih terlihat ketika mereka melakukan git branch -a
.
Untuk memecahkan masalah ini anggota tim anda dapat memangkas dihapus cabang dengan
git remote prune <repository>
Biasanya ini adalah git remote prune asal
.
Jika anda ingin menghapus cabang, pertama checkout untuk cabang lain dari cabang yang akan dihapus.
git checkout other_than_branch_to_be_deleted
Menghapus cabang lokal:
git branch -D branch_to_be_deleted
Menghapus remote branch:
git push origin --delete branch_to_be_deleted
Ini adalah sederhana: Hanya jalankan perintah berikut:
Untuk menghapus Git branch baik lokal dan jarak jauh, pertama menghapus cabang lokal menggunakan perintah:
git branch -d example
(di sini contoh
adalah nama cabang)
Dan setelah itu menghapus remote branch menggunakan perintah:
git push origin :example
Pendekatan lain adalah:-
git push --prune origin
PERINGATAN: Ini akan menghapus semua cabang yang tidak ada secara lokal. Atau secara lebih komprehensif,
git push --mirror
efektif akan membuat repositori jauh terlihat seperti salinan lokal dari repositori (kepala daerah, remote dan kategori yang dicerminkan pada remote).
Menghapus secara lokal:
Untuk menghapus sebuah cabang lokal, anda dapat menggunakan:
git branch -d <branch_name>
Untuk menghapus cabang paksa, gunakan -D
bukan -d
.
git branch -D <branch_name>
Menghapus dari jarak jauh:
Ada dua pilihan:
git push origin :branchname
git push origin --delete branchname
Saya akan menyarankan anda menggunakan ke-2 cara seperti itu lebih intuitif.
Sejak januari 2013, GitHub termasuk Hapus cabang tombol berikutnya untuk masing-masing cabang dalam "cabang-Cabang" di halaman.
Relevan posting blog: Membuat dan menghapus cabang
Jika anda ingin menyelesaikan kedua langkah ini dengan satu perintah, anda dapat membuat sebuah alias untuk itu dengan menambahkan kode di bawah ini untuk anda ~/.gitconfig
:
[alias]
rmbranch = "!f(){ git branch -d ${1} && git push origin --delete ${1}; };f"
Atau, anda dapat menambahkan ini ke global config dari baris perintah dengan menggunakan
git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git push origin --delete ${1}; };f'
NOTE: Jika menggunakan -d
(huruf kecil d), cabang hanya akan dihapus jika sudah bergabung. Untuk memaksa menghapus terjadi, anda akan perlu menggunakan -D
(huruf D).
Untuk menghapus cabang anda secara lokal dan remote
Checkout untuk menguasai cabang - git checkout master
Menghapus remote cabang - git push origin --delete <cabang-nama>
Menghapus cabang lokal anda - git branch --delete <cabang-nama>
Anda juga dapat melakukan ini dengan menggunakan git remote prune asal
$ git remote prune origin
Pruning origin
URL: [email protected]/yourrepo.git
* [pruned] origin/some-branchs
Ini plum dan menghapus jauh-pelacakan cabang dari git branch -r
daftar.
Selain jawaban yang lain, saya sering menggunakan git_remote_branch tool. It's ekstra pasang, tapi itu membuat anda cara yang nyaman untuk berinteraksi dengan remote cabang. Dalam hal ini, untuk menghapus:
grb delete branch
Saya menemukan bahwa saya juga menggunakan publish
dan track
perintah-perintah yang cukup sering
Salah satu kapal perintah delete baik lokal dan remote:
D=cabang-nama; git branch -D $D; git push origin :$D
atau tambahkan alias di bawah ini untuk anda ~/.gitconfig; penggunaan: git membunuh branch-name
[alias]
kill = "!f(){ git branch -D \"$1\"; git push origin --delete \"$1\"; };f"
Let's asumsikan kita bekerja pada cabang "contact-form" dilakukan dan kami've sudah terintegrasi ke "master". Karena kita don't perlu lagi, kita bisa menghapusnya (lokal):
$ git branch -d-kontak form
Dan untuk menghapus remote branch:
git push origin --delete contact-form