安裝
Installing on Mac
通過(guò) Homerew 安裝
brew install git
其它平臺(tái)安裝可以參考:Installing Git
創(chuàng)建新倉(cāng)庫(kù)
創(chuàng)建新文件夾,進(jìn)入,然后執(zhí)行:
git init
檢出倉(cāng)庫(kù)
// 從本地
git clone /path/to/repository
// 遠(yuǎn)端服務(wù)器
git clone username@host:/path/to/repository
工作流
本地倉(cāng)庫(kù)由 git 維護(hù)的三棵 “樹(shù)” 組成。分別是:
-
工作目錄
:持有實(shí)際文件 -
緩存區(qū)
: 它像個(gè)緩存區(qū)域,臨時(shí)保存你的改動(dòng) -
HEAD
指向你最近一次提交后的結(jié)果
忽略某些文件時(shí),需要編寫(xiě) .gitignore
,比如:
/node_modules
/public/storage
/public/hot
/storage/*.key
/vendor
/.idea
Homestead.json
Homestead.yaml
.env
composer.phar
添加與提交
查看狀態(tài)
git status
添加到暫存區(qū)
// 添加指定文件
git add <filename>
// 添加所有文件
git add *
// 添加當(dāng)前目錄的所有文件
git add .
提交暫存的區(qū)內(nèi)容,納入版本管理
git commit -m "代碼提交信息"
查看提交紀(jì)錄
// 顯示所有紀(jì)錄
git log
// 通過(guò)簡(jiǎn)短的方式顯示
git log --oneline
推送改動(dòng)
在提交到本地倉(cāng)庫(kù)的 HEAD
中后,可以將這些改動(dòng)提交到遠(yuǎn)端倉(cāng)庫(kù):
git push origin master
master
你的遠(yuǎn)端分支,當(dāng)然可以任何分支
如果還有連接到某個(gè)遠(yuǎn)程服務(wù)器倉(cāng)庫(kù),可以使用如下命令添加:
git remote add origin <server>
分支
分支是用來(lái)將特性開(kāi)發(fā)絕緣開(kāi)來(lái)的。在你創(chuàng)建倉(cāng)庫(kù)的時(shí)候,master
是 “默認(rèn)的”。通常做法是在其他分支上進(jìn)行開(kāi)發(fā),完成后再將它們合并到主分支上。
創(chuàng)建一個(gè)分支并切換到該分支
git checkout -b feature_x
// 你在此分支上進(jìn)行開(kāi)發(fā)...
完成工作切換回 master
分支
git checkout master
刪除不需要的分支
git branch -d feature_x
除非你將分支推送到遠(yuǎn)端倉(cāng)庫(kù),不然該分支就是 不為他人所見(jiàn)的:
git push origin <branch>
更新與合并
-
pull
:更新你的本地倉(cāng)庫(kù)至最新改動(dòng)
git pull
將會(huì)在你的工作目錄中
獲取(fetch)
并合并(merge)
遠(yuǎn)端的改動(dòng)
-
merge
:合并其他分支到你的當(dāng)前分支(例如master
):
git merge <branch>
無(wú)論是 pull
還是 merge
操作,git
都會(huì)嘗試去自動(dòng)合并改動(dòng)。但自動(dòng)合并并非次次都能成功,并可能導(dǎo)致 沖突(conflicts)
。 這時(shí)候就需要你修改這些文件來(lái)人肉合并這些 沖突(conflicts)
。
改完之后,你需要執(zhí)行如下命令以將它們標(biāo)記為合并成功
git add <filename>
然后將合并的改動(dòng)提交到版本控制
git commit -m “fix 沖突”
當(dāng)然,在合并改動(dòng)之前,也可以使用如下命令查看兩者的不同之處:
git diff <source_branch> <target_branch>
替換本地改動(dòng)
如果你對(duì)文件有錯(cuò)誤修改,可以實(shí)用命令替換掉本地改動(dòng)
git checkout -- <filename>
此命令會(huì)使用
HEAD
中的最新內(nèi)容替換掉你的工作目錄中的文件。已添加到緩存區(qū)的改動(dòng),以及新文件,都不受影響。
git checkout -- <filename>
命令中的--
很重要,沒(méi)有--
,就變成了 “切換到另一個(gè)分支” 的命令
回退所有內(nèi)容到上一個(gè)版本
git reset HEAD^
回退到某個(gè)特定的版本
git reset c7bf4e542fe368a1c1f558418fa19ad748480e80
將本地的代碼回退到遠(yuǎn)程的一樣
git reset --hard origin/master
標(biāo)簽
軟件發(fā)布時(shí)創(chuàng)建標(biāo)簽,是被推薦的。這是個(gè)舊有概念,在 SVN
中也有。可以執(zhí)行如下命令以創(chuàng)建一個(gè)叫做 1.0.0
的標(biāo)簽:
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff
是你想要標(biāo)記的提交 ID 的前10
位字符。
使用如下命令獲取提交 ID:
git log
你也可以用該提交 ID 的少一些的前幾位,只要它是唯一的。