Git用法

1 Git的初始化配置:

1) 配置使用git倉(cāng)庫(kù)的人員姓名

git config --global user.name?"Your Name "

2) 配置使用git倉(cāng)庫(kù)的人員email

git config --global user.email ?“you email"

2. Git本地操作基本命令

2.1. Git init

或者使用git init-db椿猎。

創(chuàng)建一個(gè)空的Git庫(kù)邀杏。在當(dāng)前目錄中產(chǎn)生一個(gè).git 的子目錄忿墅。以后,所有的文件變化信息都會(huì)保存到這個(gè)目錄下兑徘,而不像CVS那樣,會(huì)在每個(gè)目錄和子目錄下都創(chuàng)建一個(gè)CVS目錄。

在.git目錄下有一個(gè)config文件,可以修改其中的配置信息阎抒。

2.2. Git clone

取出服務(wù)器的倉(cāng)庫(kù)的代碼到本地建立的目錄中(與服務(wù)器交互)

通過(guò)git clone獲取遠(yuǎn)端git庫(kù)后,.git/config中的開(kāi)發(fā)者信息不會(huì)被一起clone過(guò)來(lái)消痛。仍然需要為本地庫(kù)的.git/config文件添加開(kāi)發(fā)者信息且叁。此外,開(kāi)發(fā)者還需要自己添加?? . gitignore文件秩伞。

通過(guò)git clone獲取的遠(yuǎn)端git庫(kù)逞带,只包含了遠(yuǎn)端git庫(kù)的當(dāng)前工作分支。如果想獲取其它分支信息纱新,需要使用 “git branch –r” 來(lái)查看展氓, 如果需要將遠(yuǎn)程的其它分支代碼也獲取過(guò)來(lái),可以使用命令 “ git checkout -b 本地分支名 遠(yuǎn)程分支名”脸爱,其中带饱,遠(yuǎn)程分支名為 “git branch –r” 所列出的分支名, 一般是諸如“origin/分支名”的樣子阅羹。如果本地分支名已經(jīng)存在勺疼, 則不需要“-b”參數(shù)。

2.3. Git add

將當(dāng)前工作目錄中更改或者新增的文件加入到Git的索引中捏鱼,加入到Git的索引中就表示記入了版本歷史中执庐,這也是提交之前所需要執(zhí)行的一步。

可以遞歸添加导梆,即如果后面跟的是一個(gè)目錄作為參數(shù)轨淌,則會(huì)遞歸添加整個(gè)目錄中的所有子目錄和文件。例如:

git add dir1 ( 添加dir1這個(gè)目錄看尼,目錄下的所有文件都被加入 )

Git add f1 f2 ( 添加f1递鹉,f2文件)

git add .????? ( 添加當(dāng)前目錄下的所有文件和子目錄 )

2.4. Git commit

提交當(dāng)前工作目錄的修改內(nèi)容。

直接調(diào)用git commit命令藏斩,會(huì)提示填寫(xiě)注釋躏结。通過(guò)如下方式在命令行就填寫(xiě)提交注釋:git commit -m "Initial commit of gittutor reposistory"。 注意狰域,和CVS不同媳拴,git的提交注釋必須不能為空,否則就會(huì)提交失敗兆览。

git commit還有一個(gè) -a的參數(shù)屈溉,可以將那些沒(méi)有通過(guò)git add標(biāo)識(shí)的變化一并強(qiáng)行提交,但是不建議使用這種方式抬探。

每一次提交子巾,git就會(huì)為全局代碼建立一個(gè)唯一的commit標(biāo)識(shí)代碼,用戶可以通過(guò)git reset命令恢復(fù)到任意一次提交時(shí)的代碼。

git commit –-amend –m “message” (在一個(gè)commit id上不斷修改提交的內(nèi)容)

2.5. Git pull

從服務(wù)器的倉(cāng)庫(kù)中獲取代碼线梗,和本地代碼合并椰于。(與服務(wù)器交互,從服務(wù)器上下載最新代碼缠导,等同于: Git fetch + Git merge)

從其它的版本庫(kù)(既可以是遠(yuǎn)程的也可以是本地的)將代碼更新到本地廉羔,例如:“git pull origin master ”就是將origin這個(gè)版本庫(kù)的代碼更新到本地的master主分支。

git pull可以從任意一個(gè)git庫(kù)獲取某個(gè)分支的內(nèi)容僻造。用法如下:git pullusername@ipaddr:遠(yuǎn)端repository名遠(yuǎn)端分支名?本地分支名憋他。這條命令將從遠(yuǎn)端git庫(kù)的遠(yuǎn)端分支名獲取到本地git庫(kù)的一個(gè)本地分支中。其中髓削,如果不寫(xiě)本地分支名竹挡,則默認(rèn)pull到本地當(dāng)前分支。

需要注意的是立膛,git pull也可以用來(lái)合并分支揪罕。 和git merge的作用相同。 因此宝泵,如果你的本地分支已經(jīng)有內(nèi)容好啰,則git pull會(huì)合并這些文件,如果有沖突會(huì)報(bào)警儿奶。

2.6. Git push

將本地commit的代碼更新到遠(yuǎn)程版本庫(kù)中框往,例如 “git push origin”就會(huì)將本地的代碼更新到名為orgin的遠(yuǎn)程版本庫(kù)中。

git push和git pull正好想反闯捎,是將本地某個(gè)分支的內(nèi)容提交到遠(yuǎn)端某個(gè)分支上椰弊。用法:git pushusername@ipaddr:遠(yuǎn)端repository名本地分支名?遠(yuǎn)端分支名。這條命令將本地git庫(kù)的一個(gè)本地分支push到遠(yuǎn)端git庫(kù)的遠(yuǎn)端分支名中瓤鼻。

需要格外注意的是秉版,git push好像不會(huì)自動(dòng)合并文件。因此茬祷,如果git push時(shí)清焕,發(fā)生了沖突,就會(huì)被后push的文件內(nèi)容強(qiáng)行覆蓋牲迫,而且沒(méi)有什么提示耐朴。 這在合作開(kāi)發(fā)時(shí)是很危險(xiǎn)的事情。

2.7. Git merge 和Git rebase

把服務(wù)器上下載下來(lái)的代碼和本地代碼合并盹憎。或者進(jìn)行分支合并铐刘。

例如:當(dāng)前在master分支上陪每,若想將分支dev上的合并到master上,則git merge dev

注意:git merge nov/eclair_eocket (是將服務(wù)器git庫(kù)的eclair_eocket分支合并到本地分支上)

git rebase nov/eclair_eocket (是將服務(wù)器git庫(kù)的eclair_eocket分支映射到本地的一個(gè)臨時(shí)分支上,然后將本地分支上的變化合并到這個(gè)臨時(shí)分支檩禾,然后再用這個(gè)臨時(shí)分支初始化本地分支)

2.8. Git fetch

從服務(wù)器的倉(cāng)庫(kù)中下載代碼挂签。(與服務(wù)器交互,從服務(wù)器上下載最新代碼)

相當(dāng)于從遠(yuǎn)程獲取最新版本到本地盼产,不會(huì)自動(dòng)merge饵婆,比Git pull更安全些。

使用此方法來(lái)獲取服務(wù)器上的更新戏售。

例如:如果使用git checkout nov/eclair_rocket (nov/eclair_rocket為服務(wù)器上的分支名)侨核,則是獲取上次使用git fetch命令時(shí)從服務(wù)器上下載的代碼;如果先使用 git fetch 灌灾,再使用git checkout nov/eclair_rocket搓译,則是先從服務(wù)器上獲取最新的更新信息,然后從服務(wù)器上下載最新的代碼

2.9. Git status

查看版本庫(kù)的狀態(tài)锋喜⌒┘海可以得知哪些文件發(fā)生了變化,哪些文件還沒(méi)有添加到git庫(kù)中等等嘿般。 建議每次commit前都要通過(guò)該命令確認(rèn)庫(kù)狀態(tài)段标。

最常見(jiàn)的誤操作是, 修改了一個(gè)文件炉奴, 沒(méi)有調(diào)用git add通知git庫(kù)該文件已經(jīng)發(fā)生了變化就直接調(diào)用commit操作逼庞, 從而導(dǎo)致該文件并沒(méi)有真正的提交。這時(shí)如果開(kāi)發(fā)者以為已經(jīng)提交了該文件盆佣,就繼續(xù)修改甚至刪除這個(gè)文件往堡,那么修改的內(nèi)容就沒(méi)有通過(guò)版本管理起來(lái)。如果每次在 提交前共耍,使用git status查看一下虑灰,就可以發(fā)現(xiàn)這種錯(cuò)誤。因此痹兜,如果調(diào)用了git status命令穆咐,一定要格外注意那些提示為 “Changed but not updated:”的文件。 這些文件都是與上次commit相比發(fā)生了變化字旭,但是卻沒(méi)有通過(guò)git add標(biāo)識(shí)的文件对湃。

2.10. Git log

查看歷史日志,包含每次的版本變化遗淳。每次版本變化對(duì)應(yīng)一個(gè)commit id拍柒。

Git log -1

-1的意思是只顯示一個(gè)commit,如果想顯示5個(gè)屈暗,就-5拆讯。不指定的話脂男,git log會(huì)從該commit一直往后顯示。

Git log --stat –summary (顯示每次版本的詳細(xì)變化)

在項(xiàng)目日志信息中种呐,每條日志的首行(就是那一串字符)為版本更新提交所進(jìn)行的命名宰翅,我們可以將該命名理解為項(xiàng)目版本號(hào)。項(xiàng)目版本號(hào)應(yīng)該是唯一的爽室,默認(rèn)由 Git 自動(dòng)生成汁讼,用以標(biāo)示項(xiàng)目的某一次更新。如果我們將項(xiàng)目版本號(hào)用作git-show 命令的參數(shù)阔墩,即可查看該次項(xiàng)目版本的更新細(xì)節(jié)嘿架。

2.11. Git rm

從當(dāng)前的工作目錄中和索引中刪除文件。

可以遞歸刪除戈擒,即如果后面跟的是一個(gè)目錄做為參數(shù)眶明,則會(huì)遞歸刪除整個(gè)目錄中的所有子目錄和文件。例如:

git rm –r * (進(jìn)入某個(gè)目錄中筐高,執(zhí)行此語(yǔ)句搜囱,會(huì)刪除該目錄下的所有文件和子目錄)

git rm f1??? (刪除文件f1,包含本地目錄和index中的此文件記錄)

git rm --ached f1 (刪除文件f1柑土,不會(huì)刪除本地目錄文件蜀肘,只刪除index中的文件記錄;將已經(jīng)git add的文件remove到cache中,這樣commit的時(shí)候不會(huì)提交這個(gè)文件, 適用于一下子添加了很多文件, 卻又想排除其中個(gè)別幾個(gè)文件的情況.)

2.12 Git文檔忽略機(jī)制

工作目錄中有一些文件是不希望接受Git 管理的稽屏,譬如程序編譯時(shí)生成的中間文件等等扮宠。Git 提供了文檔忽略機(jī)制,可以將工作目錄中不希望接受Git 管理的文檔信息寫(xiě)到同一目錄下的.gitignore 文件中狐榔。

例如:工作目錄下有個(gè)zh目錄坛增,如果不想把它加入到Git管理中,則執(zhí)行:

echo “zh” > .gitignore

git add .

有關(guān)gitignore 文件的諸多細(xì)節(jié)知識(shí)可閱讀其使用手冊(cè):man gitignore

3.參考文獻(xiàn)

3.1 博客:http://blog.csdn.net/gemmem/article/details/7290125

3.2 唐巧的教程:http://blog.devtang.com/2012/02/03/talk-about-svn-and-git/

3.3 廖雪峰教程:http://blog.devtang.com/2012/02/03/talk-about-svn-and-git/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末薄腻,一起剝皮案震驚了整個(gè)濱河市收捣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庵楷,老刑警劉巖罢艾,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異尽纽,居然都是意外死亡咐蚯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)弄贿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)春锋,“玉大人,你說(shuō)我怎么就攤上這事差凹】锤恚” “怎么了豆拨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵直奋,是天一觀的道長(zhǎng)能庆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)脚线,這世上最難降的妖魔是什么搁胆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮邮绿,結(jié)果婚禮上渠旁,老公的妹妹穿的比我還像新娘。我一直安慰自己船逮,他們只是感情好顾腊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著挖胃,像睡著了一般杂靶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酱鸭,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天吗垮,我揣著相機(jī)與錄音,去河邊找鬼凹髓。 笑死烁登,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蔚舀。 我是一名探鬼主播饵沧,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼赌躺!你這毒婦竟也來(lái)了狼牺?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寿谴,失蹤者是張志新(化名)和其女友劉穎锁右,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體讶泰,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咏瑟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了痪署。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片码泞。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狼犯,靈堂內(nèi)的尸體忽然破棺而出余寥,到底是詐尸還是另有隱情领铐,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布宋舷,位于F島的核電站绪撵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏祝蝠。R本人自食惡果不足惜音诈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绎狭。 院中可真熱鬧细溅,春花似錦、人聲如沸儡嘶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蹦狂。三九已至誓篱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸥咖,已是汗流浹背燕鸽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啼辣,地道東北人啊研。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鸥拧,于是被迫代替她去往敵國(guó)和親党远。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容