Lihat juga:
Bagaimana saya bisa melihat cabang Git mana yang melacak cabang jarak jauh / hulu?
Bagaimana saya bisa mengetahui cabang jarak jauh mana yang dilacak oleh cabang lokal?
Apakah saya perlu mengurai git config
output, atau apakah ada perintah yang akan melakukan ini untuk saya?
git
branch
git-remote
Hanya baca
sumber
sumber
git remote show origin
. Jawaban utama dalam pertanyaan lain adalah skrip bash melilit jawaban sederhana di sini, yang mungkin berguna bagi sebagian orang. Semoga pertanyaan ini tidak akan sepenuhnya tertutup.Jawaban:
Sini adalah perintah yang memberi Anda semua cabang pelacakan (dikonfigurasi untuk 'tarikan'), lihat:
Anda harus mengarungi SHA dan semua pesan komit yang sudah lama, tetapi cepat untuk mengetik dan saya mendapatkan cabang pelacakan disejajarkan secara vertikal di kolom ke-3.
Jika Anda memerlukan info tentang konfigurasi 'tarikan' dan 'dorong' per cabang, lihat jawaban lainnya di
git remote show origin
.Memperbarui
Mulai di git versi 1.8.5 Anda dapat menunjukkan cabang upstream dengan
git status
dangit status -sb
sumber
git branch -av
ataugit remote show origin
, yang memberi Anda BANYAK data, bukan hanya remote yang dilacakgit status
dangit status -sb
- jadi setelah Anda memutakhirkan ke 1.8.5.x, pertanyaan ini (dan jawaban) tidak relevan.Dua pilihan:
atau
sumber
%(refname:short)
adalah nama ref saat ini di dalam--format
.git help revisions
(salah satu bagian dokumen yang sedikit diketahui tetapi paling berguna) dan mencariupstream
.git diff `git rev-parse --abbrev-ref --symbolic-full-name @{upstream}`
echo 'git for-each-ref --format=\'%(refname:short) -> %(upstream:short)\' refs/heads/$1' > ~/bin/git-show-upstream; chmod +x ~/bin/git-show-upstream
git for-each-ref --format='%(upstream:short)' $(git rev-parse --symbolic-full-name SOMEBRANCH)
mengganti SOMEBRANCH dengan nama cabang, atau "HEAD" untuk cabang saat iniSaya pikir
git branch -av
hanya memberi tahu Anda cabang apa yang Anda miliki dan komit mana yang berada, membuat Anda dapat menyimpulkan cabang mana yang dilacak oleh cabang lokal.git remote show origin
secara eksplisit memberi tahu Anda cabang mana yang melacak cabang jarak jauh mana. Berikut ini contoh keluaran dari repositori dengan komit tunggal dan cabang jarak jauh yang disebutabranch
:melawan
sumber
git remote show origin
menunjukkan kepada Anda cabang lokal dan apa yang mereka lacak untuk push dan pull.origin
, sementara itu sebenarnya bisa berupa apa saja (misalnya beberapa remote, dengan cabang yang berbeda melacak cabang dari remote yang berbeda).Pembaruan: Yah, sudah beberapa tahun sejak saya memposting ini! Untuk tujuan spesifik saya membandingkan HEAD dengan hulu, saya sekarang menggunakan
@{u}
, yang merupakan jalan pintas yang merujuk pada KEPALA dari cabang pelacakan hulu. (Lihat https://git-scm.com/docs/gitrevisions#gitrevisions-emltbranchnamegtupstreamemegemmasterupstreamememuem ).Jawaban asli: Saya juga mengalami masalah ini. Saya sering menggunakan beberapa remote di repositori tunggal, dan mudah untuk melupakan yang mana dilacak oleh cabang Anda saat ini. Dan kadang-kadang berguna untuk mengetahui hal itu, seperti ketika Anda ingin melihat komitmen lokal Anda via
git log remotename/branchname..HEAD
.Semua hal ini disimpan dalam variabel git config, tetapi Anda tidak perlu menguraikan output git config. Jika Anda menjalankan git config diikuti dengan nama variabel, itu hanya akan mencetak nilai variabel itu, tidak perlu parsing. Dengan mengingat hal itu, berikut adalah beberapa perintah untuk mendapatkan info tentang pengaturan pelacakan cabang Anda saat ini:
Dalam kasus saya, karena saya hanya tertarik untuk mencari tahu nama remote saya saat ini, saya melakukan ini:
sumber
git name-rev --name-only HEAD
tidak akan memberi tahu Anda di mana Anda berada. Untuk itu saya baru saja menggunakangit branch | grep '^\*' | cut -d' ' -f2
@{u}
alias / pintasan dan itulah yang saya cari! Tidak ada alasan untuk membandingkan dengan cabang utama jika Anda hanya ingin menentukan apakah Anda perlu menarik atau tidak.@{u}
adalah bomnya. Dan sudah ada sejak 1.7.0, yang berarti bahwa jika tidak tersedia di git yang digunakan seseorang pada tahun 2018, mereka mungkin akan melakukan upgrade.Cabang-cabang lokal dan remote mereka.
Semua cabang dan pelacak jarak jauh.
Lihat di mana cabang lokal dikonfigurasikan secara eksplisit untuk mendorong dan menarik.
sumber
Ini akan menunjukkan kepada Anda cabang tempat Anda berada:
Ini hanya akan menampilkan cabang Anda saat ini:
sebagai contoh:
Anda dapat mengetahui URL remote yang digunakan oleh cabang saat ini Anda gunakan untuk:
sebagai contoh:
sumber
Anda dapat menggunakan
git checkout
, yaitu "periksa cabang saat ini". Ini adalah no-op dengan efek samping untuk menampilkan informasi pelacakan, jika ada, untuk cabang saat ini.sumber
Saya tidak tahu apakah ini dianggap parsing output dari git config, tetapi ini akan menentukan URL dari remote yang dilacak oleh master:
sumber
git config branch.$(git symbolic-ref -q HEAD).remote
jika Anda hanya ingin nama remote dilacak dari cabang saat ini—git config remote.$(git config branch.$(git symbolic-ref -q HEAD).remote).url
untuk URL.--short
opsi agar berfungsi. Jadi untuk mendapatkan nama jauh dari cabang saat ini:git config branch.$(git symbolic-ref -q --short HEAD).remote
dan untuk mendapatkan URL dari jarak jauh dari cabang saat ini:git config remote.$(git config branch.$(git symbolic-ref -q --short HEAD).remote).url
Namun cara lain
Ini akan memberimu
sumber
Cara sederhana lainnya adalah menggunakan
cat .git/config
dalam repo gitIni akan mencantumkan detail untuk cabang lokal
sumber
type .git/config
alih-alihcat .git/config
pada baris perintah biasa ..Metode lain (terima kasih osse), jika Anda hanya ingin tahu ada atau tidaknya:
sumber
git branch -vv | grep 'BRANCH_NAME'
git branch -vv
: Bagian ini akan menampilkan semua cabang lokal bersama dengan cabang hulu mereka.grep 'BRANCH_NAME'
: Ini akan menyaring cabang saat ini dari daftar cabang.sumber
akan mendaftar semua cabang termasuk jarak jauh.
sumber
Daftar cabang lokal dan jauh:
Keluaran:
sumber
git-status porcelain (dapat dibaca mesin) v2 terlihat seperti ini:
Dan untuk mendapatkan cabang di hulu saja:
Jika cabang tidak memiliki upstream, perintah di atas akan menghasilkan output kosong (atau gagal dengan
set -o pipefail
).sumber
Jika Anda ingin menemukan hulu untuk cabang apa pun (bukan hanya cabang yang Anda gunakan), berikut adalah sedikit modifikasi pada jawaban @ cdunn2001:
git rev-parse --abbrev-ref --symbolic-full-name YOUR_LOCAL_BRANCH_NAME@{upstream}
Itu akan memberi Anda nama cabang jarak jauh untuk cabang lokal bernama
YOUR_LOCAL_BRANCH_NAME
.sumber
Anda dapat mencoba ini:
branch_name
perlu diganti dengan cabang Andasumber
git remote show origin
- jika itu disebutmerges
atauconfigure
?Saya menggunakan alias ini
kemudian
perhatikan bahwa skrip juga dapat digunakan untuk mengatur pelacakan.
Lebih banyak alias hebat di https://github.com/orefalo/bash-profiles
sumber
Saya menggunakan EasyGit (alias "eg") sebagai pembungkus super ringan di atas (atau di sepanjang sisi) Git. EasyGit memiliki sub-perintah "info" yang memberi Anda semua jenis informasi super berguna, termasuk cabang pelacakan cabang jarak jauh saat ini. Berikut ini contoh (di mana nama cabang saat ini adalah "foo"):
sumber
Memperbaiki jawaban ini , saya datang dengan
.gitconfig
alias ini :sumber
Jika Anda menggunakan Gradle,
sumber
Perintah berikut akan merujuk garpu asal saat ini merujuk
Untuk menambahkan jalur jauh,
sumber