Saya sudah mencoba git branch -r
, tetapi hanya mencantumkan cabang jarak jauh yang telah saya lacak secara lokal. Bagaimana cara menemukan daftar yang belum saya miliki? (Tidak masalah bagi saya apakah perintah tersebut mencantumkan semua cabang jarak jauh atau hanya cabang yang tidak dilacak.)
remote show
menunjukkan semua cabang pada remote, termasuk yang tidak dilacak secara lokal dan bahkan yang belum diambil.
git remote show <remote-name>
Itu juga mencoba untuk menunjukkan status cabang relatif terhadap repo lokal Anda:
> git remote show Origin
* remote Origin
Fetch URL: C:/git/.\remote_repo.git
Push URL: C:/git/.\remote_repo.git
HEAD branch: master
Remote branches:
branch_that_is_not_even_fetched new (next fetch will store in remotes/Origin)
branch_that_is_not_tracked tracked
branch_that_is_tracked tracked
master tracked
Local branches configured for 'git pull':
branch_that_is_tracked merges with remote branch_that_is_tracked
master merges with remote master
Local refs configured for 'git Push':
branch_that_is_tracked pushes to branch_that_is_tracked (fast-forwardable)
master pushes to master (up to date)
git branch -a | grep remotes/*
Menggunakan git branch -r
mencantumkan semua cabang jarak jauh dan git branch -a
mencantumkan semua cabang di lokal dan jarak jauh. Daftar ini sudah usang. Agar daftar ini tetap terbaru, jalankan
git remote update --Prune
yang akan memperbarui daftar cabang lokal Anda dengan semua yang baru dari jarak jauh dan menghapus yang sudah tidak ada lagi. Menjalankan perintah pembaruan ini tanpa --Prune akan mengambil cabang baru tetapi tidak menghapus yang tidak lagi pada remote.
Anda dapat mempercepat pembaruan ini dengan menentukan remote, jika tidak maka akan menarik pembaruan dari semua remote yang telah Anda tambahkan, seperti itu
git remote update --Prune Origin
Tapi
git branch -ar
harus melakukannya.
Anda juga dapat melakukan git fetch
diikuti oleh git branch -r
. Tanpa mengambil Anda tidak akan melihat cabang-cabang terbaru.
Cara paling sederhana yang saya temukan:
git branch -a
TL; TR;
Ini adalah solusi dari masalah Anda:
git remote update --Prune # To update all remotes
git branch -r # To display remote branches
atau:
git remote update --Prune # To update all remotes
git branch <TAB> # To display all branches
Perintah terbaik untuk menjalankan adalah git remote show [remote]
. Ini akan menampilkan semua cabang, jarak jauh dan lokal, dilacak dan tidak terlacak.
Berikut ini contoh dari proyek sumber terbuka:
> git remote show Origin
* remote Origin
Fetch URL: https://github.com/OneBusAway/onebusaway-Android
Push URL: https://github.com/OneBusAway/onebusaway-Android
HEAD branch: master
Remote branches:
Amazon-rc2 new (next fetch will store in remotes/Origin)
Amazon-rc3 new (next fetch will store in remotes/Origin)
arrivalStyleBDefault new (next fetch will store in remotes/Origin)
develop tracked
master tracked
refs/remotes/Origin/branding stale (use 'git remote Prune' to remove)
Local branches configured for 'git pull':
develop merges with remote develop
master merges with remote master
Local refs configured for 'git Push':
develop pushes to develop (local out of date)
master pushes to master (up to date)
Jika kita hanya ingin mendapatkan cabang jarak jauh, kita bisa menggunakan grep
. Perintah yang ingin kita gunakan adalah:
grep "\w*\s*(new|tracked)" -E
Dengan perintah ini:
> git remote show Origin | grep "\w*\s*(new|tracked)" -E
Amazon-rc2 new (next fetch will store in remotes/Origin)
Amazon-rc3 new (next fetch will store in remotes/Origin)
arrivalStyleBDefault new (next fetch will store in remotes/Origin)
develop tracked
master tracked
Anda juga dapat membuat alias untuk ini:
git config --global alias.branches "!git remote show Origin | grep \w*\s*(new|tracked) -E"
Kemudian Anda bisa menjalankan git branches
.
Dengan GitBash, Anda dapat menggunakan:
cabang git -a
Pastikan bahwa Asal remote yang Anda daftarkan benar-benar repositori yang Anda inginkan dan bukan tiruan yang lebih lama.
Menggunakan Perintah ini,
git log -r --oneline --no-merges --simplify-by-decoration --pretty=format:"%n %Cred CommitID %Creset: %h %n %Cred Remote Branch %Creset :%d %n %Cred Commit Message %Creset: %s %n"
CommitID : 27385d919
Remote Branch : (Origin/ALPHA)
Commit Message : New branch created
Daftar semua cabang jarak jauh termasuk komit pesan, komit ID yang disebut oleh cabang jauh.
coba ini....
git fetch Origin
git branch -a
Saya akhirnya melakukan pipa Shell berantakan untuk mendapatkan apa yang saya inginkan, baru saja menggabungkan cabang dari Origin asal:
git branch -r --all --merged \
| tail -n +2 \
| grep -P '^ remotes/Origin/(?!HEAD)' \
| Perl -p -e 's/^ remotes\/Origin\///g;s/master\n//g'
Saya akan menggunakan:
git branch -av
Perintah ini tidak hanya menampilkan daftar semua cabang, termasuk cabang jarak jauh yang dimulai dengan /remote
tetapi juga memberi Anda umpan balik *
tentang apa yang Anda perbarui dan komit terakhir.