# Git --- ## Agenda 1. 疑問 2. 事前安裝 3. 什麼是版控 4. Git由來 5. 名詞介紹 6. 基本操作 & 情境模擬 7. Git GUI 8. GitHub 9. Q&A --- ## 有什麼疑問呢? --- ## 事前安裝 --- 請安裝以下軟體 1. [Git](https://git-scm.com/) 2. [Source Tree](https://www.sourcetreeapp.com/) 3. [Fork](https://git-fork.com/) 4. [Tortoise Git(Windows)](https://tortoisegit.org/) --- ## 什麼是版控 --- ### 這樣也是一種版控 ![](https://i.imgur.com/FP0Q27N.png) --- ### 如果很多人一起工作的話,那不就... --- ![](https://i.imgur.com/j31N3Af.png) --- #### 為什麼要做版本控制,要控制什麼? --- #### 那版本是什麼? --- #### 目的就是為了紀錄每次的新增與修改,並由Git幫你留下紀錄 --- ## Git由來 --- #### 就是他啦 ##### Git 是由 Linux 核心的作者 Linus Torvalds 在 2005 年為了管理 Linux 核心程式碼,僅花了 10 天所開發出來的 ![](https://i.imgur.com/z3c1BtS.png =360x480) --- #### 大家都說Git是分散式,到底是什麼啊??跟集中式有什麼區別呢? --- * 集中式的版控系統(Centralize Version Control),都需要有一台專用的伺服器,所有的更新都需要跟這台伺服器溝通。也就是說,萬一這台伺服器壞了,或是沒有網路連線的環境,版本控制功能就沒辦法使用。 --- * Git 是一款分散式的版控系統(Distributed Version Control),雖然通常也會有共同的伺服器,但即使在沒有伺服器或是沒有網路的環境,依舊可以使用 Git 來進行版控,待伺服器恢復正常運作或是在有網路的環境後再進行同步,不會受影響。而且,事實上在使用 Git 的過程中,大多的 Git 操作也都是在自己電腦本機就可以完成。 --- ## Git工作區介紹 --- #### Git 分成以下三個工作區 1. Working: 工作目錄 2. Staging: 暫存區 3. Repository: 儲存庫 --- ![](https://i.imgur.com/92coNkd.png =360x480) --- ## 基本操作 & 情境模擬 --- ### Git 初始化 ##### 狀況:我想用git做版控啦! --- ## git init --- ### 加到暫存區 #### 狀況:將新增或是修改的檔案加入版控吧 --- 1. git add file_name 2. git add . (工作目錄底下的所有內容) --- ### 查看狀態 ##### 狀況:有改到什麼東西嗎? --- ## git status --- ### 提交 ##### 狀況:嗯嗯,差不多了 就告一個段落吧 --- ## git commit -m "message" --- ### 查看提交紀錄 ##### 狀況:我最近提交了什麼呀? --- ## git log --- ### 修改訊息 ##### 狀況:啊~完蛋我提交訊息打錯了啦 --- #### git commit -\-amend -m "new_message" --- ### 建立分支 ##### 狀況:我不想在原本的分支開發新功能,該怎麼辦呢? --- 1. git branch (查看目前所有分支) 2. git branch branch_name (建立新分支) 3. git checkout branch_name (切換分支) --- ## 為什麼要建立分支呀? --- ### 合併分支 ##### 狀況:我開發好了,想合併回原本的分支 --- 1. git checkout 原本分支 2. git merge 開發分支 (開發分支合併到原本分支, 可將merge想成merge from) --- ### 還原 ##### 狀況:可惡,做錯了 --- #### git checkout file_name / git checkout . #### git reset HEAD~ -\-mode / git reset HEAD^ -\-mode mode:是指reset的模式,總共有soft、hard、mixed三種行為 --- ### Git在reset時有三種模式 #### 在commit後reset的行為 1. soft : 回到暫存區 2. hard : 新增與修改檔案直接跟你說掰噗 3. mixed : 回到工作目錄 <br> <br> ###### 可以自己新增或是修改檔案,透過git status來觀察reset後的狀態唷 --- ### 上傳 ##### 狀況:搞定,準備上傳吧 --- ## git push --- ### 獲取 ##### 狀況:大家都改了什麼呢? --- ## git pull --- ### Git常用的基本流程 pull -> branch(新增&切換分支) -> add -> commit -> merge(合併回原本分支) -> push --- ## Git GUI --- ## GitHub --- ## Q&A
{"metaMigratedAt":"2023-06-15T04:29:34.100Z","metaMigratedFrom":"Content","title":"Git","breaks":true,"description":"疑問","contributors":"[{\"id\":\"5be6adb0-3e56-4cd8-8073-d512e611dfc7\",\"add\":3244,\"del\":730}]"}
    238 views