# Git 技術入門(指令筆記) Git 不但是目前最流行的版本控制系統之一,也是多人開發的必備技能。 雖然目前的學習過程中,都還是單人開發。但掌握好 Git 能更好地組織程式碼的開發流程。 因為指令相當多,在這邊也做個整理,方便學習。 ## 為什麼要使用 Git? Git 是一種分散式版本控制系統,能夠有效地管理程式碼的變更歷史,支援多人協作開發,並且可以輕鬆地與遠端儲存庫(如 GitHub)同步。 ### Git 的三個主要區域 1. 工作區(Working Directory): 您正在進行開發的目錄,包含了所有的原始檔案。 2. 暫存區(Staging Area): 使用 `git add` 將修改過的檔案加入暫存區,準備提交。 3. 本地儲存庫(Local Repository): 使用 `git commit` 將暫存區的內容提交到本地儲存庫,形成一個版本快照。 --- ### 一、基本操作與狀態查詢 | 指令 | 功能說明 | | -------- | -------- | | `pwd` | 顯示目前所在的資料夾路徑(present working directory)| | `ls` | 列出目前資料夾內的檔案與資料夾 | | `cd` + 資料夾名稱 | 進入指定資料夾 | | `cd ..` | 回到上一層資料夾 | | `git status` | 查看目前 Git 狀態(哪些檔案有異動、是否在版本控制中) | | `git log` | 查看歷史提交紀錄(commit log) | | `git reflog` | 顯示所有 Git 操作紀錄(包括 reset、checkout 等) | * git reflog - 顯示所有操作步驟(可搭配 `git reaet` 還原檔案) 若有多筆紀錄 按鍵f 往下 按鍵 b 返回 按鍵 q 離開 `git reflog` 介面 ### 二、版本控制流程(從無到有) | 指令 | 功能說明 | | -------- | -------- | | `git init` | 初始化一個 Git 儲存庫(建立 `.git` 資料夾)| | `git add` + 檔案 | 把檔案加進「暫存區」準備提交 | | `git add .` | 加入所有變動中的檔案 | | `git commit -m "訊息"` | 提交並寫下本次修改說明,形成一個版本點 | | `git log --pretty=oneline` | 顯示提交紀錄,每筆只佔一行(更清爽) | ### 三、暫存功能(stash) | 指令 | 功能說明 | | -------- | -------- | | `git stash` | 暫時儲存目前修改,不提交 | | `git stash save "說明"` | 自訂儲存名稱 | | `git stash list` | 顯示所有暫存列表 | | `git stash apply` + 數字 | 取出指定的暫存修改(不會刪除) | | `git stash pop` | 取出最近一筆暫存並刪除 | ### 四、分支管理 | 指令 | 功能說明 | | -------- | -------- | | `git branch` | 查看所有分支線 | | `git branch` + 分支名 | 創建新分支線 | | `git checkout` + 分支名 | 移動到該分支線 | | `git merge` + 分支名 | 把指定分支合併到當前分支線 | | `git branch -D` + 分支名 | 刪除該分支線(若位置在該分支線,無法刪除) | | `git checkout` | 快速在兩個分支線間切換 | ### 五、版本回復與修補 | 指令 | 功能說明 | | -------- | -------- | | `git restore` + 檔案名 | 還原檔案到最近一次提交的版本 | | `git reset` + "commit_hash" | 回到某個版本點(後面的歷史還在) | | `git reset --hard` + "commit_hash" | 回到某個版本點並刪除之後的變動 | | `git cherry-pick` + "commit_hash" | 把某一次提交單獨挑出來套用到目前分支 | * git是利用 commit hash 讀取存檔 `git reset` "commit hash" - 讀檔 e.g. `git reset` 14eeebf346005f5f1f6b394d66d3775c59925395 * `git cherry-pick` "commit hash" - 撿取存檔時間的檔案(若有多個須按先後順序撿取) ### 六、遠端同步(GitHub) | 指令 | 功能說明 | | -------- | -------- | | `git remote add origin` + 網址 | 將本地儲存庫與 GitHub 連接 | | `git push` | 從本地端推送資料到 GitHub | | `git pull` | 從 GitHub 拉下最新版本 | | `git clone` + 網址 | 複製整個遠端儲存庫下來 | --- ### .bashrc 快捷指令設定 可以透過設定 .bashrc 來加速日常 Git 操作 設定方法如下: #### 1. 開啟編輯 .bashrc ```bash nano ~/.bashrc ``` #### 2. 加入 Git 快捷指令(Alias) ```bash alias gcm="git checkout main" alias gb="git branch -vv" alias gp="git pull" alias gl="git log --pretty=oneline" alias gs="git status" alias gc="git checkout" ``` #### 3. 存檔 按 `Ctrl` + `X` 輸入 `Y`(確認存檔) 按 `Enter`(儲存並離開) #### 4. 讓設定立即生效 ```bash source ~/.bashrc ``` ## 總結 學習 Git 對我來說一開始真的有點困難,指令多又容易搞混。但透過不斷地實際操作、整理資料與撰寫筆記,我發現自己對 Git 的理解越來越清楚。 從初始化版本庫、加入檔案、提交紀錄,到管理分支、與 GitHub 同步,再到使用 stash 暫存工作進度,這些工具都讓我能更有條理地管理專案,也提升了解決問題的能力。 未來我希望能更熟練地運用 Git,並搭配其他工具如 GitHub Flow 或 GitLab 做更進一步的專案管理。