Bagaimana cara menghapus cabang secara lokal?

159

Saya memiliki master dan cabang dev di repositori saya. Saya ingin menghapus cabang master dari komputer saya sehingga saya tidak sengaja melakukan itu (itu terjadi ..).

Ada pertanyaan di sini tentang cara menghapus cabang secara lokal dan jarak jauh, tetapi saya belum dapat mengetahui cara hanya menghapus cabang secara lokal.

Satu jawaban mengatakan untuk menggunakan ini:

git branch -d local_branch_name

Tapi saya mencobanya dan cabang masih muncul di aplikasi GitHub.

Nate
sumber
Apa output dari perintah itu? Kamu sedang di cabang apa? Bagaimana ini muncul di konsol?
SLaks
@ SLaks saya punya jenis dalam pertanyaan saya. Di konsol itu sebenarnya mengatakan cabang telah dihapus, tetapi dalam aplikasi GitHub (bahkan setelah restart) cabang dan komit masih terlihat. Outputnya adalahDeleted branch master (was e8a8e29).
Nate
GitHub untuk Windows juga menampilkan cabang jarak jauh
SLaks
@ SLaks Jadi setelah menghapus cabang secara lokal, jika saya mengkliknya di aplikasi GitHub untuk Windows apakah itu hanya kloning ulang? Saya ingin mencegah diri saya untuk dapat membuat perubahan ke cabang utama secara langsung.
Nate

Jawaban:

114

Saya pikir (berdasarkan komentar Anda) bahwa saya mengerti apa yang ingin Anda lakukan: Anda ingin salinan lokal repositori Anda tidak memiliki cabang lokal biasa master, atau cabang pelacak jarak jauh origin/master, meskipun repositori yang Anda kloning — github satu —Memiliki cabang lokal masteryang tidak Anda miliki ingin Anda hapus dari versi github.

Anda dapat melakukan ini dengan menghapus cabang pelacak jarak jauh secara lokal, tetapi ia akan kembali setiap kali Anda meminta git Anda untuk menyinkronkan repositori lokal Anda dengan repositori jarak jauh, karena git Anda bertanya pada git mereka "cabang apa yang Anda miliki" dan itu mengatakan "Aku punya master" sehingga git Anda (re) menciptakan origin/masteruntuk Anda, sehingga repositori Anda memiliki apa yang mereka miliki.

Untuk menghapus cabang pelacakan jarak jauh Anda secara lokal menggunakan antarmuka baris perintah:

git branch -d -r origin/master

tetapi sekali lagi, itu hanya akan kembali pada sinkronisasi ulang. Hal ini mungkin untuk mengalahkan ini (menggunakan serta remote.origin.fetchmanipulasi), tetapi Anda mungkin lebih baik hanya yang cukup untuk tidak membuat atau memodifikasi disiplin mastersecara lokal.

torek
sumber
99

Hapus paksa Cabang Lokal:

$ git branch -D <branch_name>

[ CATATAN ]:

"-D" adalah opsi hapus paksa.


Benyamin Jafari
sumber
6
Jika saya menghapus cabang lokal yang memiliki hulu dan kemudian melakukan dorongan normal itu tidak akan menghapus cabang jauh kan?
Dipicu oleh Kopi
1
@FueledByCoffee Inilah jawaban untuk pertanyaan ini
Benyamin Jafari
17

Sejauh yang saya mengerti masalah aslinya, Anda menambahkan kesalahan pada master lokal dan belum mendorong perubahan itu. Sekarang Anda ingin membatalkan perubahan Anda dan berharap untuk menghapus perubahan lokal Anda dan membuat cabang master baru dari yang jauh.

Anda bisa mereset perubahan dan memuat ulang master dari server jauh:

git reset --hard origin/master
Eugene Kaurov
sumber
13

Aplikasi Github untuk Windows menunjukkan semua cabang repositori yang jauh. Jika Anda telah menghapus cabang secara lokal dengan$ git branch -d [branch_name] , cabang jarak jauh masih ada di repositori Github Anda dan akan muncul terlepas dari aplikasi Windows Github.

Jika Anda ingin menghapus cabang sepenuhnya (juga dari jarak jauh), gunakan perintah di atas bersama dengan $ git push origin :[name_of_your_new_branch]. Peringatan: perintah ini menghapus semua cabang yang ada dan dapat menyebabkan hilangnya kode. Hati-hati, saya tidak berpikir ini adalah apa yang Anda coba lakukan.

Namun setiap kali Anda menghapus perubahan cabang lokal, cabang jauh akan tetap muncul di aplikasi. Jika Anda tidak ingin terus melakukan perubahan, abaikan saja dan jangan klik, jika tidak, Anda dapat mengkloning repositori. Jika Anda memiliki pertanyaan lagi, beri tahu saya.


sumber
1

Anda perlu beralih ke cabang lain dan mencoba yang sama.

cabang git -d

Kumar Vaduganathan
sumber
1
Apakah ini seharusnya menjadi jawaban? Atau qustion klarifikasi? Atau pertanyaan sederhana? Ini sangat singkat sehingga saya tidak tahu. Apakah Anda ingin menguraikan?
Yunnosch
0

Dengan tag Anda, saya menganggap Anda menggunakan Github. Mengapa tidak membuat beberapa aturan perlindungan cabang untuk cabang master Anda? Dengan begitu bahkan jika Anda mencoba untuk mendorong untuk menguasai, itu akan menolaknya.

1) Buka tab 'Pengaturan' dari repo Anda di Github.

2) Klik pada 'Cabang' di menu sebelah kiri.

3) Klik 'Tambah aturan'

4) Masukkan 'master' untuk pola cabang.

5) Centang 'Memerlukan tinjauan permintaan tarik sebelum bergabung'

Saya juga merekomendasikan melakukan hal yang sama untuk cabang dev Anda.

Qamar Stationwala
sumber