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:
LOCAL_BRANCH=`git name-rev --name-only HEAD`
TRACKING_BRANCH=`git config branch.$LOCAL_BRANCH.merge`
TRACKING_REMOTE=`git config branch.$LOCAL_BRANCH.remote`
REMOTE_URL=`git config remote.$TRACKING_REMOTE.url`
Dalam kasus saya, karena saya hanya tertarik untuk mencari tahu nama remote saya saat ini, saya melakukan ini:
git config branch.`git name-rev --name-only HEAD`.remote
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.