# Git 入門筆記 Git 可以幫助我們更有效的進行版本控制,便於多人協作、管理多個版本。 ## 如何安裝 ### Windows 至 [Git官網](https://git-scm.com/) 下載並安裝,完成後使用 Git Bash。 ### MacOS 打開 terminal,輸入 `git --version`,MacOS 10.9 以上會自動引導安裝,若無則可參考 [官網說明](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) 進行操作。 ## Git 常用指令 | 指令 | 功能 | 說明 | | -------- | -------- | -------- | | git init | 初始化 | 在資料夾內使用,會產生檔名為 `.git` 之隱藏檔案,會將需要被 git 所控制的檔名寫入檔案中 | | git status | 狀態查詢 | 查看目前狀態<br>commit 前:<br>untracked 尚未加入版本控制<br>staged 已加入版本控制 | git add 檔名 | 加入版本控制 | | | git add .(或資料夾名稱) | 加入版本控制 | 資料夾下所有檔案都加入版本控制 | | `git rm --cached 檔名` | 取消加入版本控制 | | | git commit | 新建一個版本 | 送出後會進入 vim 編輯器<br> 若 commit message 內容較長可以寫在裡面<br>內容較短則使用<br>`git commit -m "message here"`<br>(使用 `-m` 前 無論新舊檔案都要記得 `add`) | `git commit -am "message"` | 快速新建版本 | 效果等同 `git add .` + `git commit -m`<br>`-am` 只對先前 `add` 過的檔案有效,新的檔案必須手動 `add` 後才能 `-am` | git log | 歷史紀錄 | | | `git log --oneline` | 單行歷史紀錄 | | | `git checkout 版本代碼` | 切換到某個版本 | | | git checkout master | | 切換到 master 這個 branch 的最新狀態 | ## 基本操作流程統整 ### 初始化 * 對要控制的資料夾下 `git init` `git add` 將檔案加入版本控制,用 `git status` 檢查 * 可以把資料夾中不需要進行版本控制的檔案寫入 `.gitignore` 檔(記得要把這個檔案加入版本控制資料夾裡面) * 通常會將使用者相關檔案、作業系統產生檔案等與專案本身較無關的檔案加入 如果不自己寫入 .gitignore,就要在每次 commit 時手動忽略 ### commit * 通常會在完成一個小進度的時候才進行 commit * 如果修改的檔案已經 add 過,在後續 commit 時就可以使用 `git commit -am "message"` * commit 後可用 `git diff` 指令觀看這一次改了什麼地方 ## Branch 分支 ### 為什麼需要 branch? 在發展新功能與進行 bug fix 時,可以分頭進行(平行),做完了確定後再合併。 | 指令 | 功能 | 說明 | | -------- | -------- | -------- | | git branch -v | 看現在有哪些 branch | | | git branch `branch name` | 新建 branch | | | git branch -d `branch name` | 刪除既有 branch | | | git checkout -b `branch name` | 新增 branch 之後直接切換過去 | | | git merge `branch name` | 將 branch 併回 master | 合併後就可以把 branch 刪掉<br>merge 時若遇到衝突,手動解決衝突後再 commit ## Github ### 把 code 放上 Github 新增一個 repo 之後會跑出教學說明。 #### 已經有 repo 的做法 ``` git remote add origin https://github位址 git push (-u) origin master ``` ### push 最新狀態 ``` git push origin master / branch 名稱 ``` ### pull 已 push 之檔案 ``` git pull origin master ``` ### 把別人的 repo 抓下來 ``` git clone 網址 //抓到本地 ``` fork 則是直接複製一份 repo 到自己的 github 上。 ### 在 github 上要求 merge 點擊 Compare & pull requests ## 特殊狀況 ### 更改送出的 commit message ``` git commit --amend ``` ### 刪除 commit ``` git reset HEAD^ ``` HEAD 表示最新的 commit,`^` 則是代表前一個 ``` git reset HEAD^ --hard //全都不要了,就像根本沒發生過 git reset HEAD^ --soft(預設) //commit 不要了,但修改過的檔案狀態還是在 ``` ### 還沒 commit,將檔案回覆到之前的狀態 ``` git checkout -- 檔案名稱 git checkout --. //所有檔案 ``` ### 更改 branch 的名字 ``` git branch -m 新名稱 ``` ### 把遠端的 branch 抓下來 ``` git checkout branch 名稱 ``` ## Hook 發生某事的時候讓程式自動通知我。 ### Git hook .git 資料夾 -> hooks 資料夾,裡面的小程式會有說明文字 最常使用到「在 commit 之前檢查」的功能 `exit 1`:不送出 commit `exit 0`:送出 commit ## 參考資料 [Lidemy【GIT101】Git 超新手入門](https://www.lidemy.com/) ###### tags: `導師實驗計畫第四期` `網頁前端` `Git`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up