# Git & GitHub 入門 ###### tags: `Git` `GitHub` 教學資源: [Git文件](https://git-scm.com/book/zh-tw/v2) [鐵人賽Git 版本控制](https://ithelp.ithome.com.tw/users/20139195/ironman/4770) [為你自己學 Git](https://gitbook.tw/) [六角學院Git、GitGub](https://youtube.com/playlist?list=PLYrA-SsMvTPOZeB6DHvB0ewl3miMf-2tj) [Git 與 Github 版本控制基本指令與操作入門教學](https://blog.techbridge.cc/2018/01/17/learning-programming-and-coding-with-python-git-and-github-tutorial/) ## :pushpin:什麼是 Git? **git是一個分散式版本控制軟體(Version Control System)**,於2005年釋出。最初目的是為了更好地管理Linux核心開發而設計。但是隨著開發的深入,以及他的許多優點深受人們喜愛,因此越來越多的專案採用git來管理開發。 :::info - Git 是一個版本控制軟體,藉由它產生一個**儲存庫( git Repository)** - GitHub 支援 git 程式碼存取和**遠端托管儲存庫**的平台服務,GitHub 的本體是一個 Git 伺服器 ::: ### 版本控制 Git在檔案新增、修改、刪除時的每個動作都可以稱為一個「版本」,而Git版本控制則是,幫你追蹤檔案所有的狀態變化。 以下為不同的版本控制: 1. 本地端版本控制 - RCS通過套用任意的補丁,重新產生出每個版本的檔案內容。 2. 集中化版本控制系統 - 有一個伺服器來管理所有版本的檔案,而許多用戶端會連到這台伺服器取出檔案來使用 ex:CVS、Subversion、Perforce。 3. 分散式版本控制系統 - 用戶端不但可以取出最新的檔案資訊,還可以將整個檔案夾備份,假如有任何一個伺服器損壞,就可以採用用戶端的資料來進行還原。 ### 為什麼需要Git? 我們經常會面臨檔案新增、修改、刪除的狀況,有時在複製檔案到其他資料夾時會不小心覆蓋檔案前一個的檔案,此時就可以使用**Git回溯資料,找到過去版本的資料(就像時光機一樣!)**。 ### Git優點 - 開源免費軟體 - 分散式的版本控制系統 用戶對伺服器的依賴性降低。 - 速度快、體積小 Git 採用快照方式取代複製貼上,建立和切換分支速度非常快。 - 功能強大 Git 最為出色的是它的合併追蹤(merge tracing)的能力。 ### 終端機模式指令 在學習、使用 Git 的時候,會有很多機會需要在終端機(Terminal)模式下輸入指令,例如: ``` $ git --version git version 2.21.0 ``` 在最前面的 $ 符號是系統提示字元,用於告訴大家==這是一個需要在終端機環境下手動輸入的指令==,而下一行則是指令執行的結果。**使用者在實際輸入指令時若輸入 $ 則會出現 command not found 的錯誤訊息**。 ## :pushpin:安裝 [Windows安裝傳送門](https://git-scm.com/download/win) [mac安裝教學](https://gitbook.tw/chapters/environment/install-git-in-windows) 安裝後輸入指令驗證安裝&版本資訊 ![](https://i.imgur.com/8k5577N.png) ### 測試安裝是否成功 ``` $ which git /mingw64/bin/git $ git --version git version 2.21.0.windows.1 ``` ### 終端機 * Win:Git Bash * 開始 > 搜尋輸入Git Bash * Mac:終端機 * 輸入「control + 空白」,關鍵字輸入「終端機」 ### 個人資料設定 * 輸入姓名 `$git config --global user.name "輸入名字"` * 輸入個人的 email `$git config --global user.email "輸入信箱"` * 查詢 git 設定內容 `$git config --list` ## :pushpin:終端機指令學習 |Windows|MacOS & Linux|說明| |-|-|:-| |==cd [路徑]==|==cd [路徑]==|前往資料夾路徑(拖拉資料夾至終端機介面)| |cd|pwd|取得目前所在的位置| |dir|ls|顯示資料夾裡的檔案| |mkdir|mkdir|新增資料夾| |無指令|touch|開新檔案| |copy|cp|複製檔案| |move|mv|移動檔案| |del|rm|刪除檔案| |cls|clear|清除畫面上的內容| ## :pushpin:Git常用指令 ![](https://i.imgur.com/uP2ZBAY.png) |指令|說明| |-|:-| |==`$git init`==|初始化數據庫,新增本地數據庫 | |`ls -a` |顯示所有檔案含隱藏檔| |`$git status`|查詢當前狀態 **要將檔案加入到指定資料夾**| |==`$git add.`==|將所有檔案加入到索引| |`git add ____`|將單一檔案加入到索引| |==`$git commit -m"新增網頁環境"`==|將索引檔案變成一個更新(commit)| |`$git log`|觀察 commit 歷史紀錄| |`$git clone數據庫網址`|下載遠端數據庫| |`$git push origin master`|更新遠端數據庫| |`$ git add -p index.html`|commit部分內容| ![](https://i.imgur.com/SJRzrDc.png) ![](https://i.imgur.com/6RDarI8.jpg) >若在輸入 git init 出現 'git' 不是內部或外部命令、可執行的程式或批次檔。 這個錯誤指令的話 只要打開 環境變數 -> 系統變數,點擊變數 Path,新增以下兩個檔案路徑即可 ![](https://i.imgur.com/vozKTIS.png) ## :pushpin:新增遠端數據庫repo GitGub上傳 1. 新建好 GitHub 的 Repository 2. `git remote add origin <your url>` *輸入一次即可 3. `git branch -M main` *分支 4. `git push -u origin main` *push到雲端數據庫 5. 往後檔案修改輸入 * 從新增好的遠端數據庫整合 ![](https://i.imgur.com/wSSEOLG.png) * 從本地新增到遠端數據庫 ![](https://i.imgur.com/2gxulcU.png)