iT邦幫忙

2022 iThome 鐵人賽

DAY 7
1

今天的主題是 Git,這是個版本控管的工具。
版本控管這四個字包含了許多的意義在裡面,你可以紀錄(commit)現在的進度,也可以回到過去紀錄的進度(revert),你也可以從目前的主線中切出另一個分支(branch)進行開發,等開發完成後再主線合併(merge)同步進度。

  • 紀錄(commit)
  • 返回(revert)
  • 分支(branch)
  • 合併(merge)

在使用 Git 之前,先確定電腦上已經有安裝了 Git,可以透過 git --version 來檢視。
如果沒有安裝的話,可以照著官方網站的教學進行安裝:Git 安裝教學

git init

當我們要在一個新的專案中使用 Git 的時候,會透過 git init 來進行初始化。
會建立 .git 這個資料夾來儲存往後 git 操作的紀錄。

輸入 ls -al 可以看到 .git 這個資料夾已經被我們建立了,如此便已完成我們的初始化動作。

git status

可以使用這個指令來看到目前的狀態,裡面的資訊會有目前所在的分支、已經 add 的檔案、檔案的狀態(新增、編輯、移除...)等等。

git add

目前 index.html 所在的地方是:Unstaged,也就是尚未 addstaging area 的變更。

git-fork的畫面

輸入 git add index.html 或是全部都加 git add . or git add --all,完成後我們可以輸入 git status 看一下目前的狀態:

同時也可以看到 git-fork 的畫面,index.html 已經被移到下面那層 staged 中了。

git commit

為這項變更加入說明,並將變更從 staging area 移至 repository
輸入 git commit -m "feat: 新增了 index.html"

這時候我們可以打開 git-fork 的畫面來看:

可以看到我們剛剛透過 add 加入的檔案與在 commit 時輸入的訊息都已經出現在 repository 的畫面上了。

git reset

如果覺得剛剛做的 commit 不妥,想要退回去的話,可以使用這個指令
git reset 的指令有三種參數:

  • --mixed:會將回復的紀錄放到 unstaged(尚未進行 git add)的地方
  • --soft:會將回復的紀錄放到 staged(已經進行 git add)的地方
  • --hard:回復的紀錄會直接消失

我們可以透過 git reset --mixed HEAD 回復到最新一個 commit 的地方。
而改為 HEAD~1 的話則表示回到上一個 commit 的地方。
HEAD~2 的話則表示回到上兩個 commit 的地方。

除了透過 HEAD 之外,也可以直接輸入目標的 commit 編號進行 reset。

git revert

這個方式比較適合要取消、重做已經 commit 出去(進行 push 了)的變更的情境。
使用 git revert 的話會產生一個新的 commit,這個 commit 裏有著進行回復的紀錄,他會是做一個新的 commit 來進行回復的行為,而不是像 reset 一樣直接退回去某個 commit 造成紀錄的改變。

git branch

透過分支,我們可以在多人協作、或是多個功能、頁面開發的時候,讓各開發項目的 commit 都在對應的 branch 上,如果全部都 commit 在同一個 branch 的話容易造成開發流程的混亂,不同功能的 commit 也都會擠在同一條 branch 上。

除此之外,透過 branch 的切換,我們可以留有不同開發階段的分支。

舉例來說,今天我們的 main 分支是當前正式環境的進度,而我們要新增一個頁面的話,會在 main 分出來的 dev 分支上進行開發(或是從 dev 分支再分一個給該頁面的 branch 出來)等開發完成後 commit 到 dev 分支進行確認。

此時的 dev 分支狀態就跟 main 加上這個新頁面的狀態是一樣的,確認沒問題之後,會將 dev 的分支與 main 的進度同步,如此一來,main 的分支上也會有剛剛開發的那一個頁面了。

輸入 git branch dev 來建立新的分支
輸入 git checkout dev 來切換至 dev 這個分支
也可以用 git checkout -b dev 來建立分支並且切換過去

git merge

將 B 分支的進度,同步到 A 分支中
先切到 A 分支:git checkout A
把 B 分支的進度與當前分支(A)merge:git merge B


參考

連猴子都能懂的Git入門指南
為你自己學 Git


上一篇
Day06 - 漂漂釀釀ㄉ CSS
下一篇
Day08 - 把你的程式碼丟到 Github 給全世界看!
系列文
因為拖延症而沒有好好準備有系統性文章架構的我只能靠一天一筆記來贖罪30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
孤獨一隻雞
iT邦研究生 4 級 ‧ 2022-09-21 23:59:11

越來越短了 阿餒美賽哦

QQ我還在補...等等再更新....

0
Ray
iT邦研究生 4 級 ‧ 2022-09-22 00:01:19

越來越短ㄋ捏
真的是邁向開天窗之路ㄋ

救命.....

0
json_liang
iT邦研究生 4 級 ‧ 2022-09-22 00:11:18

一起加油!

謝謝!!!TAT
真的加油

0
一顆蘋果熊
iT邦新手 5 級 ‧ 2022-09-22 19:36:58

看來快要有人請我喝咖啡了!

不...不是這樣說ㄉ!!!我還沒有輸...!

我要留言

立即登入留言