用戶名和郵箱
使用Git做版本控制時(shí),其提交是基于用戶行為的。Git為用戶角色定義了兩個(gè)基礎(chǔ)屬性:用戶名和郵箱发皿。
你可以在當(dāng)前操作系統(tǒng)下配置:
git config --global user.name "你的用戶名"
git config --global user.email "你的郵箱"
配置的用戶名和郵箱僅作為你以后的提交署名蛙卤,Git并不會(huì)去驗(yàn)證你寫的用戶名和郵箱是否真實(shí)正確。
如果你的系統(tǒng)是mac os宰翅,可以在終端執(zhí)行命令
open ~
打開用戶根目錄弃甥,里面有一份隱藏文件.gitconfig
,保存了你剛剛配置的用戶名和密碼汁讼。
如果你不想敲命令配置用戶名和密碼的話淆攻,也可以直接修改.gitconfig
里的[user]
段肮之。
這里有一個(gè)命令用于顯示/隱藏mac文件:
顯示
defaults write com.apple.finder AppleShowAllFiles -bool true
隱藏
defaults write com.apple.finder AppleShowAllFiles -bool false
忽略不需要提交的文件
創(chuàng)建一份命名叫.gitignore
的文件,可以讓Git忽略指定的文件卜录。
如果.gitignore文件放在工作區(qū)根目錄戈擒,則影響整個(gè)工作區(qū),包括子目錄艰毒。
如果.gitignore文件放在子目錄筐高,則影響子目錄及其包含的子目錄。
在https://www.gitignore.io/輸入你的開發(fā)語(yǔ)言丑瞧,它可以幫你生成一份忽略清單柑土。如果你覺得它生成的東西太多看花眼,也可以寫這幾個(gè)實(shí)用的:
*.xcscheme
*.xcuserstate
*.xcbkptlist
xcschememanagement.plist
工作區(qū)绊汹、暫存區(qū)和版本庫(kù)
我們可以把最終保存修改的地方叫做版本庫(kù)稽屏,這是提交的目的地。
然后把git能感知的文件目錄及其子目錄叫做工作區(qū)西乖。
一般來(lái)說(shuō)狐榔,我們?cè)诠ぷ鲄^(qū)里寫代碼,干活获雕,噼嚦啪啦搞完以后薄腻,就想提交一下修改,好讓git保存下來(lái)届案。
這時(shí)候庵楷,要想從工作區(qū)提交代碼到版本庫(kù),必須要經(jīng)過(guò)暫存區(qū)楣颠,版本庫(kù)只認(rèn)從暫存區(qū)過(guò)來(lái)的提交尽纽,也就是說(shuō),提交這個(gè)動(dòng)作只能從暫存區(qū)發(fā)起童漩,到達(dá)版本庫(kù)弄贿。
這樣,同一份文件睁冬,最多可以同時(shí)存在三種不同的內(nèi)容挎春。怎么會(huì)這樣?
- 有一份文件豆拨,現(xiàn)在三區(qū)同步直奋,沒有任何修改。此時(shí)文件在三個(gè)區(qū)的內(nèi)容分別為A施禾、A脚线、A。
- 程序員gg開始干活了弥搞,對(duì)工作區(qū)上的文件一頓猛敲邮绿,內(nèi)容變成了B渠旁。此時(shí)文件在三個(gè)區(qū)的內(nèi)容是B、A船逮、A顾腊。
- gg覺得這頓猛敲可以告一段落了,就打算把它提交了吧挖胃。然而想要提交杂靶,是要先放到暫存區(qū)的,好吧酱鸭,把工作區(qū)的修改同步到暫存區(qū)吗垮,發(fā)出一個(gè)add命令,這樣凹髓,三個(gè)區(qū)的內(nèi)容變成了B烁登、B、A蔚舀。
- gg剛敲完add命令饵沧,就后悔了,不對(duì)蝗敢,這樣寫有bug捷泞,得改改再提交足删。于是繼續(xù)在工作區(qū)把文件內(nèi)容改為了C寿谴。于是,三個(gè)區(qū)的內(nèi)容變成了C失受、B讶泰、A。
- 就在這個(gè)時(shí)候拂到,gg接到了通知要去開會(huì)痪署,時(shí)間還不短,gg想這回來(lái)以后還能記得思路嗎兄旬,電腦還健在否狼犯?小bug無(wú)傷大雅,趕緊提交一波再說(shuō)领铐。于是把暫存區(qū)的內(nèi)容B提交了悯森。此時(shí),三個(gè)區(qū)的內(nèi)容分別是C绪撵、B瓢姻、B。
- gg開完會(huì)已經(jīng)深夜了音诈,匆匆把C暫存起來(lái)幻碱,覺得精神狀態(tài)不對(duì)绎狭,沒敢提交,于是拖著疲憊的身軀回了家...
暫存和儲(chǔ)藏
在Git中褥傍,有兩個(gè)詞比較相似儡嘶,stage
和stash
,暫存和儲(chǔ)藏恍风。
暫存stage是暫存區(qū)社付,在暫存區(qū)的東西可以被提交到最終的版本庫(kù)。
然而邻耕,stage的東西其實(shí)也可以不提交到版本庫(kù)鸥咖,而是儲(chǔ)藏起來(lái),即進(jìn)行stash兄世。
有時(shí)在進(jìn)行某個(gè)事情的時(shí)候啼辣,突然有其它緊急問(wèn)題需要立即修改,這時(shí)候可以考慮把當(dāng)前修改儲(chǔ)藏起來(lái)御滩。
git stash
這個(gè)操作會(huì)把整個(gè)stage區(qū)儲(chǔ)藏起來(lái)鸥拧,然后你可以繼續(xù)進(jìn)行其它的修改操作,正常提交削解。
然后
git stash pop
pop操作可以把儲(chǔ)藏區(qū)內(nèi)容恢復(fù)到暫存區(qū)富弦。
參考資料:
《Git學(xué)習(xí)指南》