檔案ID # Git ## 基本設定與初始化 指令接打在terminal ### 設定姓名 ```git= git config --global user.name "輸入姓名" ``` ### 設定Email ```git= git config --global user.email "輸入email" ``` ### 初始化 用途 : 建立.git資料夾,放入預先建立好的東西。 ```git= git init ``` ### 清空終端機內容 ```git= windows版:cls mac版:clear ``` ## Git指令 ![72316309_2739111376108490_535994150261096448_n1fkzgd](https://hackmd.io/_uploads/BJOq6m4vR.png) --- ### git status ```git= 檢查檔案現在的狀態 ``` ![image](https://hackmd.io/_uploads/SyIQQEVDC.png) #### 檔案狀態 ```git= Untracked(未追蹤) Tracked(已追蹤) Staged(已暫存) Committed(已提交) ``` --- ### git log ```git= 檢視先前歷史紀錄,內容包括提交者姓名、email、日期和說明文字 退出檢視模式:按Q鍵 ``` ![image](https://hackmd.io/_uploads/HJH_V4NDR.png) #### git log --online ```git= 用途:簡短版的git log,適合快速瀏覽 ``` ![image](https://hackmd.io/_uploads/ByKcEVNw0.png) --- ### git add <檔名> ```git= 將檔案放入暫存區,準備接受提交 ``` ![image](https://hackmd.io/_uploads/ByC8QEEDA.png) #### git add . ```git= 將所有檔案放入暫存區,準備接受提交 ``` --- ### git commit -m"輸入訊息" ```git= 將檔案提交,每一個檔案都需要附帶一個簡短的說明,方便了解提交目的和內容變化 ``` ![image](https://hackmd.io/_uploads/Skni7NEv0.png) --- ### git diff 檔案ID -- 檔名 ```git= 檢視檔案歷史更改紀錄 紅色為過去檔案,綠色為更改後檔案 fd0b510(檔案ID) 建立還原點(說明文字) ``` ![image](https://hackmd.io/_uploads/Hkoet44PR.png) --- ### git push -u ```git= push 到 origin HEAD ``` #### git push -f ```git= 強制push(在新branch) ``` --- ### git checkout 檔案ID -- 檔名 ```git= 將檔案回溯到先前的檔案 回溯完後記得再建立新的說明 ``` ![image](https://hackmd.io/_uploads/rJYtqVND0.png) #### git checkout -b \<branch name\> ```git= 建立並切換到新branch ``` --- ### git reset --hard 檔案ID ```git= 將檔案回到檔案ID的存檔點,並捨棄後面的存檔紀錄 此操作為不可逆 ``` ![image](https://hackmd.io/_uploads/rkjVnNVP0.png) 輸入前: ![image](https://hackmd.io/_uploads/SyW4pV4P0.png) 輸入後: ![image](https://hackmd.io/_uploads/SJod6ENPR.png) ![image](https://hackmd.io/_uploads/BkDoT4NDA.png) --- ### git clone <網址> ```git= 把整個專案複製一份下來並存在同名的目錄裡 ``` --- ### git pull ```git= 把upstream的新進度download ``` ## 檔案忽略 ```git= 先建立.gitignore檔案,再於檔案中寫入要忽略的檔名 好處:避免無關檔案混入紀錄,維持專案整潔 ``` ![image](https://hackmd.io/_uploads/rkjXWSNwC.png) ## Branch ``` 解決問題 1. conflict 2. 影響repo ``` --- ### git checkout \<branch name\> 或是 `git switch` ```git= 切換branch ``` --- ### git checkout -b <branch_name> 創建新的 branch 並移動到該分支 --- ### git rebase <rebase到*哪個 branch*> ```git= 把目前branch起始點移到最新進度 ``` #### git rebase --continue ```git= 解決完conflict繼續rebase ``` --- ### git branch ```git= 查看branch(按q離開) ``` ### git branch -a ```git= 查看所有branch(包含remote) ``` #### git branch -d \<branch name\> ```git= 刪除**電腦**上的branch ``` ## Merge 方法 ```git= pull request (cpmpare & pull request) merge完再push ``` ### git merge <要merge的branch> ```git= merge branch ``` >[!Caution]merge完branch會消失!! ### git merge --no-ff <branch_name> 合併後仍有 branch 分支的效果 ![截圖 2024-08-11 下午4.42.15](https://hackmd.io/_uploads/BkAKFxLcR.png =60%x) ## 參考資料 https://www.youtube.com/watch?v=FKXRiAiQFiY --- - Contributor: 陳宏瑜, 陳婕熙, Ateto