Saya telah membuat cabang untuk pengujian di repo lokal saya ( test-branch
) yang saya dorong Github
.
Jika saya pergi ke Github
akun saya dan pilih ini test-branch
itu menunjukkan info:
This branch is 1 commit ahead and 2 commits behind master
Pertanyaan saya adalah:
- Bagaimana saya bisa menampilkan info ini secara lokal (yaitu: perintah yang menunjukkan ini di terminal, daripada harus terbuka
Github
untuk melihatnya)? Saya tahu saya bisa melihat perbedaan antar cabang menggunakan:
git diff master..test-branch
atau menggunakan
Meld
(yang saya suka):git difftool master..test-branch
tapi saya bertanya-tanya apakah ada cara untuk melihat bagian depan dan belakang melakukan secara terpisah. IE: adakah cara untuk menunjukkan bahwa saya berkomitmen untuk maju dengan sendirinya dan kemudian kedua komitmen tersebut melakukannya sendiri?
git for-each-ref --format="%(push:track)" refs/heads
. Lihat jawaban saya di bawah iniJawaban:
Berikut adalah trik yang saya temukan untuk membandingkan dua cabang dan menunjukkan berapa banyak yang dilakukan setiap cabang di depan yang lain (jawaban yang lebih umum pada pertanyaan Anda 1):
Untuk cabang lokal :
git rev-list --left-right --count master...test-branch
Untuk jarak jauh cabang :
git rev-list --left-right --count origin/master...origin/test-branch
Ini menghasilkan output seperti berikut:
1 7
Output ini berarti: "Dibandingkan dengan
master
,test-branch
ada 7 komitmen di depan dan 1 komit di belakang."Anda juga dapat membandingkan cabang lokal dengan cabang jarak jauh, mis.
origin/master...master
Untuk mengetahui berapa banyak komit yang dilakukanmaster
cabang lokal di depan / di belakang rekan jauhnya.sumber
git rev-list --left-right --count origin/master...@
) - asalkan pengguna melakukannyagit fetch
sebelumnya; berguna untuk mencegah penarikan permintaan dari cabang yang sudah ketinggalan zaman.git rev-list --left-right --count origin/master...@ | cut -f1
--left-only
atau--right-only
Pertama-tama untuk melihat berapa banyak revisi di belakang Anda secara lokal, Anda harus melakukan a
git fetch
untuk memastikan Anda memiliki info terbaru dari remote Anda.Output default
git status
memberitahu Anda berapa banyak revisi Anda di depan atau di belakang, tetapi biasanya saya menemukan ini terlalu bertele-tele:Saya lebih suka
git status -sb
:Sebenarnya saya alias ini secara sederhana
git s
, dan ini adalah perintah utama yang saya gunakan untuk memeriksa status.Untuk melihat perbedaan dalam "revisi depan"
master
, saya dapat mengecualikan "di belakang revisi" dariorigin/master
:Untuk melihat perbedaan dalam "revisi belakang" dari
origin/master
, saya dapat mengecualikan "revisi depan" darimaster
:Jika ada 5 revisi di depan atau di belakang mungkin lebih mudah untuk menulis seperti ini:
MEMPERBARUI
Untuk melihat revisi di depan / belakang, cabang harus dikonfigurasi untuk melacak cabang lain. Bagi saya ini adalah perilaku default ketika saya mengkloning repositori jarak jauh, dan setelah saya mendorong cabang dengan
git push -u remotename branchname
. Versi saya adalah 1.8.4.3, tetapi sudah berfungsi seperti ini selama saya ingat.Pada versi 1.8, Anda dapat mengatur cabang pelacakan seperti ini:
Pada versi 1.7, sintaksnya berbeda:
sumber
git
yang Anda gunakan? Saya tidak bisa mereproduksi apa yang Anda dapatkan dengangit status
atau dengangit status -sb
. Jika saya mencoba salah satu perintah (setelah melakukangit fetch
) saya tidak mendapatkan info tentang komit di depan / belakang.master
danorigin/master
dan saya ingin melihatmaster
perbedaan itu untuk dan cabang laintest-branch
. Bisakah Anda memformat ulang jawaban Anda untuk mengatasi masalah ini?Dengan Git 2.5+, Anda sekarang memiliki opsi lain untuk melihat ke depan / belakang untuk semua cabang yang dikonfigurasi untuk mendorong ke cabang.
Lihat lebih lanjut di " Melihat Komit Git yang Tidak Dicabut "
sumber
refs/heads
dengan nama cabang saat ini ( stackoverflow.com/a/12142066/6309 ):refs/heads/$(git rev-parse --abbrev-ref HEAD)
Anda juga dapat menggunakannya
awk
untuk membuatnya sedikit lebih cantik:Anda bahkan dapat membuat alias yang selalu mengambil asal terlebih dahulu lalu membandingkan cabang
sumber
Setelah melakukan git fetch, Anda dapat menjalankan status git untuk menunjukkan berapa banyak komit yang dilakukan cabang lokal di depan atau di belakang versi remote dari cabang.
Ini tidak akan menunjukkan berapa banyak yang melakukan itu di depan atau di belakang cabang yang berbeda. Opsi Anda adalah diff penuh, melihat github, atau menggunakan solusi seperti Vimhsa yang ditautkan di atas: Git status atas semua repo
sumber