Pertanyaan Bagaimana cara menghapus cabang Git secara lokal dan jarak jauh?


Saya ingin menghapus cabang baik lokal maupun di proyek terpencil saya GitHub.

Upaya Gagal untuk Menghapus Cabang Jarak Jauh

$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.

$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.

$ git branch -rd origin/bugfix
Deleted remote branch origin/bugfix (was 2a14ef7).

$ git push
Everything up-to-date

$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> origin/bugfix
Already up-to-date.

Apa yang harus saya lakukan berbeda untuk berhasil menghapus remotes/origin/bugfix cabang baik lokal maupun di GitHub?


13818
2018-01-05 01:12


asal


Jawaban:


Ringkasan bisnis plan

$ git push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>

Perhatikan bahwa dalam banyak kasus, nama jarak jauh adalah origin.

Hapus Cabang Lokal

Untuk menghapus lokal cabang menggunakan salah satu dari yang berikut:

$ git branch -d branch_name
$ git branch -D branch_name

catatan: Itu -d opsi adalah alias untuk --delete, yang hanya menghapus cabang jika telah sepenuhnya digabung dalam cabang hulu. Anda juga bisa menggunakan -D, yang merupakan alias untuk --delete --force, yang menghapus cabang "terlepas dari status gabungannya." [Sumber: man git-branch]

Hapus Remote Branch [Diperbarui pada 8-Sep-2017]

Seperti Git v1.7.0, Anda dapat menghapus terpencil cabang menggunakan

$ git push <remote_name> --delete <branch_name>

yang mungkin lebih mudah diingat daripada

$ git push <remote_name> :<branch_name>

yang ditambahkan di Git v1.5.0 "untuk menghapus cabang jarak jauh atau tag."

Mulai Git v2.8.0 Anda juga bisa menggunakan git push dengan -d opsi sebagai alias untuk --delete.

Oleh karena itu, versi Git yang Anda instal akan menentukan apakah Anda perlu menggunakan sintaks yang lebih mudah atau lebih sulit.

Hapus Remote Branch [Jawaban Asli dari 5-Jan-2010]

Dari Bab 3 dari Pro Git oleh Scott Chacon:

Menghapus Cabang Jarak Jauh

Misalnya Anda sudah selesai dengan cabang jarak jauh - misalnya, Anda dan kolaborator Anda telah selesai dengan fitur dan telah menggabungkannya ke cabang master jarak jauh Anda (atau cabang apa pun dari kodemu yang stabil). Anda dapat menghapus cabang jarak jauh menggunakan sintaks yang agak tumpul git push [remotename] :[branch]. Jika Anda ingin menghapus cabang serverfix dari server, Anda menjalankan yang berikut:

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix

Ledakan. Tidak ada lagi cabang di server Anda. Anda mungkin ingin mendengarkan halaman ini, karena Anda akan membutuhkan perintah itu, dan Anda mungkin akan melupakan sintaksnya. Cara untuk mengingat perintah ini adalah dengan memanggil kembali git push [remotename] [localbranch]:[remotebranch] sintaks yang kami bahas sebelumnya. Jika Anda meninggalkan [localbranch] sebagian, maka pada dasarnya Anda mengatakan, “Jangan ambil apa pun di sisi saya dan jadikan itu [remotebranch]. "

Saya dikeluarkan git push origin :bugfix dan itu bekerja dengan sangat baik. Scott Chacon benar — saya akan mau telinga anjing halaman itu (atau hampir telinga anjing dengan menjawab ini di Stack Overflow).

Maka Anda harus menjalankan ini pada mesin lain

git fetch --all --prune

untuk menyebarkan perubahan.


17189
2018-01-05 01:13



Jawaban Matius sangat bagus untuk dihilangkan terpencil cabang dan saya juga menghargai penjelasannya, tetapi untuk membuat perbedaan sederhana antara dua perintah:

Untuk menghapus cabang lokal dari mesin Anda:

git branch -d {the_local_branch} (menggunakan -D alih-alih memaksa menghapus cabang tanpa memeriksa status gabungan)

Untuk menghapus cabang jarak jauh dari server:

git push origin --delete {the_remote_branch}

Referensi: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote


2867
2018-06-12 14:51



Jawaban Singkat

Jika Anda ingin penjelasan lebih rinci tentang perintah berikut, lihat jawaban panjang di bagian selanjutnya.

Menghapus cabang jarak jauh:

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin :<branch>          # Git versions older than 1.7.0

Menghapus cabang lokal:

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches

Menghapus cabang pelacakan jarak jauh lokal:

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

Jawaban Panjang: ada 3 cabang berbeda untuk dihapus!

Ketika Anda berurusan dengan menghapus cabang baik lokal maupun jarak jauh, ingatlah itu ada 3 cabang berbeda yang terlibat:

  1. Cabang lokal X.
  2. Cabang asal yang terpencil X.
  3. Cabang pelacakan jarak jauh lokal origin/X yang melacak cabang jarak jauh X.

Visualization of 3 branches

Poster asli yang digunakan

git branch -rd origin/bugfix

yang hanya menghapusnya cabang pelacakan jarak jauh lokal  origin/bugfix, dan bukan cabang terpencil yang sebenarnya bugfix di origin.

Diagram 2

Untuk menghapus cabang jarak jauh yang sebenarnya, yang Anda butuhkan

git push origin --delete bugfix

Diagram 3

detil tambahan

Bagian berikut menjelaskan detail tambahan yang perlu dipertimbangkan saat menghapus cabang pelacak jarak jauh dan jarak jauh.

Mendorong untuk menghapus cabang jarak jauh juga menghapus cabang pelacak jarak jauh

Perhatikan bahwa menghapus cabang jarak jauh X dari baris perintah menggunakan git push  juga akan menghapus cabang pelacakan jarak jauh lokal  origin/X, jadi tidak perlu memangkas cabang pelacak jarak jauh yang sudah usang git fetch --prune atau git fetch -p, meskipun tidak ada salahnya jika Anda melakukannya juga.

Anda dapat memverifikasi cabang pelacak jarak jauh origin/X juga dihapus dengan menjalankan yang 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

Memangkas asal cabang pelacak jarak jauh lokal yang sudah tidak berlaku / X

Jika Anda tidak menghapus cabang jarak jauh Anda X dari baris perintah (seperti di atas), maka repo lokal Anda masih akan berisi cabang pelacak jarak jauh (yang sekarang ketinggalan zaman) origin/X. Ini dapat terjadi jika Anda menghapus cabang jarak jauh secara langsung melalui antarmuka web GitHub, misalnya.

Cara yang khas untuk menghapus cabang pelacak jarak jauh yang sudah usang ini (sejak Git versi 1.6.6) adalah dengan mudah dijalankan git fetch dengan --prune atau lebih pendek -p. Perhatikan bahwa ini menghapus semua cabang pelacak jarak jauh lokal yang sudah usang untuk cabang jarak jauh yang tidak lagi ada di kendali jarak jauh:

git fetch origin --prune
git fetch origin -p # Shorter

Ini kutipan yang relevan dari 1.6.6 catatan rilis (penekanan saya):

"git fetch" dipelajari  --all dan --multipleopsi, untuk menjalankan mengambil dari   banyak repositori, dan --prune opsi untuk menghapus pelacakan jarak jauh   cabang-cabang yang basi.  Ini membuat "git remote update" dan "git   remote prune "kurang perlu (tidak ada rencana untuk menghapus" remote   memperbarui "atau" remote prune ", meskipun).

Alternatif untuk pemangkasan otomatis di atas untuk cabang pelacak jarak jauh yang sudah usang

Atau, alih-alih memangkas cabang pelacak jarak jauh lokal yang sudah usang git fetch -p, Anda dapat menghindari membuat operasi jaringan ekstra hanya dengan menghapus cabang secara manual dengan --remote atau -r bendera:

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

Lihat juga


1640
2018-05-30 18:32



Langkah-langkah untuk menghapus cabang:

untuk menghapus cabang jarak jauh:

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: Oke, jelaskan apa yang terjadi di sini!

Cukup lakukan git push origin --delete untuk hapus HANYA cabang jarak jauh Anda, tambahkan nama cabang di bagian akhir dan ini akan menghapus dan mendorongnya ke remote pada saat yang bersamaan ...

Juga, git branch -D, yang hanya menghapus cabang lokal HANYA! ...

-D berdiri untuk --delete --force yang akan menghapus cabang bahkan itu tidak digabung (force delete), tetapi Anda juga dapat menggunakan -d yang berarti --delete yang melempar kesalahan masing-masing dari status penggabungan cabang ...

Saya juga membuat gambar di bawah ini untuk menunjukkan langkah-langkahnya:

delete a remote and local branch in git


922
2018-06-27 13:13



Anda juga dapat menggunakan yang berikut ini untuk menghapus cabang jarak jauh.

git push --delete origin serverfix

Yang melakukan hal yang sama

git push origin :serverfix

tetapi mungkin lebih mudah diingat.


703
2017-10-27 22:22



Jika Anda ingin menghapus cabang, periksa terlebih dahulu ke cabang selain cabang yang akan dihapus.

git checkout other_than_branch_to_be_deleted

Menghapus cabang lokal:

git branch -D branch_to_be_deleted

Menghapus cabang jarak jauh:

git push origin --delete branch_to_be_deleted

344
2017-10-07 13:52



Kiat: Saat Anda menghapus cabang menggunakan

git branch -d <branchname>    # deletes local branch

atau

git push origin :<branchname> # deletes remote branch

hanya referensi yang dihapus. Meskipun cabang tersebut benar-benar dihapus pada remote, referensi tersebut masih ada di repositori lokal anggota tim Anda. Ini berarti bahwa untuk anggota tim lainnya, cabang yang dihapus masih terlihat ketika mereka melakukan git branch -a.

Untuk mengatasi ini, anggota tim Anda dapat memangkas cabang yang dihapus

git remote prune <repository>

Ini biasanya git remote prune origin.


329
2017-11-07 13:02