Peta dunia

 

EN: Read in English

Dunia 10: Git Mendalam

Sintaks revision

Anda akan belajar: cara namakan mana-mana commit, atau sekumpulan commit, tanpa salin id.

Teks BM belum disemak oleh penutur asli.

Masalahnya

Graf: main ada tujuh commit, dengan branch menu yang dah di-merge. Branch prices ada satu commit tambahan. Output terminal: $ git log --oneline --graph --all * c804c3f (HEAD -> main) Add about page | * 9cd9e6c (prices) Add a price |/ * ab7c243 Link the menu * ec4a356 Merge menu |\ | * bdfdf02 (menu) Add onde-onde | * 4a73658 Add menu page * | ce13150 Say we open daily |/ * dd18cc9 Add shop page

Anda perlukan commit (titik simpan) dua langkah ke belakang. Salin id yang panjang memang memenatkan. Ada cara lebih pendek?

Tengok

HEAD lompat dua commit ke belakang di sepanjang main, ke Merge menu.
dd18cc94a73658bdfdf02ce13150ec4a356ab7c2439cd9e6cc804c3f

revision: Apa-apa cara untuk namakan commit: id, branch, HEAD~2, v1.0 dan lain-lain. ialah apa-apa cara untuk namakan commit. HEAD~2 maksudnya dua langkah ke belakang dari HEAD. Setiap langkah ikut parent pertama.

Cuba

Kira langkah ke belakang di sepanjang main.

Ketik commit yang dinamakan oleh HEAD~3.

dd18cc94a73658bdfdf02ce13150ec4a356ab7c2439cd9e6cc804c3f

Teka

HEAD~2 ialah merge, jadi ia ada dua parent. ^2 pilih yang kedua. Commit mana ialah HEAD~2^2?

Pilih satu jawapan.

Cuba

Lawati “Add menu page” dengan git switch --detach. Namakan ia dari HEAD, guna ~ dan ^.

dd18cc94a73658bdfdf02ce13150ec4a356ab7c2439cd9e6cc804c3f

Tengok

main..prices senaraikan Add a price. prices..main senaraikan Add about page. Output terminal: $ git log --oneline main..prices 9cd9e6c (prices) Add a price $ git log --oneline prices..main c804c3f (HEAD -> main) Add about page

A..B (dua titik) senaraikan commit dalam B yang tiada dalam A. Tukar sisinya, dan anda nampak kerja tambahan sisi lain.

Cuba

A...B (tiga titik) senaraikan commit di mana-mana sisi, tapi bukan kedua-duanya. --left-right tandakan sisi: < untuk A, > untuk B.

Ketik commit yang hanya ada dalam prices.

~/shop $ git log --oneline --left-right main...prices

0 daripada 1 dijumpai

Semak

Sebelum merge, anda semak apa yang prices akan bawa masuk ke main. Arahan mana?

Pilih satu jawapan.

Anda berjaya!

Kini anda boleh namakan mana-mana commit tanpa salin idnya.

Nak tahu lebih (pilihan)

HEAD^ sama dengan HEAD~1. HEAD@{1} ialah tempat HEAD berada satu langkah tadi, daripada reflog. v1.0^{} ialah commit yang tag tunjuk. git rev-parse tukar mana-mana revision kepada id penuh. git diff main...prices tunjuk apa yang prices ubah sejak ia berpecah.

rev-parse cetak id pendek Add onde-onde. git diff main...prices tunjuk satu baris dalam menu.html dapat RM1. Output terminal: $ git rev-parse --short HEAD~2^2 bdfdf02 $ git diff main...prices diff --git a/menu.html b/menu.html index d80e4d9..b83048a 100644 --- a/menu.html +++ b/menu.html @@ -1,3 +1,3 @@ <h1>Menu</h1> -<p>Kuih lapis</p> +<p>Kuih lapis RM1</p> <p>Onde-onde</p>