Bagaimana seharusnya saya menggunakan google git's .. syntax?

1

Saya ingin melihat dokumentasi untuk ..sintaks Git yang digunakan, misalnya, dalam perintah seperti git log master..itu mencantumkan komit di cabang saya dan bukan di master. Saya ingin tahu bagaimana mereka mengatakan dokumentasi sehingga saya dapat menjelaskannya secara akurat dan ringkas kepada kolega.

Inilah pencarian yang telah saya coba

Hasilnya semua sangat buruk. Apakah ada cara yang lebih baik untuk mencari dokumentasi tentang penggunaan sintaks tanda baca khusus bahasa seperti Git ..?

dumbledad
sumber
3
Coba di symbolhound.com
Jonno
@Jonno Sayangnya mencari simbolhound untuk "git .." tidak benar-benar menghasilkan hasil yang bermanfaat. Googling untuk "git dot" lebih bermanfaat. Googling "git double dot" bahkan lebih baik;)
DavidPostill

Jawaban:

2

Saya ingin melihat dokumentasi untuk ..sintaks Git

yang digunakan, misalnya, dalam perintah seperti git log master..

Mereka disebut Spesifikasi Double Dot .. dan Triple Dot ... Range.

Anda juga melihat mereka disebut sebagai Range Syntax atau Dot Syntax .

Mencari di http://www.google.com untuk istilah-istilah ini akan memberikan hasil yang bermanfaat.


Ringkasan Pendek

git log A..B (dua titik)

Meskipun sintaks ini terlihat seperti "rentang" komit dari A ke B, sebenarnya merupakan kependekan dari git log ^A B:

  • perlihatkan semua komitmen yang dapat dicapai dari B; B sendiri sudah termasuk
  • tidak termasuk yang dapat dijangkau dari A; A sendiri dikecualikan

Jadi, berikan riwayat berikut (dengan komit tertua di sebelah kiri, yang terbaru di sebelah kanan):

*--*--*--A--*--*--*--B

git log A..B akan menunjukkan semua komitmen di sebelah kanan A.

Catatan yang git log A..setara dengan git log A..HEAD.

git log A ... B (tiga titik)

Halaman manual git-rev-list menggambarkan ini sebagai notasi khusus untuk "perbedaan simetris".

Ini setara dengan git log A B --not $(git merge-base --all A B).

Dalam bahasa Inggris yang sederhana, ini berarti "semua komitmen yang dapat dicapai dari A atau B tetapi tidak dari keduanya.

Source Git "range" atau "dot" syntax


Ringkasan terperinci

Dot ganda

Spesifikasi rentang paling umum adalah sintaks double-dot. Ini pada dasarnya meminta Git untuk menyelesaikan serangkaian komitmen yang dapat dijangkau dari satu komit tetapi tidak dapat dijangkau dari yang lain. Misalnya, Anda memiliki riwayat komit yang terlihat seperti:

masukkan deskripsi gambar di sini

Anda ingin melihat apa yang ada di cabang percobaan Anda yang belum digabungkan ke cabang master Anda. Anda dapat meminta Git untuk menunjukkan kepada Anda log yang berisi komitmen yang dilakukan dengan master..experiment - itu berarti “semua berkomitmen dapat dicapai dengan eksperimen yang tidak dapat dijangkau oleh master.” Demi keringkasan dan kejelasan dalam contoh ini, saya akan gunakan huruf-huruf dari objek komit dari diagram menggantikan output log aktual dalam urutan yang akan ditampilkan:

$ git log master..experiment
D
C

Jika, di sisi lain, Anda ingin melihat yang sebaliknya - semua komit di master yang tidak dalam percobaan - Anda bisa membalikkan nama cabang. Eksperimen..master menunjukkan semua yang master tidak dapat dicapai dari eksperimen:

$ git log experiment..master
F
E

Ini berguna jika Anda ingin menjaga agar cabang percobaan tetap mutakhir dan melihat dulu apa yang akan Anda gabungkan. Penggunaan sintaks ini yang sering dilakukan adalah untuk melihat apa yang akan Anda push ke remote:

$ git log origin/master..HEAD

Perintah ini menunjukkan kepada Anda komit apa pun di cabang Anda saat ini yang tidak ada di cabang master pada remote asal Anda. Jika Anda menjalankan git push dan cabang Anda saat ini melacak origin / master, komit yang didaftar oleh git log origin / master..HEAD adalah komit yang akan ditransfer ke server. Anda juga dapat meninggalkan satu sisi sintaks untuk meminta Git menganggap HEAD. Misalnya, Anda bisa mendapatkan hasil yang sama seperti pada contoh sebelumnya dengan mengetikkan git log origin / master .. - Git mengganti HEAD jika satu sisi tidak ada.

Banyak Poin

Sintaks double-point berguna sebagai singkatan; tetapi mungkin Anda ingin menentukan lebih dari dua cabang untuk menunjukkan revisi Anda, seperti melihat komit di salah satu dari beberapa cabang yang tidak ada di cabang saat ini. Git memungkinkan Anda melakukan ini dengan menggunakan karakter ^ atau - bukan sebelum referensi apa pun yang Anda tidak ingin lihat komit yang dapat dijangkau. Jadi tiga perintah ini setara:

$ git log refA..refB
$ git log ^refA refB
$ git log refB --not refA

Ini bagus karena dengan sintaks ini Anda dapat menentukan lebih dari dua referensi dalam kueri Anda, yang tidak dapat Anda lakukan dengan sintaks double-dot. Misalnya, jika Anda ingin melihat semua komit yang dapat dijangkau dari refA atau refB tetapi tidak dari refC, Anda dapat mengetikkan salah satu dari ini:

$ git log refA refB ^refC
$ git log refA refB --not refC

Ini membuat sistem kueri revisi yang sangat kuat yang akan membantu Anda mengetahui apa yang ada di cabang Anda.

Triple Dot

Sintaks pemilihan rentang utama terakhir adalah sintaks triple-dot, yang menentukan semua komit yang dapat dijangkau oleh salah satu dari dua referensi tetapi tidak oleh keduanya. Lihat kembali contoh commit commit di:

masukkan deskripsi gambar di sini

Jika Anda ingin melihat apa yang ada di master atau percobaan tetapi tidak ada referensi umum, Anda dapat menjalankannya

$ git log master...experiment
F
E
D
C

Sekali lagi, ini memberi Anda output log normal tetapi hanya menampilkan informasi komit untuk keempat komit tersebut, muncul dalam pemesanan tanggal komit tradisional.

Peralihan umum untuk digunakan dengan perintah log dalam kasus ini adalah - kiri-kanan, yang menunjukkan Anda di sisi mana setiap komit berada. Ini membantu membuat data lebih berguna:

$ git log --left-right master...experiment
< F
< E
> D
> C

Dengan alat-alat ini, Anda dapat dengan lebih mudah memberi tahu Git tentang komitmen atau komitmen yang ingin Anda periksa.

Source Git Tools - Pilihan Revisi

DavidPostill
sumber
Terima kasih - saya kira bagian yang sulit menjadi bagaimana menggunakan Google untuk mencari tahu apa sebutan mereka (untuk menggunakan nama itu di Google untuk mengetahui bagaimana mereka digunakan).
dumbledad