程式導師實驗計畫 [第一週] Git 超新手入門
版本控制是什麼
以前在做報告時,如果想把每一階段的版本都存下來,就會幫每個階段的檔案取很多不同的名字,這就是一種版本控制
1 | 畢業專題.doc |
一旦版本越來越多,就會越來越混亂,這時候我們能夠使用工具來幫我們做版本控制,也就是我們使用Git
的原因。
團隊的版本控制
版本控制就像遊戲的存檔,如果今天是存檔到第三關,大家都能從第三關開始玩,分別進行不同
的路線,最後在把各自的紀錄合在一起。
假設今天從穩定版進行開發,分別開發兩個不同的功能,上線的穩定版的產品臨時有 bug 需要修復,又從穩定版進行bug fix
,Git
可以讓這三個路線各自完成之後,再融合進化成一個新的穩定版。
Git
實際上幫我們做了什麼
假設今天有一個版本叫做v1
我們對v1
做了一些更動,git 就幫我們新增一份檔案存起來,叫做v2
那如果有檔案不想要做版本控制,就把該檔案移出版本控制的資料夾。
例如不想將test
檔案加入版控,就將它移出資料夾。
當我們在多人協作的時候會有同時以同個版本進行開發的情況,假設今天兩個人都對v2
版進行開發,要怎麼保證兩人的版本都不會衝突?
因此版號就不能用v1
、v2
這樣的流水號,就變成這樣:
v1
、v2
都變成了一段亂碼
但是這樣就會遇到一些問題,都是亂碼的話要怎麼知道這些版本的先後順序?
所以就開一個檔案來存版號的順序
接下來還會有一個問題,隨時都想知道最新的版本是哪個該怎麼辦,所以就再開一個檔案裡面永遠都會放最新的版本
這些就是Git
再幫我們做的事情。
總結
- 需要新版本:開一個資料夾
- 不想加入版本控制:不要加入資料夾
- 避免版本號衝突:用看似亂碼的東西當作資料夾名稱
- 知道最新版本:用一個檔案來存
安裝Git
mac
版本可以照官方文件完成安裝: Getting Started - Installing Git
Git 常用指令筆記
git init
:初始化數據庫
當下了這個指令之後,Git
就會知道我們要對這個檔案夾做版本控制,並初始化這個資料夾的數據庫,接下來就可以針對這個檔案夾做更多Git
的指令。
在桌面開一個測試用的檔案夾folder
並執行git init
,會發現folder
資料夾底下多一個.git
的隱藏資料夾
mac 的預設設定是看不到隱藏檔案的。三招讓 Mac 顯示出隱藏檔案
git status
:查詢當前狀態
就會跟你說目前版本的狀態,有沒有什麼更動
git add .
:將檔案加入到索引
在folder
資料夾底下新增一個newfile
檔案,使用git status
查看狀態,會看到有新的變更。
使用git add .
將檔案加入到索引,再用git status
,查看狀態,會看到紅字變成綠字了,代表更動內容已經加入版本控制
如果反悔了想要取消某個檔案的的版本控制
1 | git rm --cached <file> |
git commit -m "修改內容"
:將索引檔案變成一個更新commit
當我們將檔案加入到版本控制之後,就可以提交這次的進度變成一個commit
1 | git commit -m <commit message> # 提交訊息 |
這邊的commit message
我就寫add newFile
git commit -am
: add & commit
提交 commit 之前需要先 add,也可以合在一起寫
1 | git commit -am "commit message" |
需要注意的是,-am
只適用已修改或刪除的檔案,如果是新增加的檔案的話,還是需要先執行add .
再提交commit
。
官方文件說明:
1 | -a |
可以參考文件 Git 官方文件
git log
: 觀察commit
歷史紀錄
當我們有多筆 commit 可以透過git commit
來看紀錄
可以看到的資訊:
- commit : 版本號
- Author : 提交的作者是誰
- Date : 什麼時候提交的
commit
- 提交的內容
也有額外的參數可以使用,能夠看到不同的格式。
git log --oneline
: 可以看到版本號簡寫成了完整版本號的前 7 碼,以及更改的內容。
git branch
: 使用分支
- 查看分支
1 | git branch |
- 新增分支
1 | git branch <分支名稱> |
- 修改分支名稱
1 | git branch <分支名稱>> <新的分支名稱> |
- 刪除分支
1 | git branch -d <分支名稱> |
如果要刪除的分支還沒有完成合併,git 會有提示,例如:
1 | git branch -d 分支名 |
再執行git branch -D 分支名
就可以成功刪除。
git checkout
: 版本切換
- 切換分支
1 | git checkout <分支名> |
- 如果想新創建一個名為
feature
的分支並且切換過去。
1 | git checkout -b feature |
- 當完成該功能想要回到最新的
mster
版本。
1 | git checkout master |
.gitignore
: 讓 git 忽略不想要被版本控制的檔案
每次要提交commit
前都要決定哪些檔案要add
到版本控制的暫存區,但是如果執行git add .
又會將不想被版本控制的檔案一併加入到版本控制中,這時候就可以新增一個.gitignore 檔來忽略不想被版本控制的檔案。
- 新增.gitignore 檔
1 | touch .gitignore |
- 使用
vim
進入.gitignore
中
1 | vim .gitignore |
- 按
i
進入編輯模式,並寫上想忽略的檔案名稱
:wq
儲存並離開。
- 使用
cat .gitignore
查看內容有沒有新增。
接著在vim
文字編輯器中按下i
進入編輯模式,寫入想要被忽略的檔案名稱,按ESC
退出編輯模式,輸入:wq
儲存並離開。
總結
git init
: 初始化數據庫git status
: 查看當前狀態git add .
: 將所有檔案加進索引(不包含被忽略的檔案)git commit -m "commit message"
: 提交commit
git checkout <版本>
為你自己學 Git
受益良多的大補帖,推推!!
以上就是這篇的筆記內容