Git 版本控制

林弘祥

2019 / 09 / 19

在課程開始前..

先來下載今天要用的程式

首先先來說個關於合作小故事...

大家應該都有被迫跟人一起做

期末專題、 分組報告、 影音剪輯...的經驗吧

現在假設你們要做一個專案

然後你不幸要負責改code

老闆 / 導師 / 夥伴 / 自己

再加(改)個_____好了

: 這個不好再改個_____好了

: 再稍微改個_____好了

......

兩個月後...沒人知道啥是啥了

但...出Bug還是你要負責...

又或者你們要做合作一個專案

分工各做一部份 決定用___來共同存放資料

一切似乎都是如此的美好...

直到截止日逐步逼近......

當大家開始把各自的版本上傳時

誰他X的改了我的碼!

我的比較好!

我三小時的努力...( ºΔº )








!

PK






!

這一切都是____的陰謀啦!

誰寫的!這結果不對啊!Σ(;゚д゚)

版本控制

透過前些的討論

想必大家都對版本控制有些想法了吧

特性

  • 追蹤文件的改動
  • 回復/比較 先前版本
  • 同步/合併 開發版本

集中式版本控制

分散式版本控制

Git

分散式版本控制

安裝

都一直點"continue"就對了

先來設定環境

git config --global user.email "YourEmail\(OwO)"
git config --global user.name "YourName\(OwO)"
git config --global color.ui true

縮寫別問我為啥

git config --global alias.co commit
git config --global alias.st status
git config --global alias.lg "log --color --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"
有問題的話...就問git吧!!!

Git內置幫助

git help "command"
讓我們開始愉快的寫Bug吧

練習

大家先來開一個資料夾

mkdir OwO

初始化

git init

目前大家的資料夾應該看起來像醬

讓我們先隨便新增一個檔案

touch README.md

查看目前版本變動/過去版本演進

git status // -> git st
git log // -> git lg

天啊...怎麼爆炸了...我做錯了甚麼

git的邏輯
想要git幫你追蹤版本變動

就要先告訴git要追蹤那些檔案阿!!!

git add README.md
提交版本紀錄
git commit -m "init" README.md

再來查看一次

練習時間

自己新增or修改些檔案, 試著自己提交版本

git add FILENAME
git commit -m "MGS" FILENAME

比較版本變化

git diff HEAD^

git diff ...

git diff ...

查看特定版本

git checkout key

回復特定版本

git revert key file
git reset key file
雜項
git rm file // 取消追蹤
git mv oldfile newfile // 更換檔案名稱/位置

預告

下周教分支(branch)跟玩GitHub