Seperti disebutkan dalam Yoshua Wuyts ' jawabannya , menggunakan git branch
:
git branch --unset-upstream
Pilihan lain:
Anda tidak harus menghapus cabang lokal Anda.
Hapus saja cabang lokal yang melacak cabang jarak jauh:
git branch -d -r origin/<remote branch name>
-r, --remotes
memberitahu git untuk menghapus cabang pelacak jarak jauh (yaitu, hapus set cabang untuk melacak cabang jarak jauh). Ini tidak akan menghapus cabang pada repo jarak jauh !
Lihat " Mengalami kesulitan memahami git-fetch "
tidak ada konsep cabang pelacakan lokal, hanya cabang pelacakan jarak jauh.
Begitu origin/master
juga cabang pelacakan jarak jauh untuk master
di origin
repo
Seperti disebutkan dalam Dobermann Vandermeer 's jawaban , Anda juga harus mengatur ulang konfigurasi yang berhubungan dengan lokal cabang:
git config --unset branch.<branch>.remote
git config --unset branch.<branch>.merge
Hapus informasi hulu untuk <branchname>
.
Jika tidak ada cabang yang ditentukan, default ke cabang saat ini.
(git 1.8+, Oktober 2012, commit b84869e oleh Carlos Martín Nieto ( carlosmn
) )
Itu akan membuat push / pull sama sekali tidak disadari origin/<remote branch name>
.
remote.<name>.fetch
konfigurasi refspec, tetapi saya tidak yakin apakah Anda dapat mengecualikan cabang saat menentukan refspec.git branch -d -r origin/<remote branch name>
akan menghapus cabang pelacakan jarak jauh seperti yang dinyatakan secara lokal , di repo Anda. Itu tidak akan menghapus cabang pada repo jarak jauh itu sendiri (hanyagit push :development
akan melakukan itu). Jadi, ketika Anda mendorong lokal Andadevelopment
, dengan sejarah yang berbeda dari cabang pengembangan jarak jauh (pada repo jarak jauh), Anda masih akan mendapatkannon-fast-forward
peringatan.Untuk menghapus upstream untuk cabang saat ini lakukan:
Ini tersedia untuk Git v.1.8.0 atau lebih baru. (Sumber: 1.7.9 ref , 1.8.0 ref )
sumber
sumber
git branch --unset-upstream [branchname]
fatal: 'origin/master' does not appear to be a git repository fatal: Could not read from remote repository.
setelah melakukan ini dan mencoba asal git tarik / masterUntuk menghapus hubungan antara menjalankan cabang lokal dan jauh:
Hapus cabang lokal secara opsional setelah itu jika Anda tidak membutuhkannya:
Ini tidak akan menghapus cabang jarak jauh.
sumber
git branch -d <branch>
yang tidak diperlukan untuk menghapus asosiasi.git branch -vv
Anda masih akan melihat cabang lama sampai Anda melakukannyagit branch -d <branch>
.git pull
mungkin ambil semua cabang jarak jauh dan tambahkan kembali yang dianggapnya "muncul" pada jarak jauh. Anda dapat mengubah perilaku "tarik semua cabang" ini dengan melakukangit config [--global] push.default simple
ataugit config [--global] push.default current
. Lebih banyak dipush.default
sini .Cara paling sederhana adalah mengedit
.git/config
Berikut ini contoh file
Hapus baris
merge = refs/heads/test1
di bagiantest1
cabangsumber
.git/config
juga tersedia.Anda dapat menghapus cabang pelacakan jarak jauh menggunakan
seperti yang disebutkan VonC di atas. Namun, jika Anda menyimpan salinan lokal cabang Anda,
git push
masih akan mencoba mendorong cabang itu (yang bisa memberi Anda kesalahan tidak-maju-cepat seperti halnya untuk ruffin ). Ini karena konfigurasipush.default
defaultmatching
berarti:(lihat http://git-scm.com/docs/git-config di bawah
push.default
)Melihat ini mungkin bukan yang Anda inginkan ketika Anda menghapus cabang pelacakan jarak jauh, Anda dapat mengatur
push.default
keupstream
(atautracking
jika Anda memiliki git <1.7.4.3)menggunakan
dan git akan berhenti berusaha mendorong cabang yang telah Anda "hentikan pelacakannya."
Catatan: Solusi yang lebih sederhana adalah dengan hanya mengubah nama cabang lokal Anda menjadi sesuatu yang lain. Itu juga akan menghilangkan beberapa potensi kebingungan.
sumber
Berikut adalah satu-liner untuk menghapus semua cabang pelacakan jarak jauh yang cocok dengan pola:
git branch -rd $(git branch -a | grep '{pattern}' | cut -d'/' -f2-10 | xargs)
sumber
git branch -r -D $(git branch -r | grep -v "master")
Ini bukan jawaban untuk pertanyaan itu, tapi saya tidak tahu bagaimana mendapatkan pemformatan kode yang layak dalam komentar di atas ... jadi otomatis-turun-reputasi-terkutuk di sini adalah komentar saya.
Saya punya resep yang dikirimkan oleh @Dobes dalam entri mewah alias mewah di .gitconfig saya:
Maka saya bisa lari
sumber
git branch --unset-upstream
berhenti melacak semua cabang lokal, yang tidak diinginkan.Hapus
[branch "branch-name"]
bagian dari.git/config
file yang diikuti olehgit branch -D 'branch-name' && git branch -D -r 'origin/branch-name'
bekerja yang terbaik untukku.
sumber
Anda dapat menggunakan cara ini untuk menghapus cabang jarak jauh Anda
sumber
Cara termudah untuk melakukannya adalah dengan menghapus cabang dari jarak jauh dan kemudian menggunakan:
git fetch --prune (alias git fetch -p)
sumber