# Git & GitHub [toc] ## 1.Git的介紹 Git 是一種分散式版本控制系統 (Distributed Version Control System, DVCS)。用來追蹤程式碼或文件的修改歷史、協助多人協作開發。 ### 一、核心概念 | 名稱 | 說明 | | ----------------------- | --------------------- | | **Repository(儲存庫)** | 專案的版本資料庫,包含所有檔案的歷史版本。 | | **Commit(提交)** | 一次版本快照,記錄檔案變化。 | | **Branch(分支)** | 開發線。允許多個版本並行開發。 | | **Merge(合併)** | 把不同分支的修改整合起來。 | | **Clone / Pull / Push** | 從遠端複製專案、取回更新、上傳更新的操作。 | ### 二、Git 的特性 - 分散式架構:每個人都有完整版本庫,可離線操作。 - 高效快照:每次 commit 儲存的是檔案差異(增量)。 - 安全性強:所有版本都有唯一的 SHA-1 校驗碼。 - 輕量分支:建立、切換、合併分支成本極低。 --- ## 2.Git 的安裝 我們在使用Git之前要先到Git的官網下載Git下來。 下載網址:https://git-scm.com/install/windows ![image](https://hackmd.io/_uploads/BkVRkKvy-e.png) 點開之後直接無腦點繼續就對了 ## 3. Visual Studio Code 的安裝 VScode是一個大型的程式編輯器,我們時常利用它來做編輯程式,它內建終端機,也就是 下載連結:https://code.visualstudio.com 一樣無腦點繼續就好 ## 4. GitHub GitHub連結:https://github.com ###### ~~創帳號建議用手機創,現在的驗證真的有夠麻煩~~ ## 5.Git常用指令 ### 登入帳號 :::warning 注意,每次用不同的主機都要執行這指令!! ::: ``` git config --global user.name "自己的名字" git config --global user.email "自己的email" ``` ### 將團隊的資料夾拉下來本地端 ``` git clone 資料夾連結 ``` ##### 資料夾連結點圈起來的部分 ![image](https://hackmd.io/_uploads/ryXFLBdvbg.png) ### 追蹤以及提交 ``` git add . git commit -m "修改內容" ``` ### 將本地的code推送到GitHub上 ``` git push <remote>(通常都打origin) <branch>(你的分流) ``` ### push到GitHub上後要做的事 1. 前往你們的資料夾 2. 點開Pull requests ![image](https://hackmd.io/_uploads/S1VP_BdvZl.png) 3. 按下創建New pull requests![image](https://hackmd.io/_uploads/rkbjOBdvbl.png) 4. 後面的compare修改成自己的branch![image](https://hackmd.io/_uploads/HJK0_B_Dbg.png) 5. 點擊Create pull request 6. 後面一直點綠色的按鈕就好 ### 分流 branch的中文意思是分流,顧名思義就是將你的程式碼分流到一個你自己的區域,在那個區域你可以隨意更改你自己的程式碼,push到GitHub上的repo(資料夾)也不會動到主流(main)。 切換分流的方法如下 ``` git checkout -b 你的branch(自己取名,建議取個綽號就好) (-b 的意思是創建一個新branch,如果本地已經有branch的話可以不用打-b) ``` ### 將團隊成員已經push到repo上的code拉到本地 ``` git pull origin main ``` :::info 為什麼會用origin main呢? ::: :::success 因為使用者會將code merge到main(主流)中 ::: ### .gitignore 請將 ``` # Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv .env # Unity generate Library/ Temp/ Obj/ build/ builds/ logs/ .vs/ .idea/ *.csproj *.sin *.user *.userprefs .DS_Store Thumbs.db ```