# Git ## 初次設定 ### 確認安裝以及當前版本 ```bash $ git --version ``` ![](https://i.imgur.com/JA9O4K5.png) ### 設定使用者資訊 ```bash $ git config --global user.name "UserName" $ git config --global user.email "Email" ``` ### 檢查使用者資訊 ```bash $ git config --list ``` ![](https://i.imgur.com/RdIxECp.png) ## 初始化 ``` //建立資料夾 $ mkdir gitTest //移動到剛才建立的資料夾下 $ cd gitTest //資料夾git初始化 $ git init ``` 資料夾裡出現 ![](https://i.imgur.com/Hhd6juk.png) 就初始化成功囉 ## 工作流程 ![](https://i.imgur.com/YXjo1TX.png) 首先隨意建立一個檔案在剛才生成的資料夾 並查看 git 目前狀態 ``` $ git status ``` ![](https://i.imgur.com/JveM8vt.png) 檔案目前尚未被追蹤 將檔案 Stage,有兩種方式 Stage 單一檔案 ``` $ git add 檔案名稱 ``` Stage 所有檔案 ``` $ git add . ``` 再次查看狀態 ``` $ git status ``` ![](https://i.imgur.com/Dv34Vz2.png) 檔案成功被追蹤 接下來進行 Commit ``` $ git commit -m "Message" ``` ![](https://i.imgur.com/ZVoUmlM.png) 更動檔案裡的資料 再次查看狀態,狀態又會變為 not staged ``` $ git status ``` ![](https://i.imgur.com/DpylkdL.png) ## 分支 ### 查看當前所處分支 ``` $ git branch ``` ![](https://i.imgur.com/ra81pZU.png) 分支主要用來將流程區分,把程式碼分成不同狀態進行儲存 ![](https://i.imgur.com/SKRb63h.png) ### 建立分支 ``` $ git checkout -b develop ``` 建立好後會自動切換到該分支 ![](https://i.imgur.com/yCf92KZ.png) ### 列出所有分支 ``` $ git branch -a ``` ![](https://i.imgur.com/OAF53We.png) ### 切換分支 ``` $ git checkout 分支名稱 ``` ![](https://i.imgur.com/PG6gbVB.png) ### 合併分支 ``` $ git merge 要合併的分支 ``` ex: develop 合併到 master ![](https://i.imgur.com/J5RQZO6.png) ### 合併衝突 如果有在合併分支的過程中發現同個地方有不一樣的程式碼 這時候就會發生衝突 在master分支的內容 ![](https://i.imgur.com/1jM7Nan.png) 在develop分支的內容 ![](https://i.imgur.com/hWKfLB8.png) 合併分支後會變成這樣 ![](https://i.imgur.com/B5HIzg3.png) ![](https://i.imgur.com/c0Ydj3Q.png) 這個時候就要看哪邊的程式碼是我們需要的, 也可以把兩邊的程式碼都留下, 之後在 Commit 解決後的內容就可以囉! ## 遠端庫 Repository 在我們完成Commit後,我們可以將內容推送到遠端庫 在 GitLab 或 GitHub 建立 Project ![](https://i.imgur.com/gRD0BMw.png) ### 將本地的存儲庫 Remote 到遠端庫 ``` $ git remote add 遠端庫代稱 遠端庫連結 ``` ![](https://i.imgur.com/u1kkx6Z.png) 可以不只擁有一個遠端庫 ### 查看所有遠端庫 ``` $ git remote -v ``` ![](https://i.imgur.com/YGKpJE3.png) ### 將本地端推送到遠端庫 ``` $ git push -u 遠端庫代稱 分支名 ``` 推送成功後就會出現 ![](https://i.imgur.com/YAc6hem.png) 遠端庫上也會出現我們剛才所push的內容 ! ![](https://i.imgur.com/mTrPWtb.png) ### 多人共編 如果有一個專案小組想在同一份專案進行改動 這是就可以使用 git clone 到遠端庫找到連結 ![](https://i.imgur.com/BPpXmTu.png) ``` $ git clone 遠端庫連結 ``` 因為是多人共編,也會有他人的改動 如果要將別人改動後的內容下載並**合併**至本地分支 ``` $ git pull 遠端庫 分支名 ``` ex: 將遠端庫 master 合併到 本地 develop ![](https://i.imgur.com/cCG8q0o.png) 如果只想下載不想合併 ``` $ git fetch ```