時光機

的崛起

版本控制軟體--git

版本控制軟體

為何版本控制

方便管理軟體版本 (廢話)

  • 清楚知道有那些改變、由誰改變
  • 功能開發、除錯
  • 常見的版本控制軟體
    • git
    • SVN
    • 其他

由 Git bash 切入

  • 下載點
  • 簡單的操作功能 (後面介紹)

Command Line Interface

命令行介面

  • 長這樣
  • 只有文字操作
  • git bash 也是一種文字介面

CLI vs. GUI

文字 vs. 圖形化

  • 圖形化直覺、易懂
  • 文字命令精準、好控制
  • 各有好壞,學程式不免需要用 CLI

GIT BASH

一種 CLI

  • 圖形化介面能做的,CLI 都能做
  • 簡單命令格式
g++ c560.cpp -o c560.out

命令本體

是一支程式

option 是看需求

加入的參數

通常以 - 和 -- 開頭

會有數個

參數

常用的指令

  • 參考:鳥哥 Linux 檔案及目錄管理
  • 目錄
    • / 是根目錄
    • . 是當前目錄
    • .. 是上一層目錄
  • 相關操作
    • pwd:所在目錄
    • ls:顯示目錄的檔案
    • cd:在目錄之間移動

常用的指令

  • git bash 不一定有支援
  • 目錄管理:mkdir、rmdir
  • 檔案管理:cp、mv、rm
  • 檔案檢閱:cat、nl、more、less、head、tail
  • 強力工具
    • 參考:鳥哥 10.611 章
    • grep、sort、uniq、wc
    • printf、sed、awk

Git 指令操作

Repository

  • 簡稱 repo
  • 每個版本控制的單位
  • 可以想像是一個專案

GIT 核心概念

檔案的狀態

相關指令

  • git init:初始化 git repo
  • git status:查看 stage 的狀況
  • git add <file>:stage 檔案
  • git commit:存取快照,建立新結點
    • 建立 Commit 通常是總結修改的內容,以利日後開發
    • 預設編輯器

基本 Vim 操作

  • 指令模式:輸入指令
    • :w 存檔
    • :q 退出
    • :wq 存檔 + 退出
    • :q! 不存檔強制退出
  • 插入模式
    • 指令模式按 i 之後可以進入插入模式,編輯檔案內容
    • <ESC> 跳出插入模式,回指令模式

git 分支系統

  • git 可以有很多分支
    • 隨意合併、各自修改
    • 當前分支會用 HEAD 指向
  • 預設分支名為 master
    • 因此預設 HEAD 會指向 master 所在 commit

分支系統常見指令

為什麼檔案管理要那麼麻煩?

當有十幾人跟你一起寫同一份 code 就知道了

一些好用的指令

  • 取縮寫 alias
  • .gitignore 和 .gitkeep 檔案
  • git add -i:互動式
  • git checkout -- <file>:SL大法,回到上次commit的狀態
  • git log:查看過去 commit 紀錄

Github 教學

多人玩 git 才好玩

使用 github 前的設定

// 在 github 上的 username
git config --global user.name "username"
// 在 github 上的 email
git config --global user.email "username@email.com"
// 設定預設編輯器
git config --global core.editor "vim"
  • 其他可以設定的項目:查文件

遠端概念

github 上靜態網頁顯示

權限

其他 git 技巧

  • git commit --amend:修改前一次 commit
  • git commit --squash:更動 commit
  • git rebase:把兩條分支「整併」成一條
  • github 上不要有更動 commit 的行為,不然會炸裂
    • git blame:抓兇手

對前面觀念熟悉、正確的習慣再來學

作業

END

Made with Slides.com