你沒聽錯。

Image description

好啦,剛剛那句有點欠揍 lol。不過從標題來看,你大概早就猜到這篇文章要講什麼了。

Git 這東西大家都聽過。不過先別跟 GitHub 搞混了。它們是兩個不同的東西。

我有用過 Git,但不是大多數人那種用法,而是透過 GitHub Desktop。 我從一開始就用 GitHub Desktop,因為它的介面很友善,而且很好上手。

Image description

那問題是什麼? 問題就在於我一直在用 GitHub Desktop。我的履歷上寫了「Git」,但因為我其實是透過 UI 在操作,總覺得怪怪的。

我覺得學習透過 CLI 使用 Git 是個好主意。這樣我就能同時理解 UI 世界和命令列世界!我知道有時候學新東西很難,所以我想最好先向社群請教還有哪些指令值得學,也希望這篇文章能幫助其他新手和老手重新複習一些 Git。

話說回來,如果你是那種做 Git 主要依賴 UI,想學幾個 Git 指令讓自己更上手的人,這裡就是讓你 git gud 的地方!以下是一些適合入門的 Git 指令,對應 GitHub Desktop 的常見操作,也能幫助你開始養成在終端機中使用 Git 的習慣! 這份清單會按照從開始到接近完成任務/專案的順序來排。我也會拿《空洞騎士:絲之歌》來當作視覺化比喻,如果你是視覺型學習者的話。

注意: 這是我在從 GitHub Desktop 轉向學習 Git 指令時的經驗整理。如果有我漏掉的地方,或有需要更新的資訊,歡迎告訴我!
Image description

 


 

1. git init

如果你要開始一個新專案,這就是第一個應該下的指令!就算你已經有一個現成的專案,但還沒有初始化 Git,那也最好先執行這個指令!

可以把它想成在《空洞騎士:絲之歌》裡開始一個新遊戲。開始遊戲之後,你就能使用更多功能,這些我們等一下會講到。

Image description

注意: 如果你是從 GitHub clone 一個已經初始化過 Git 的專案,就不用做這一步。你想做也可以,但那就沒有意義了。
Image description

 


 

2. git clone url

說到現成專案,如果你想把一個已存在的專案抓到自己的電腦上,就是用這個指令!

例如,如果你想 clone Forem(dev.to)的 repository,可以透過網站上的網址來做:

Image description

更具體一點,就是複製 HTTPS 連結:

Image description

接著,在你的 VS Code 終端機裡輸入:

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

可以把這想成你在遊戲裡打開一個既有的存檔。就這麼簡單。

如果你是把別人的檔案抓下來,匯入到自己的電腦,我會把它理解成:預設對方已經把所有東西都裝好了。如果那個檔案是舊的,你就得更新它。套到程式開發的情境,如果他們沒有 Git,就先執行 git init

注意: clone repository 的時候,記得要在一個空資料夾裡操作。

 


 

3. git add filepath

現在你有一個專案,然後像其他開發者一樣,你對專案做了一些修改。

<img src="https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/7fjp96q20vt2c69x9prv.gif" />

在把你的變更送到 GitHub 的 branch 之前,你要先把改過的檔案加入,然後再 commit。

如果你修改了很多檔案,而且想一次全部包含進同一次 commit,你可以這樣做:

git add .

不過,如果你只想把某個特定檔案加入 commit,就要找到那個檔案路徑。舉例來說,如果我改了一個叫做 tests.js 的檔案,而且它放在 app 資料夾裡,那就會是:

git add /app/tests.js

 

額外要知道的指令!

如果你不小心把所有檔案都加入追蹤了,可以用下面的指令把全部還原:

git restore .

如果是特定檔案,照樣需要檔案路徑:

git restore /app/tests.js

Image description

我會把這想成你在玩遊戲時,有時候會裝備護符,我把它當成「已追蹤檔案」,而你的物品欄則像是「未追蹤檔案」。裝備上的東西就是你要實際使用的,而物品欄則是你目前收集/修改過的東西清單。

Image description

 


 

4. git commit -m "Hollow Purple"

Image description

當你根據前面的指令把檔案加入之後,就可以準備 commit 了!我把這想成一個「存檔點」。就像你在繼續玩之前先存檔一樣。

如果之後發生了完全失控的狀況,你可以回到前一個 commit。舉例來說,你有 3 個 commit:

 

A --> B --> C(你現在在這裡)

 

如果你想回到「B」,就要先找到「B」那個 commit 的 hash,然後用下面的方式還原:

# 找出 commit hash
git log

# 還原特定 commit
git revert <commit-hash>

就像在遊戲裡一樣,你可以回到前一個存檔點。

小提示: 一定要把 commit 訊息寫清楚,描述你做了什麼。最好像 git commit -m "修正重新導向的 bug",而不是寫成 git commit -m "更新檔案"

 


 

5. git push origin main

到這時候,你應該已經有不少 commit 和變更了。是時候把它們推送到 GitHub repository 上了!這就是要用的指令!

不過,最佳實務是先把 GitHub 上的變更抓下來,方法如下:

git fetch origin main

有時候,如果 repository 上已經有變更,但你的本機開發環境還不是最新,就可以在 fetch 完之後再執行:

git pull origin main

我會把這理解成遊戲版本更新。如果遊戲不是最新版,你就先「fetch」最新版本,然後把版本更新上去。這樣存檔才會正確。如果你的存檔資料和遊戲目前版本不一致,很可能就會造成衝突;不過這部分我們不展開,因為這篇主要是講基礎。

 


 

6. 建立/切換分支

如果你想建立一個分支:

git branch nameBranch

要切換到那個分支,並在那裡進行開發:

git checkout existingBranch

小提示: 如果你想用一條指令同時建立分支並切換過去,可以使用下面這個指令。感謝 @inayi 的留言提供!

git checkout -b branchName

 


 

7. git status

它主要會顯示給你看的,是哪些檔案已經被追蹤,以及哪些還沒有被追蹤。被追蹤的檔案就是即將被 commit 的檔案。未追蹤的檔案則是已經變更了,但還不是下一次 commit 的一部分。 這個指令能幫助你掌握哪些檔案有改動,以及哪些檔案會被包含進 commit。

 


 

就這樣。它不是完美的,而且我很有可能漏掉一些東西,不過至少這是一個很好的開始,能幫助你慢慢從 GitHub Desktop 轉向學習這些指令。 當然,還有很多我沒提到的功能,例如 git merge 等等,但我想保持簡單。再者,這篇文章是基於我的經驗,以及我常用、也在本文中提到的指令。

如果你想學更多 Git,可以參考官方文件:https://git-scm.com/docs

當然,前提是你想這麼做……

Image description

不然就會被詛咒。

說到 Doom,Doomsday 的新預告片已經上線了,而且根本就是 Doom 的氣場農場 lol。

https://www.youtube.com/watch?v=X1aFkAkFASk


回覆前給讀者的小請求!

如果你還知道其他值得學的指令,歡迎留言,並把這張圖片一起附在你的留言裡!(見下方) 如果你只是剛好路過,我也很想看到 Hornet 說「Git Gud!」的那張圖片 :D

Image description

<center><sub>請把這個加到你的留言裡!</sub></center>

 


 

<center><b>有問題或想留言嗎?很期待聽到你的想法!</b></center>

<center>

<img src="https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/im64jcvto7ehrjyyqfaa.png" />

</center>


原文出處:https://dev.to/francistrdev/git-gud-4e6g


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝9   💬4   ❤️2
259
🥈
我愛JS
💬1  
7
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登