安裝 Git/ Git 的基本指令


Posted by yunanpan on 2020-06-16

此篇記錄如何安裝 Git,以及 Git 的一些基本指令。


如何安裝 Git?

Windows:
Git 官網上下載即可。安裝完開啟 git-bash 輸入 git --version,確認是否安裝成功並確認版本。
Mac:
在 terminal 中一樣輸入 git --version,MacOS 版本在 10.9 以上就會連去安裝。


Git 基本指令

git init:在需要使用 Git 做版本控制的資料夾下使用。初始化後,Git 就知道要對指定資料夾做版本控制。在指定資料夾下會自動新增 .git 的資料夾。
git status:查看資料夾內檔案狀態。

git add:決定是否加入版本控制。

  • untracked:未加入
  • staged:加入

git add .:將資料夾內所有檔案都加入版本控制。
git add <filename>:將指定檔案加入版本控制。
git rm --cached <filename>:從 staged 移回 untracked(不做版本控制)。
git commit -m "msg":新建一個版本, msg 可以寫入此版修改了什麼地方。
git commit -am "msg"git add . + git commit -m "msg"。只能用於已經加入 staging area 後修改過的檔案,新建且還沒加入版本控制的檔案還是需要先使用 git add 加入版本控制。
git log:查詢歷史紀錄。
git log --oneline:顯示較短版本的歷史紀錄。
git checkout <branch>|<版本號>:切換到某條分支或是切換到某個版本。
git checkout master:切換回最新狀態。
git diff:在 commit 前可以看檔案改了什麼內容。

其他指令可以在 Git 的官網查詢使用方式。


永不加入版本控制的檔案處理方式

有些檔案一直都不會加入版本控制,那每次 git add 的時候,就不能用 git add .,因為會涵蓋到不打算加入版本控制的檔案(假設此檔案是text.txt)。但要一個一個輸入 git add 又太花時間。此時可以建立 .gitignore 的檔案,將 text.txt 名稱寫進去,如此一來便可直接使用 git add .,也不怕涵蓋到 text.txt。步驟如下:

  1. touch .gitignore:建立 .gitignore 檔案。
  2. vim .gitignore:進入 .gitignore 編輯,寫入 text.txt。
  3. :wq 跳出 vim 後輸入 git status 查看狀態,會發現 text.txt 已經不在 untracked 的狀態上了。

其他狀況劇

commit 後又反悔

git reset HEAD^

  • --mixed(預設):取消最新的 commit(git log 會看到上一版的 commit),修改或新增的檔案會被放回 working directory 裡,需要重新加入版本控制。
  • --soft:取消最新的 commit(git log 會看到上一版的 commit),修改或新增的檔案會被放回 staging area 裡。
  • --hard:修改或新增的檔案皆會不見,整個資料夾會回到上一版 commit 的狀態。
    ref:〈Git reset 的三種模式( soft mixed hard )比較〉

修改 commit msg

  • git commit --amend:可以修改最新送出的 commit msg。
    試過 git checkout 到前幾版的 commit 版本號,雖然在切換成指定版本號的時候可以修改 commit msg,但切換回 master(最新狀態)時,修改的 commit msg 就會不見。

還沒 commit 但改的東西不想要了

(以 windows git-bash 開發,與 Mac 的指令不同)
git restore <file>:想要捨棄在上一版 commit 之後修改的內容,可以利用 git status,會有提示告訴你怎麼回到上一版 commit 的狀態。如下圖:


如果每個檔案都想要回復成上一版的狀態,用 git restore . 即可。
但如果是新增的檔案並編輯(沒有 commit 過的)則不會被改回上一版。


客製化各個階段:git hook

hook 就像是釣魚時魚上鉤時釣竿會動,告訴釣客有魚上鉤了。在 git 裡可以用來偵測指令並做出反應。像是 commit 前檢查程式碼是否有符合規範等等。

上一篇:〈Git 是要做什麼?為什麼要用 Git?〉










Related Posts

React-[入門篇]- 渲染列表 (rendering lists) |解構props寫法

React-[入門篇]- 渲染列表 (rendering lists) |解構props寫法

Apache 與 PHP 的關係

Apache 與 PHP 的關係

使用 Prometheus 和 Grafana 打造 Flask Web App 監控預警系統

使用 Prometheus 和 Grafana 打造 Flask Web App 監控預警系統


Comments