git安裝與配置用戶(hù)
window安裝git
可以去git官方網(wǎng)站上下載
在完成安裝后還需要配置:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
因?yàn)镚it是分布式版本控制系統(tǒng),所以,每臺(tái)機(jī)器都必須配置:名字和Email
版本庫(kù)管理
git init
:通過(guò)git init命令把一個(gè)目錄變成Git可以管理的倉(cāng)庫(kù)
git add file
:把文件添加到倉(cāng)庫(kù)暫存區(qū)
git commit -m "message"
:把文件提交到倉(cāng)庫(kù)分支
git status
:查看倉(cāng)庫(kù)當(dāng)前狀態(tài)
git log
:顯示提交日志,如果嫌輸出信息太多姚建,看得眼花繚亂的,可以試試加上--pretty=oneline
參數(shù)
版本回退
首先,Git必須知道當(dāng)前版本是哪個(gè)版本僵刮,在Git中,用HEAD
表示當(dāng)前版本,上一個(gè)版本就是HEAD^
,當(dāng)然往上100個(gè)版本寫(xiě)100個(gè)^比較容易數(shù)不過(guò)來(lái)鹦牛,所以寫(xiě)成HEAD~100
搞糕。
git reset --hard HEAD^
:git reset
用于版本回退。
git reflog
:用來(lái)記錄你的每一次命令
git diff HEAD -- readme.txt
:命令可以查看工作區(qū)和版本庫(kù)里面最新版本的區(qū)別
git checkout -- file
意思就是能岩,把readme.txt文件在工作區(qū)的修改全部撤銷(xiāo)寞宫,這里有兩種情況:
- 一種是readme.txt自修改后還沒(méi)有被放到暫存區(qū),現(xiàn)在拉鹃,撤銷(xiāo)修改就回到和版本庫(kù)一模一樣的狀態(tài)辈赋;
- 一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改膏燕,現(xiàn)在钥屈,撤銷(xiāo)修改就回到添加到暫存區(qū)后的狀態(tài)。
總之坝辫,就是讓這個(gè)文件回到最近一次git commit或git add時(shí)的狀態(tài)篷就。
要從版本庫(kù)中刪除該文件,那就用命令git rm file
刪掉近忙,并且git commit
git checkout -- file
其實(shí)是用版本庫(kù)里的版本替換工作區(qū)的版本竭业,無(wú)論工作區(qū)是修改還是刪除智润,都可以“一鍵還原”。
添加遠(yuǎn)程庫(kù)
git remote add origin git@github.com:sunyiwei/learngit.git
:添加遠(yuǎn)程庫(kù)
git push -u origin master
:把本地庫(kù)的所有內(nèi)容推送到遠(yuǎn)程庫(kù)上
把本地庫(kù)的內(nèi)容推送到遠(yuǎn)程未辆,用git push命令窟绷,實(shí)際上是把當(dāng)前分支master推送到遠(yuǎn)程。
由于遠(yuǎn)程庫(kù)是空的咐柜,我們第一次推送master分支時(shí)兼蜈,加上了-u參數(shù),Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支拙友,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來(lái)为狸,在以后的推送或者拉取時(shí)就可以簡(jiǎn)化命令。git push origin master
克隆遠(yuǎn)程倉(cāng)庫(kù)
git clone git@github.com:michaelliao/gitskills.git
分支管理
HEAD
嚴(yán)格來(lái)說(shuō)不是指向提交遗契,而是指向master
辐棒,master
才是指向提交的,所以姊途,HEAD
指向的就是當(dāng)前分支涉瘾。
git checkout -b dev
:git checkout命令加上-b參數(shù)表示創(chuàng)建并切換,相當(dāng)于以下兩條命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
用git branch
命令查看當(dāng)前分支:
$ git branch
* dev
master
我們把dev
分支的工作成果合并到master
分支上:
$ git merge dev
Updating d46f35e..b17d20e
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
git merge
命令用于合并指定分支到當(dāng)前分支捷兰。
合并完成后立叛,就可以放心地刪除dev
分支了:
$ git branch -d dev
Deleted branch dev (was b17d20e).
查看分支:git branch
創(chuàng)建分支:git branch <name>
切換分支:git checkout <name>
創(chuàng)建+切換分支:git checkout -b <name>
合并某分支到當(dāng)前分支:git merge <name>
刪除分支:git branch -d <name>
多人協(xié)作
當(dāng)你從遠(yuǎn)程倉(cāng)庫(kù)克隆時(shí),實(shí)際上Git自動(dòng)把本地的maste
r分支和遠(yuǎn)程的master
分支對(duì)應(yīng)起來(lái)了贡茅,并且秘蛇,遠(yuǎn)程倉(cāng)庫(kù)的默認(rèn)名稱(chēng)是origin
。
要查看遠(yuǎn)程庫(kù)的信息顶考,用git remote
:
$ git remote
origin
或者赁还,用git remote -v
顯示更詳細(xì)的信息:
$ git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)
上面顯示了可以抓取和推送的origin
的地址。如果沒(méi)有推送權(quán)限驹沿,就看不到push的地址艘策。
推送分支
推送分支,就是把該分支上的所有本地提交推送到遠(yuǎn)程庫(kù)渊季。推送時(shí)朋蔫,要指定本地分支,這樣却汉,Git就會(huì)把該分支推送到遠(yuǎn)程庫(kù)對(duì)應(yīng)的遠(yuǎn)程分支上:
$ git push origin master
如果要推送其他分支驯妄,比如 dev
,就改成:
$ git push origin dev
標(biāo)簽管理
在Git中打標(biāo)簽非常簡(jiǎn)單合砂,首先青扔,切換到需要打標(biāo)簽的分支上:
$ git branch
* dev
master
$ git checkout master
Switched to branch 'master'
然后,敲命令 git tag <name>
就可以打一個(gè)新標(biāo)簽:
$ git tag v1.0
可以用命令git tag
查看所有標(biāo)簽:
$ git tag
v1.0
在指定提交上打標(biāo)簽:
$ git tag v0.9 f52c633
標(biāo)簽不是按時(shí)間順序列出,而是按字母排序的微猖√赶ⅲ可以用git show <tagname>
查看標(biāo)簽信息
git tag -d v0.1
:刪除標(biāo)簽
如果要推送某個(gè)標(biāo)簽到遠(yuǎn)程,使用命令git push origin <tagname>