SlideShare a Scribd company logo
Git 入門與實作
Presentor: YiPo
Date: 2014-12-25, 26
1
關於此課程
• 共 2 + 1 天
• 現場操作 + 能動的例子
• 要做 回家作業
• 回答 昨日/作業 疑問
2
3
安裝
config
init
Staging Area
commit
.gitignore
push
clone
branch
merge (Conflict)
push & pull
s
1 2
s
1 2
s
1
Day 1 Day 2
1
Git
• 源自 Linux 的 Command-line 程式
– 比較難入門
– 不怕,有各式圖形介面。
– 但是,整合 有賺有賠 有完整有缺漏,
仍須以 Command-line 為準。
• 這裡以圖形操作為主,指令為輔。
4
Git GUIs
5
Linux Windows Mac
gitg
tig
Git Extensions
SourceTree
Tower
01
安裝 Git Extentions
Command-line
Debian: apt-get install git
Windows: msysgit
http://git-scm.com/download/win
Git Extensions
1. 需 .NET Framework 4.0
(Windows 7 於 Windows Update 勾選即可)
2. Google “git ext” 就能找到載點
http://sourceforge.net/projects/gitextensions/
3. 某一步要勾些東西。
4. 其他就,下一步…
6
7
8
9
02
設定 name 與 email
對應指令
git config --global user.name <name>
git config --global user.email <email>
操作
1. 填填
Git Extensions 其他設定,按 Repair。
10
Config – 三個地方
• 每個專案,可以套用不同設定。
• 自己使用,沒納入版本控制,不影響別人。
11
參數 作用範圍 Linux Windows
--system 整個系統 /etc/gitconfig C:Program FilesGitetcgitconfig
--global 各別使用者 ~/.gitconfig C:UserYiPo.gitconfig
(不加參數) 各別專案 .git/config (同左)
Config – core.autocrlf
幫你處理 Linux 與 Windows 間,換行方式的轉換。
12
core.autocrlf Checkout Commit
true Windows   Linux
input -  Linux
false - -
Git Extensions 概觀
分支圖
為何修改?
是誰?何時?
分支/標籤
改了哪些檔案?
diff
13
Repository & Working Directory
Working Directoty
(工作目錄)
Repository
(版本庫) .git/ (隱藏資料夾)
14
版本庫哪來?
• 建立 (Init) 全新的版本庫
– 準備好你的資料夾
– 另外有一種 純的 (Bare) 版本庫
• 無工作目錄,供伺服器用,通常就命名為 “FooBar.git”。
• 複製 (Clone) 現有的版本庫
– 來源可以是 本機目錄、http、ssh、git。
明天就有 現有的版本庫 可以練習了,今天先建立全新的。
15
任務:The robot class
一維空間上移動的機器人
 .where() 回傳機器人的位置
 .forward() 向前進
 .backward() 往後退
16
03
建立版本庫
對應指令
git init [--bare]
操作
1. 我們準備一個 VC++ Empty Project
1. File > New > Project…
2. Visual C++ > General > Empty Project
2. 資料夾上按右鍵。
17
Staging Area
不要再爭辯 Staging Area 的好壞啦!
• Staging Area 裡保存的東西,才會被 Commit。
– 就當作是 SVN 裡,給檔案打勾勾。
– 只是 Staging Area 它記錄的是個狀態。
Working
Directory
Staging
Area Repositoryadd commit
18
04
操作 Staging Area
對應指令
git add, git reset,
git checkout, git mv, git rm, …
操作
1. 點點滑鼠
Repository
add
Working
Directory
Staging
Area
19
05
Commit!
對應指令
git commit
操作
1. 輸入 Commit 訊息
2. 按下 Commit
• 什麼是 Amend?
– 上個 Commit 忘記東西的時候用,
– 不要 對 已分享出去的 Commit 這麼做。
20
.gitignore
• 下列物品不要進版本庫:
– 原始碼就能產生的檔案 (.o, .exe, .dll, …)
– 暫存檔 (.tmp)、日誌檔 (.log)
– 個人設定、密碼
• 編輯檔案 “.gitignore” ,一併納入版本控制。
• 各種現成的 .gitignore 設定:
github/gitignore (https://github.com/github/gitignore)
21
06
設定 .gitignore
舉例來說…
任何目錄下的檔案 *.tmp
任何目錄下的目錄 Debug/
根目錄下的檔案 /*.log
操作
1. 編輯 .gitignore
2. 納入版本控制
22
先寫個殼
• main.cpp
– 能夠選擇指令 (1, 2, 3) 的 while 迴圈
• robot.h
– .where() 先直接 return 0; 吧
– 省略 robot.cpp
23
Push & Fetch/Pull
分散式 嘛 人人平等。
別人的版本庫:remote
• Push  remote
branch to branch, 權限需要
• Fetch  remote
成為 “remote/branch”
• Pull = Fetch + Merge
push
pull
24
Fetch vs Pull – nothing commit yet
Fetch
只抓資料下來
Pull
還做了 Merge
origin/master
master
origin/master master
25
Fetch vs Pull – something commited
Fetch
只抓資料下來
Pull
還做了 Merge
origin/master master
master
origin/master
能不能像 SVN 那樣
接著在後面 commit?
 Rebase 26
Merge vs Rebase
Merge Rebase
27
master
origin/master
master
origin/master
07
Push
對應指令
git remote
git push <remote> <branch>
操作
1. 新增遠端版本庫
• Repository > Remote Repositories…
• 取個名字、填入路徑
2. 按 Push
28
DAY 2
Git 入門與實作
29
Day 1 Questions
• Stage 個別檔案失敗…
– 應該要可以
• 我 Push 成功了嗎?
– 相信它,看 remote/branch 便是。
– 仍不放心,可以 Browse 純版本庫。
– 往後用 GitLab Server,有網頁可看。
• 為什麼有兩個 master?
– 應該是 Git Extensions 的問題
• 子錄目裡還可以有 .gitignore 嗎?可以
– 外面的會影響裡面的
30
防止沒人發問的一頁
• 單獨 checkout 個別檔案、個別子目錄?不能
– 應該視專案為完整個體。
• 記錄空資料夾?不能
– .gitkeep 或 .gitignore。
• 曾經納入過版本庫的檔案,
就再也 .gitignore 不掉了?對,很怪…
31
任務:The robot class
master
一維空間上移動的機器人
 .where() 問位置
 .forward() 向前進
 .backward() 往後退
feature
還要能夠取名字
 robot(str) 取名字
 .who() 問名字
name
32
08
Clone
對應指令
git clone <path> [dir]
操作
1. 在資料夾上按右鍵
昨天尚未練習的 Clone
別急著刪掉昨天的版本庫,
晚點還可試試 Pull。
33
09
操作 Branch
對應指令
git branch <branch>
git checkout [-b] <branch>
操作
1. 在 Commit 上按右鍵
34
Coding Dojo
開個 feature branch,並完成各自功能。
35
Merge
• 於所在分支,做 Commit,將指定分支納入。
– 該切到哪個分支,指定哪個分支,要弄對。
• 萬一 Conflict !?
1. 處理 Conflict
2. 丟進 Staging Area 並 Commit
36
<<<<<<<
x=func();
=======
func(3.14);
>>>>>>>
x=func(3.14)
10
Merge & 解 Conflict
對應指令
git merge <branch>
操作
1. 切換至對的 Branch
2. Commands > Merge brances…
(↓ 若發生 Conflict)
3. 處理 Conflict
4. 丟進 Staging Area 並 Commit
37
11
Push & Pull
對應指令
git pull
操作
1. 按 綠色向下按鈕
昨天尚未練習的 Pull
先在 版本庫2 Push;
再到 版本庫1 Pull。
38
s
1 2
延伸閱讀
• Git Reference (http://gitref.org/)
– 指令快速上手
• Pro Git (http://git-scm.com/book/)
– 完整詳盡的免費電子書
• git ready (http://gitready.com/)
– 單元式介紹
• Git 版本控制系統 (https://ihower.tw/git/)
– ihower 寫的書
39
40

More Related Content

PPTX
工程師必備第一工具 - Git
PDF
初心者 Git 上手攻略
PDF
連哈秋都懂的Git教學
PDF
Git 版本控制 (使用教學)
PPTX
Visual Studio 2015 與 Git 開發實戰
PPTX
Git基礎介紹
PDF
版本控制 使用Git & git hub
PDF
Git Tutorial 教學
工程師必備第一工具 - Git
初心者 Git 上手攻略
連哈秋都懂的Git教學
Git 版本控制 (使用教學)
Visual Studio 2015 與 Git 開發實戰
Git基礎介紹
版本控制 使用Git & git hub
Git Tutorial 教學

What's hot (20)

PPTX
Mercurial簡介與教學
PDF
Git and Github basic with SourceTree
PDF
Git與source tree 基礎教學
PPTX
Git & Sourcetree 介紹
PDF
寫給大家的 Git 教學
PDF
幸福快樂的完美結局
PDF
Introduction to git
PPTX
git merge 與 rebase 的觀念與實務應用
PDF
Git in a nutshell
PDF
A successful git branching model 導讀
PDF
Git由超淺入超深
PDF
Git tutorial for windows user (給 Windows user 的 Git 教學)
PDF
Git 版本控制系統 -- 從微觀到宏觀
PDF
Xcode 的 git 版本管理
PDF
Learning to Use Git | WeiYuan
PPTX
電子內容管理 使用Git 與 github 1
PDF
Git 入门实战
PPTX
開發用不著打一架 - 分散式版本控制 Git
PDF
git, repo, Gerrit 基礎教學
PPTX
Git 使用介绍
Mercurial簡介與教學
Git and Github basic with SourceTree
Git與source tree 基礎教學
Git & Sourcetree 介紹
寫給大家的 Git 教學
幸福快樂的完美結局
Introduction to git
git merge 與 rebase 的觀念與實務應用
Git in a nutshell
A successful git branching model 導讀
Git由超淺入超深
Git tutorial for windows user (給 Windows user 的 Git 教學)
Git 版本控制系統 -- 從微觀到宏觀
Xcode 的 git 版本管理
Learning to Use Git | WeiYuan
電子內容管理 使用Git 與 github 1
Git 入门实战
開發用不著打一架 - 分散式版本控制 Git
git, repo, Gerrit 基礎教學
Git 使用介绍
Ad

Viewers also liked (6)

PPTX
Git intro
PPTX
Batch 溫故/知新
PDF
TED Talks 說話的力量-18 十六種創新的演講技巧
PDF
Git 實務圖解
PPTX
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップ
PDF
Git 經驗分享
Git intro
Batch 溫故/知新
TED Talks 說話的力量-18 十六種創新的演講技巧
Git 實務圖解
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップ
Git 經驗分享
Ad

Similar to Git 入門與實作 (20)

PDF
Git Tutorial
PPT
Git 超簡單學習懶人包(軟體程式版本控管系統)
PDF
COSCUP 2015 開源之道-Git工作坊教學簡報
ODP
Git 程式碼版本控制軟體介紹
PPTX
Git原理与实战 201607
PPT
Learn git
PPTX
Git introduction
PDF
First meetingwithgit
PPTX
Github簡介
PPTX
Git flow 與團隊合作
PPTX
20170510 git 懶人包
PDF
容器與 Gitlab CI 應用
PPTX
Git &amp; git hub v1.2
PPTX
Git Essence Tutorial
PDF
CICD Workshop 20180922
PDF
ODP
Git 教學
PPTX
Git and git hub
PDF
Submodule && subtree
PPTX
Git 实战
Git Tutorial
Git 超簡單學習懶人包(軟體程式版本控管系統)
COSCUP 2015 開源之道-Git工作坊教學簡報
Git 程式碼版本控制軟體介紹
Git原理与实战 201607
Learn git
Git introduction
First meetingwithgit
Github簡介
Git flow 與團隊合作
20170510 git 懶人包
容器與 Gitlab CI 應用
Git &amp; git hub v1.2
Git Essence Tutorial
CICD Workshop 20180922
Git 教學
Git and git hub
Submodule && subtree
Git 实战

Git 入門與實作