Top Banner
Git & Github 基礎教學
28

Git&Github Tutorial

Jun 16, 2015

Download

Software

Dean Su

簡單的Git指令介紹以及Github基本功能介紹
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Git&Github Tutorial

Git & Github基礎教學 蘇⿍鼎⽂文

Page 2: Git&Github Tutorial

Git

• 版本控制⼯工具,採⽤用分布式版本庫(與CVS、Subversion不同)

• 永遠不再弄丟你們的程式碼

• 每個⼈人都可以了解修改過程(包跨未來的學弟妹)

Page 3: Git&Github Tutorial

好處• 可追蹤、回復每個⼈人所做過的網⾴頁更動

• ⽤用Branch確保網⾴頁處在Deployable的狀態

• 發佈issue記錄Bug問題、未來⺫⽬目標

• 可以將⽂文件寫在Wiki上⾯面

• 可以⽤用在備份MySql資料庫的部分

• 只需要將repository傳給下⼀一個組別即可完成交接

Page 4: Git&Github Tutorial

Install

• 直接安裝 GitHub for Windows ⼯工具,

• 內建⼀一個以 Windows PowerShell 為主的 Git Shell 執⾏行環境,已內建 Git for Windows ⼯工具

• 或你想在CMD直接下指令的話可以安裝msysGit

Page 5: Git&Github Tutorial

Git Basic• init & add

• Commit

• Branch

• Merge

• Reset

Page 6: Git&Github Tutorial

新增local repository

• git init

• 產⽣生⼀一個.git隱藏資料夾 所有版本記錄內容都在裡⾯面(勿刪!!)

Page 7: Git&Github Tutorial

新增檔案• Git 會找到資料夾所有的檔案,但你要告訴他你想追蹤更動的檔案

• EX: Git add xxx.html

• 當你有不想被追蹤的檔案格式或資料夾的時候(.JPG、.xml)新增⼀一個.gitignore檔案裡寫下你不想要被追蹤的部分

• EX: /bin .jpg

Page 8: Git&Github Tutorial

Commit

• 在已追蹤的檔案產⽣生了更動的時候,需要將庚動作⼀一次提交(Commit),提交過後檔案才會被記錄下來

• git commit -m “第⼀一次提交” commit 8044c7b9c6ed1907836b546811d560679caf0ae6 Author: de <dfd> Date: Thu Jun 19 16:27:46 2014 +0800

Page 9: Git&Github Tutorial

Commit Example I

Page 10: Git&Github Tutorial

Commit Example II

• After git Commit, C2變成最新的Commit

• Master分⽀支指向C2

Page 11: Git&Github Tutorial

Tips

• 做⼀一個⼩小功能修改就建⽴立版本,這樣才容易追蹤變更

• 千萬不要累積⼀一⼤大堆修改後才建⽴立⼀一個「⼤大版本」

• 有邏輯、有順序的修正功能,確保相關的版本修正可以按順序提交(commit),這樣才便於追蹤

Page 12: Git&Github Tutorial

Branch

• Branch 很好⽤用,開 Branch 不⽤用錢

• git branch <new_branch_name>

• git checkout <branch_name> (注意到如果你有檔案修改了卻還沒 commit,會不能切換 branch solution git stash ;git stash pop)

Page 13: Git&Github Tutorial

Tips• ⺟母Branch永遠是 “master”<-當作最穩定的版本

• 帶有實驗性質的變更,例如想改寫新的演算法、重構程式碼等

• 新功能 feature 開發

• Bug fixes,你可能需要做些實驗才知道到底怎麼修。等 Bugs 修正後,在透過「合併」的⽅方式將 bugfix 分⽀支上的變更重新套⽤用到 master 上⾯面

Page 14: Git&Github Tutorial

Merge• 兩個分⽀支合併成⼀一個。

• git merge [另⼀一個分⽀支]

• 若是無任何衝突,會⾃自動產⽣生⼀一個merge commit

• ⼿手動將另⼀一個分⽀支給移除,這樣才符合「兩個分⽀支合併成⼀一個」的概念。

Page 15: Git&Github Tutorial

衝突發⽣生

• 當⽀支線合併時有在同個地⽅方卻是不同的內容的時候就會產⽣生衝突

• 從<<<<<<< HEAD 到 ======= 的內容代表 HEAD 裡 a.txt 的內容。註:HEAD 代表當前 master 分⽀支的最新版。

• 從 ======= 到 >>>>>>> hotfixes 的內容,代表 hotfixes 分⽀支裡 a.txt 的內容

• 這時就需要⼈人⼯工檢視⼿手動把這些衝突的檔案改好

Page 16: Git&Github Tutorial

⼈人⾮非聖賢 孰能無過?• Git 提供更多「修正版本記錄」的機制,讓你在「分享」版本給其他⼈人的時候,能夠預先做個整理。讓版本提交到遠端伺服器上的時候,就已經是完美的版本狀態。

• 不⼩小⼼心執⾏行了 git commit 動作,但還有些檔案忘了加進去 (git add [filepath]) 或只是紀錄訊息寫錯,想重新補上的話,直接執⾏行 git commit --amend 即可

• git reset --hard “HEAD^" HEAD 指向的位址改到了前⼀一個版本 ( HEAD^ ) 最新版本就會被刪除了[被刪除的提交還是存在 git reset --hard ORIG_HEAD]就⾏行了

·•當你「分享」特定分支給其他人之後,這些「已分享」的版本歷史紀錄就別再改了!!

Page 17: Git&Github Tutorial

Github

• 全世界最多⼈人採⽤用的 Git 線上管理平台

• 包含了完整的 Git 遠端儲存庫實作,還有完整的議題追蹤機制與報表

• 剛剛所講的指令Github都已經提供圖形化界⾯面來操作

• 下載:https://windows.github.com

Page 18: Git&Github Tutorial
Page 19: Git&Github Tutorial

Remote & Local

Remote [Github]

Coworker Coworker Server

push/pull(Sync)

clone

Page 20: Git&Github Tutorial

Issue Tracking

• ⼈人的腦袋是有限度的,網站開發者也是⼀一樣,事情⼀一多就會亂掉

• 給開發者下⼀一步的動作,幫助開發者記住他們接下來要做的事情

• 到 issue tracker 上⾯面回報您希望開發者做的事情-諸如修正網站問題,或是希望網站有新功能

Page 21: Git&Github Tutorial

Issue Tracking

Page 22: Git&Github Tutorial
Page 23: Git&Github Tutorial

• 標題,務必取⼀一個讓⼈人⼀一⺫⽬目了然的標題。

• 下⾯面是內容,如果是網站有問題,請務必告訴:您使⽤用哪種瀏覽器?您的使⽤用環境為何?怎樣的步驟可以看到這個問題?這些描述有助於幫助找到問題點。如果有圖⽚片更好,可以點選底下的「choose an image」上傳圖⽚片。

Page 24: Git&Github Tutorial

• issue可隨時編輯

• 每個issue都有編號,可⽤用#標⽰示

Page 25: Git&Github Tutorial

如果問題解決了,就點選「Close」這個選項,把問題給關閉吧!

Page 26: Git&Github Tutorial

⽂文件管理• 希望你們將⽂文件寫在Github Wiki上⾯面,並且維持在最新版本上,EX:

• 系統操作流程

• 功能操作、規格說明

• 伺服器規格(適⽤用的PHP、APACHE、MYSQL版本)

Page 27: Git&Github Tutorial

Wiki

Page 28: Git&Github Tutorial

Git 教學資源

• http://pcottle.github.io/learnGitBranching/

• http://blog.miniasp.com/post/2013/08/19/Learning-Git-Part-1-Installation-Options-Tool-Usage-on-Local.aspx

• http://blog.miniasp.com/post/2013/11/04/Learning-Git-Part-2-Master-Git-in-30-days.aspx