不明覺(jué)厲的git
在虛擬的計(jì)算機(jī)世界,git讓我們體會(huì)到了一種不一樣的感覺(jué),也許是那種不明覺(jué)厲的高深莫測(cè)帅刀。
什么是git
Git is a DISTRIBUTED VERSION CONTROL SYSTEM (DVCS)
Git是一款免費(fèi)沛慢、開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目盒音。
DVCS和CVCS的區(qū)別
下面這個(gè)圖是svn的倉(cāng)庫(kù)表鳍,有一個(gè)中心倉(cāng)庫(kù),所有的人都需要去往這個(gè)倉(cāng)庫(kù)里面提交代碼祥诽,新的代碼也需要從倉(cāng)庫(kù)中獲得譬圣。
下面這個(gè)是git的模式,每一個(gè)人都有完整的倉(cāng)庫(kù)雄坪,雖然下面的圖中還是有一個(gè)中心倉(cāng)庫(kù)厘熟,但是不是必須的,每個(gè)人自己都可以提交代碼维哈,互相之間可以合并代碼盯漂。
爹
虎父無(wú)犬子,Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開(kāi)發(fā)而開(kāi)發(fā)的一個(gè)開(kāi)放源碼的版本控制軟件笨农。
官網(wǎng)
圖形界面工具
很多就缆,我最喜歡的是source tree.
git入門(mén)的基本命令
下面的貼圖是我的命令行工具,使用的是zsh谒亦,感興趣的朋友可以看一下這個(gè)鏈接oh-my-zsh
獲取幫助
看看如何獲得幫助
git help
git help config
如果想查詢(xún)具體某個(gè)命令的幫助竭宰,可以在git help后面加上該命令
配置基本信息
基本信息會(huì)保存在你提交的修改中空郊,作為備份,所以如果我們對(duì)項(xiàng)目做了多少貢獻(xiàn)切揭,都是可以查出來(lái)的狞甚。
加上自己姓名
git config --global user.name "Yin Shen"
加上自己郵箱
git config --global user.email shenyin@rocketmail.com
加上顏色
git config --global color.ui true
創(chuàng)建倉(cāng)庫(kù)
現(xiàn)在讓我們創(chuàng)建一個(gè)倉(cāng)庫(kù)來(lái)實(shí)戰(zhàn)吧, 使用init
命令就可以啦。
git init
git基本概念
-
創(chuàng)建一個(gè)新文件的時(shí)候廓旬,該文件處于沒(méi)有被追蹤的狀態(tài)
Paste_Image.png 使用
add
命令哼审,使得文件登上舞臺(tái)(staging staging)
登上舞臺(tái)是為了拍照,我們看一下第三個(gè)狀態(tài)
上圖的git st實(shí)際上是git status命令孕豹,被重命名了涩盾。
- 把staging staging中的東西都拍照(commit change)
被拍照的文件都有了一個(gè)snapshot(快照)
上面的步驟是我們使用git的一個(gè)最重要的模式:edit/stage/commit pattern
- 在本地文件夾編輯文件
- 如果想備份當(dāng)前改動(dòng)了,就使用
git add
命令放到舞臺(tái)(stage) - 如果對(duì)staged snapshot滿(mǎn)意励背,就可以commit春霍,這樣這個(gè)snapshot就變成項(xiàng)目歷史的一部分了
注意:add,commit命令都是對(duì)本地文件的操作叶眉,這個(gè)和SVN有很大的差別址儒,SVN的所有操作都要和遠(yuǎn)程服務(wù)器通信,但是git是分布式的衅疙,大部分操作并不一定需要和中心倉(cāng)庫(kù)交互莲趣。
具體區(qū)別可以看這個(gè)鏈接https://www.atlassian.com/git/tutorials/saving-changes/git-add
add的多種方式
git add <list of files>
git add --all
git add *.txt
git add 文件夾/*.txt
git add 文件夾
git add "*.txt"
日志
可以使用
git log
git log --pretty=oneline
git log --pretty=format:"%h %ad- %s [%an]"
查看修改歷史可以用
git blame index.html --date short
刪除文件
從文件系統(tǒng)刪除
git rm README.txt
不跟蹤
git rm --cached development.log
好用的命令別名
把她們加在.gitconfig文件中就可以了,或者像這樣通過(guò)命令行配置git config --global alias.mylog "log --pretty=format:'%h %s [%an]' --graph"
mylog = log --pretty=format:'%h %s [%an]' --graph
co=checkout
br=branch
ci=commit
st=status
unstage=reset HEAD --
last=log -1 HEAD
pl1=log origin/yourbranch -1 --pretty=oneline
pl3=log origin/yourbranch -3 --pretty=oneline