Linux中國

Git 練習:存儲庫導航

我覺得前幾天的 curl 練習進展順利,所以今天我醒來後,想嘗試編寫一些 Git 練習。Git 是一大塊需要學習的技能,可能要花幾個小時才能學會,所以我分解練習的第一個思路是從「導航」一個存儲庫開始的。

我本來打算使用一個玩具測試庫,但後來我想,為什麼不使用真正的存儲庫呢?這樣更有趣!因此,我們將瀏覽 Ruby 編程語言的存儲庫。你無需了解任何 C 即可完成此練習,只需熟悉一下存儲庫中的文件隨時間變化的方式即可。

克隆存儲庫

開始之前,需要克隆存儲庫:

git clone https://github.com/ruby/ruby

與實際使用的大多數存儲庫相比,該存儲庫的最大不同之處在於它沒有分支,但是它有很多標籤,它們與分支相似,因為它們都只是指向一個提交的指針而已。因此,我們將使用標籤而不是分支進行練習。改變標籤的方式和分支非常不同,但查看標籤和分支的方式完全相同。

Git SHA 總是引用同一個代碼

執行這些練習時要記住的最重要的一點是,如本頁面所述,像9e3d9a2a009d2a0281802a84e1c5cc1c887edc71 這樣的 Git SHA 始終引用同一個的代碼。下圖摘自我與凱蒂·西勒·米勒撰寫的一本雜誌,名為《Oh shit, git!》。(她還有一個名為 https://ohshitgit.com/ 的很棒的網站,啟發了該雜誌。)

我們將在練習中大量使用 Git SHA,以使你習慣於使用它們,並幫助你了解它們與標籤和分支的對應關係。

我們將要使用的 Git 子命令

所有這些練習僅使用這 5 個 Git 子命令:

git checkout
git log (--oneline, --author, and -S will be useful)
git diff (--stat will be useful)
git show
git status

練習

  1. 查看 matz 從 1998 年開始的 Ruby 提交。提交 ID 為 3db12e8b236ac8f88db8eb4690d10e4a3b8dbcd4。找出當時 Ruby 的代碼行數。
  2. 檢出當前的 master 分支。
  3. 查看文件 hash.c 的歷史記錄。更改該文件的最後一個提交 ID 是什麼?
  4. 了解最近 20 年來 hash.c 的變化:將 master 分支上的文件與提交 3db12e8b236ac8f88db8eb4690d10e4a3b8dbcd4 的文件進行比較。
  5. 查找最近更改了 hash.c 的提交,並查看該提交的差異。
  6. 對於每個 Ruby 版本,該存儲庫都有一堆標籤。獲取所有標籤的列表。
  7. 找出在標籤 v1_8_6_187 和標籤 v1_8_6_188 之間更改了多少文件。
  8. 查找 2015 年的提交(任何一個提交)並將其檢出,簡單地查看一下文件,然後返回 master 分支。
  9. 找出標籤 v1_8_6_187 對應的提交。
  10. 列出目錄 .git/refs/tags。運行 cat .git/refs/tags/v1_8_6_187 來查看其中一個文件的內容。
  11. 找出當前 HEAD 對應的提交 ID。
  12. 找出已經對 test/ 目錄進行了多少次提交。
  13. 提交 65a5162550f58047974793cdc8067a970b2435c09e3d9a2a009d2a0281802a84e1c5cc1c887edc71 之間的 lib/telnet.rb 的差異。該文件更改了幾行?
  14. 在 Ruby 2.5.1 和 2.5.2 之間進行了多少次提交(標記為 v2_5_1v2_5_3)(這一步有點棘手,步驟不只一步)
  15. 「matz」(Ruby 的創建者)作了多少提交?
  16. 最近包含 「tkutil」 一詞的提交是什麼?
  17. 檢出提交 e51dca2596db9567bd4d698b18b4d300575d3881 並創建一個指向該提交的新分支。
  18. 運行 git reflog 以查看你到目前為止完成的所有存儲庫導航操作。 ——————————————————————————–

via: https://jvns.ca/blog/2019/08/30/git-exercises–navigate-a-repository/

作者:Julia Evans 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...