<style> .reveal { font-size: 28px; font-weight: 300; color: #ccc; } .reveal .slides { text-align: left; } .reveal section img { border: none; } .reveal .slides section, .reveal .slides section > section { line-height: 1.6; } .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 { text-transform: none !important; color: white; } .reveal h1, .reveal h2, .reveal h3 { padding-bottom: 3rem; } .reveal blockquote { width: 90%; } .reveal table { border: 1px solid; } .content-between { display: flex; align-items: center; justify-content: space-around; } .blockman { display: block; margin-left: 140px; } </style> # 快速上手 Git Jeffery @ Evolutive Labs --- ### 大綱 - 如何開始使用 - 如何提交 Commit - 什麼是 Commit - 如何建立 Branch - 常見情境 - 如何分享專案 - Flow 介紹 --- ### 如何開始使用 --- ### 安裝 Git 指令 其他系統安裝可到[官網](https://git-scm.com/downloads)查看 - Ubuntu 系統 ```= apt-get install git ``` - MacOS 系統 ```= brew install git ``` --- 安裝完後就可以在終端機打 git 指令 ![](https://i.imgur.com/8s0ndWW.png =800x400) --- ### 開始用 Git 版控 第一步、建立資料夾 ```= mkdir git-demo ``` 第二部、git 初始化 ```= git init git-demo ``` 這樣就可以讓 Git 幫你做版控 --- 打開資料夾後並不是空的 ![](https://i.imgur.com/ZuZl5NY.png =800x400) --- ### 環境參數設定 --- #### 設定姓名/信箱 在提交 Commit 才會知道作者是誰 ```= git config --global user.name jeffery git config --global user.email jeffery.l@evolutivelabs.com ``` --- #### 設定指令別名 在操作指令可以少打幾個字 ```= git config --global alias.st status ``` --- #### 設定完可以看到設定 ```= # 查看 local 設定 git config --local --list # 查看 global 設定 git config --global --list ``` --- 這是我目前在用的設定 ![](https://i.imgur.com/KOXrg7C.png =800x400) --- ### 如何提交 Commit --- 先來認識提交前的三個狀態狀態 - Untracked files (未被追蹤的檔案) - Changes not staged for commit (被更動尚未提交) - Changes to be committed (將要提交的檔案) --- 讓我們來提交第一個 Commit 就更清楚了 --- 第一步、新增 `read.md` 檔案 ![](https://i.imgur.com/GEqqukU.png =800x250) --- 第二步、加入追蹤 `git add .` ![](https://i.imgur.com/jU1S4P6.png =600x250) --- 第三步、提交檔案 ![](https://i.imgur.com/qz6YV80.png =800x200) --- 第四步、查看提交紀錄 `git log` ![](https://i.imgur.com/LE2JCgt.png =800x200) --- 第五步、修改已加入 git 追蹤的檔案 ![](https://i.imgur.com/Le5zRje.png =800x200) --- 讓我們來回顧剛剛操作過的指令 ```= # 查看檔案追蹤狀態 git status # 加入追蹤 git add . # 提交修改內容 git commit -m <message> # 查看提交紀錄 git log ``` --- ### 什麼是 Commit ? --- - Commit 只紀錄修改內容,並不是紀錄完整的程式碼 ![](https://i.imgur.com/cM1ayI1.png =800x200) --- - 每一個 Commit 都有自己唯一的身分證 ![](https://i.imgur.com/N3e4ouN.png) --- 有了身分證就可為所欲為的想回朔版本或開分支等等都可以~ P.S 建議交付程式給其他公司,記得要把移除 Git,不然你不小心提交機密性資料庫連線資訊、或第三方的 secret 就會被別人取得。 --- ### 如何建立 Branch --- 先來了解什麼是 Commit Tree --- #### Commit Tree - 在 Git 裡面,每一個 commit 都是一個節點,當把這些節點一個一個串起來 - 每一個節點(commit id),都可以另外長出自己的分支 ```= o---o---o feature 2 / o---o---o---o---o---o---o---o---o---o---o develop \ / o---o---o---o feature 1 ``` --- 讓我們建立第一分支就清楚了~ --- 第一步、查看分支 `git branch` ![](https://i.imgur.com/OWvPOGp.png) --- 第二步、建立分支 `git branch <branch name>` 預設是從當下分支最新的 commit 切出去 ![](https://i.imgur.com/NQ87l3g.png) --- 從指定的 Commit 建立分支 `git branch <branch name> <commit id>` --- 第三步、切換分支 `git checkout <branch name>` ![](https://i.imgur.com/nE5lDVk.png) --- 建立完後也可以刪除分支 `git branch -D <branch name>` --- **特別注意** - 刪除分支並不是把 Commit 都刪掉,只是把該 Commit 的分支標籤撕掉 --- ### 常見情境 --- #### 情境ㄧ、不想追蹤特定檔案 新增 .gitignore 檔案,把該目錄想忽略的檔案路徑寫在該檔案裡面 ![](https://i.imgur.com/L7oesL4.png =350x400) --- #### 情境二、刪除已被 git 追蹤的檔案 `git rm --cached <file>` ![](https://i.imgur.com/S4JGbkW.png =800x250) --- #### 情境三、修改已經提交的訊息 第一步、還原尚未提交狀態 `git reset --soft HEAD^` 第二步、再提交訊息 `git commit -m <message>` --- #### 情境四、返回前一個版本 `git revert <commit id>` ![](https://i.imgur.com/INTGt4P.png =700x200) --- #### 情境五、使用 merge 合併分支 第一步、切到目的地分支 `git checkout master` 第二步、合併來源分支 `git merge develop` --- 除了合併沒有的 commit 之外還有 merge commit ![](https://i.imgur.com/KLKFqWi.png =600x400) --- #### 情境六、使用 rebase 合併分支 第一步、切到目的地分支 `git checkout master` 第二部、合併來源分支 `git rebase develop` --- 就不會多 merge commit,紀錄較乾淨 ![](https://i.imgur.com/BYUcqrb.png =600x400) --- #### 情境七、使用 rebase 合併 commit 第一步、複製要合併前的 commit id 第二步、重新定義節點 `git rebase -i <commit id>` --- ![](https://i.imgur.com/S0JCt11.png =600x400) --- ### 如何分享專案 --- 在遠端庫(GitHub、GitLab、Bitbucket)建立專案 ![](https://i.imgur.com/YRbPGfj.png =600x400) --- 與遠端庫建立連線 ![](https://i.imgur.com/QyKZK0q.png =650x400) --- 查看遠端設定 `git remote -v` ![](https://i.imgur.com/UYfygeZ.png) --- 將本地分支推送到遠端 `git push -u <remote name> <branch name>` ![](https://i.imgur.com/FscLvp7.png) --- 到這邊就順利把專案丟上雲端,可以分享給別人 `git clone git@bitbucket.org:jefferyleel/git-demo.git` --- 在 PUSH 過程中可能會遇到無法 ssh 權限不足或需要打帳密的遠端連線問題 --- #### Repository URL - HTTPS:每次上傳 code 的時候,都要輸入一次 username、password - SSH:只要設定好一次之後,就不用再輸入帳號/密碼了 --- #### 透過 SSH 如何連線? - SSH 跟 Bitbucket 建立連線是透過 RSA 加密演算法 - RSA 金鑰是一對(一把私鑰 + 一把公鑰),公鑰給 Server,私鑰存放在自己電腦 --- 公私鑰匹配連線成功 ![](https://i.imgur.com/sKcwJOf.png =550x400) --- #### 如何產生公私鑰 1. 使用 ssh-keygen 產生公私鑰 `ssh-keygen -t rsa` 2. 將公鑰上傳到 Server `cat ~/.ssh/id_rsa.pub` --- ### Flow 介紹 --- ![](https://i.imgur.com/DyxuQls.jpg =650x550) --- ## Q&A
{"metaMigratedAt":"2023-06-15T17:52:44.479Z","metaMigratedFrom":"YAML","title":"快速上手 Git","breaks":true,"contributors":"[{\"id\":\"5344d19f-c240-4fe4-bd63-c70af739e6c4\",\"add\":6045,\"del\":794}]"}
    644 views