15分鐘學會使用 Git 和遠程代碼庫(轉(zhuǎn))

Git是個了不起但卻復(fù)雜的源代碼管理系統(tǒng)骚秦。它能支持復(fù)雜的任務(wù)甲馋,卻因此經(jīng)常被認為太過復(fù)雜而不適用于簡單的日常工作。讓我們誠實一記吧:Git是復(fù)雜的若贮,我們不要裝作它不是。但我仍然會試圖教會你用(我的)基本的Git和遠程代碼庫干活的工作步驟痒留,在15分鐘內(nèi)谴麦。

工作步驟
我會展示以下的步驟,通常能幫我獨自在一臺或多臺機器上做項目伸头。

創(chuàng)建一個遠程的空代碼庫(在BitBucket上)
在本地代碼庫添加一個項目
在分支上開發(fā)新功能
a) 保留新功能 或者 b) 丟棄它們
也許匾效,回到某個早先的時間點
將本地代碼庫推送到遠程代碼庫
在另一臺機器上取得遠程代碼庫

安裝Git
在大多數(shù)*nix系統(tǒng)(Linux、OS X)上恤磷,Git已經(jīng)被安裝了面哼。你通過發(fā)送下面的命令野宜,可以通過Git自身,把它更新到最新的的開發(fā)版本(不推薦)精绎。

git clone https://github.com/git/git

在Windows上速缨,你可以在這里下載Git的安裝程序。如果你真的需要其他系統(tǒng)的安裝程序代乃,Mac OS X安裝文件在這里旬牲,Linux的操作指導(dǎo)在這里

創(chuàng)建一個遠程代碼庫
很多人喜歡用Github搁吓。我個人更喜歡BitBucket原茅,因為它提供了不限制的私有代碼庫,那是我最需要的堕仔。你可以將下列指令轉(zhuǎn)換到Github上擂橘,這些過程是相同的。
那么摩骨,去到www.bitbucket.org并注冊一個賬號通贞。一旦完成,登錄后點擊最上方的“create(創(chuàng)建)”按鈕恼五。照著填寫表格昌罩,勾選私有代碼庫。你可不想讓其他人來偷窺你的Facebook的殺手級應(yīng)用的源代碼灾馒,對吧茎用。
你現(xiàn)在可以離開BitBucket了,我們在已經(jīng)有了所有那里需要的東西了睬罗。

設(shè)置Git
在我們能用Git工作之前轨功,我們需要做個一次性的配置。為了Git能跟蹤到誰做了修改容达,我們需要設(shè)置你的用戶名古涧。我強烈建議你使用與注冊BitBucket賬號相同的用戶名和電子郵箱地址。發(fā)送這些命令董饰,相應(yīng)地替換掉其中的“your_username”和“your_email@domain.com”(注意引號):

git config --global user.name "your_username"
git config --global user.email your_email@domain.com

我們也會設(shè)定推送(push)的默認值為‘simple’蒿褂。要了解這是什么意思,快速閱讀我之前發(fā)布的關(guān)于推送的默認值(非必須)卒暂。發(fā)送這條命令:
git config --global push.default simple

我們都設(shè)好了啄栓。你無需在你的機器上再重復(fù)這些配置,但如果你在另一臺機器上工作的話也祠,不要忘記這些配置昙楚。如果你忘記做初始的配置,Git不會允許你提交任何東西诈嘿,這會讓你困擾堪旧。

創(chuàng)建一個本地代碼庫
作為例子削葱,我們會假裝我們有一個網(wǎng)站(無所謂技術(shù))存在于我們機器上的‘workspace’文件夾下的’my_site’文件夾內(nèi)。在命令行中淳梦,去到你的站點的根文件夾析砸。在OS X和Linux上:
cd ~/workspace/my_site/

在Windows上:
cd c:\workspace\my_site

我們首先需要告訴Git這個文件夾是我們需要跟蹤的項目。所以我們發(fā)送這個命令來初始化一個新的本地Git代碼庫
git init

Git會在my_site文件夾內(nèi)創(chuàng)建一個名為.git的隱藏文件夾爆袍,那就是你的本地代碼庫首繁。

加載(Stage)文件
我們現(xiàn)在需要命令Git我們需要加載(stage)所有項目文件。發(fā)送:
git add .

最后的“.”符號的意思是“所有文件陨囊、文件夾和子文件夾”弦疮。假如我們只想要把特定文件添加到源代碼控制中去,我們可以指定它們:

git add my_file, my_other_file

提交文件
現(xiàn)在蜘醋,我們想要提交已加載(staged)的文件胁塞。閱讀“添加一個時間點,在這里你的文件處在一個可還原的狀態(tài)”压语。我們提交我們的文件時啸罢,總是附帶著有意義的注釋,描述了它們現(xiàn)在的狀態(tài)胎食。我一直用“initial commit”來作為第一個提交的注釋伺糠。

git commit -m "initial commit"

就這樣。現(xiàn)在你隨時都可以回滾到這個提交狀態(tài)斥季。如果你有需要檢查你現(xiàn)在的已加載(staged)和未加載(unstaged)文件的狀態(tài)、提交等累驮,你可以詢問git的狀態(tài):

git status

創(chuàng)建分支
建立分支是你創(chuàng)建代碼的獨立版本的動作酣倾,獨立于你的主干分支。默認地谤专,每次你提交到Git的文件都會被儲存到“master(主干)”分支躁锡。
現(xiàn)在我們來說說,你想要向項目里添加一個功能置侍,但你想要能夠回滾到現(xiàn)在版本映之,以防出現(xiàn)差錯,或者你決定要放棄這個功能蜡坊。這就是你創(chuàng)建分支的時候了杠输。創(chuàng)建并同時切換到你新建的分支,發(fā)送:

git checkout -b new_feature

或者秕衙,你可以先創(chuàng)建一個分支然后手動切換蠢甲,就像這樣:

git branch new_featuregit checkout new_feature

要看你現(xiàn)在項目下所有的分支,發(fā)送這個:

git branch

現(xiàn)在你可以在你的項目上無所顧忌地做任何你想做的:任何時候据忘,你都可以回到你創(chuàng)建分支前的狀態(tài)鹦牛。注意搞糕,你同時可以有多個分支,甚至可以從一個分支上再創(chuàng)建一個分支曼追。

合并分支
當你對你的新功能滿意了的時候窍仰,你想要把它加到主干分支上。當你在你的新功能分支上時礼殊,你首先需要加載(stage)并且提交你的文件:

git add .git commit -m "adds my new feature"

然后你移到你的主干分支:

git checkout master

像這樣合并:

git merge new_feature

此時差导,你的主干分支和你的新功能分支會變成一樣的了。

丟棄分支
相反刚夺,如果你打算丟棄你在分支里做的修改屹蚊,你首先需要加載(stage)你的文件并且在分支里提交:

git add .git commit -m "feature to be discarded"

然后,你移到主干分支:

git checkout master

現(xiàn)在坝辫,你的代碼處于你創(chuàng)建分支之前的狀態(tài)了篷就。

刪除一個分支
如果你要把你的分支合并到主干分支,從主干(master)分支上發(fā)送:

git branch -d new_feature

假如修改已經(jīng)合并了近忙,它只會刪除分支竭业。假如分支沒有合并,你會得到一個錯誤信息及舍。刪除一個未合并的分支(通常你不想保留的修改)未辆,你需要發(fā)送一樣的命令附帶一個大寫D。意思是“強制刪除分支锯玛,無論如何我不想要它了咐柜。”:

git branch -D new_feature

回滾到之前的提交狀態(tài)
在某些時候攘残,你可能想要回到之前的代碼版本拙友。首先,你需要找到你想回到哪個版本歼郭。要看所有的完成了的提交遗契,發(fā)送:

git log

這會輸出你的提交的歷史記錄,像這樣:

commit ca82a6dff817ec66f44342007202690a93763949Author: your_username your_email@domain.comDate: Mon Nov 4 12:52:11 2013 -0700 changes the frontpage layout
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7Author: your_username your_email@domain.comDate: Mon Nov 4 11:40:33 2013 -0700 adds my new feature
commit a11bef06a3f659402fe7563abf99ad00de2209e6Author: your_username your_email@domain.comDate: Mon Nov 4 10:37:28 2013 -0700 initial commit

如果你想回到“adds my new feature”這個提交病曾,簡單地用提交的ID做簽出(checkout)(我通常只用到ID開頭的9個字符)

git checkout 085bb3bcb

你也可以簽出到一個新的分支牍蜂,像這樣:

git checkout -b my_previous_version 085bb3bcb

只是別太瘋狂了!你的分支越復(fù)雜泰涂,就越難確定你真正在做什么鲫竞。

推送到遠程代碼庫
在第一次你想推送一個本地代碼庫到遠程代碼庫時,你需要把它添加到你的項目配置里负敏。像這樣做:

git remote add origin https://your_username@bitbucket.org/your_username/name_of_remote_repository.git

注意這里的“origin”只是一個習慣贡茅。它是你的遠程代碼庫的別名,但是你可以用其他任何你喜歡的詞。你甚至可以有多個遠程代碼庫顶考,你只需要給它們起不同的別名赁还。
之后,你想要推送你的本地代碼庫的主干分支到你的遠程代碼庫:

git push origin master

如果你使用Bitbucket驹沿,在這時艘策,你會被請求輸入你的密碼。照做渊季,你的本地代碼庫會被推送到你的遠程代碼庫上朋蔫。

取得遠程代碼庫的一份本地拷貝
如果你還沒有一份遠程代碼庫的本地版本(例如,如果你在另一臺機器上開始工作却汉,這臺機器上還沒有用過這個項目)驯妄,你首先需要拷貝(clone)它。去到你的代碼庫想要拷貝到的文件夾下合砂,并發(fā)送:

git clone https://your_username@bitbucket.org/your_username/name_of_remote_repository.git

另一方面青扔,如果你已經(jīng)在本地的項目上工作了,只是想從遠程代碼庫上取得它最新的版本翩伪,移動到項目的根目錄下微猖,并發(fā)送:

git pull origin master

別名
Git允許你為你常用的命令創(chuàng)建快捷方式(別名)。例如缘屹,如果你不想每次都輸入git commit -m “some comment”凛剥,而是輸入git c “some comment”,你可以向你的git全局配置里添加一個別名來實現(xiàn)轻姿,像這樣:

git config --global alias.c 'commit -m'

這是我使用的別名列表:

git config --global alias.c 'commit -m'
git config --global alias.co 'checkout'
git config --global alias.cob 'checkout -b'
git config --global alias.br 'branch'
git config --global alias.m 'merge'
git config --global alias.a 'add'
git config --global alias.s 'status'
git config --global alias.dbr 'branch -d'
git config --global alias.loggraph 'log --graph --pretty=oneline --abbrev-commit'

進一步
當然犁珠,還有比這些更多的Git內(nèi)容。如果你想要更了解Git互亮,我推薦官方文檔和教程盲憎,你可以在http://git-scm.com/documentation找到。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胳挎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子溺森,更是在濱河造成了極大的恐慌慕爬,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屏积,死亡現(xiàn)場離奇詭異医窿,居然都是意外死亡,警方通過查閱死者的電腦和手機炊林,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門姥卢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事独榴∩妫” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵棺榔,是天一觀的道長瓶堕。 經(jīng)常有香客問我,道長症歇,這世上最難降的妖魔是什么郎笆? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮忘晤,結(jié)果婚禮上宛蚓,老公的妹妹穿的比我還像新娘。我一直安慰自己设塔,他們只是感情好凄吏,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著壹置,像睡著了一般竞思。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钞护,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天盖喷,我揣著相機與錄音,去河邊找鬼难咕。 笑死课梳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的余佃。 我是一名探鬼主播暮刃,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼爆土!你這毒婦竟也來了椭懊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤步势,失蹤者是張志新(化名)和其女友劉穎氧猬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坏瘩,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡盅抚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了倔矾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妄均。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡柱锹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丰包,到底是詐尸還是另有隱情禁熏,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布烫沙,位于F島的核電站匹层,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏锌蓄。R本人自食惡果不足惜升筏,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘸爽。 院中可真熱鬧您访,春花似錦、人聲如沸剪决。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柑潦。三九已至享言,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間渗鬼,已是汗流浹背览露。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留譬胎,地道東北人差牛。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像堰乔,于是被迫代替她去往敵國和親偏化。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

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

  • 本文轉(zhuǎn)載自:使用git和github管理自己的項目---基礎(chǔ)操作學習镐侯,進行了重新排版侦讨。二次轉(zhuǎn)載請注明原作出處。 我...
    mac在路上閱讀 2,543評論 0 22
  • 林莉早就知道苟翻,我是從村頭坡頂上撿來的搭伤。據(jù)說,哪個季節(jié)袜瞬,還不太冷,依稀有幾片早落的黃葉身堡,在風中或上或下或左或右邓尤、低低...
    開始一直到盡頭閱讀 215評論 0 0
  • 我讀書不多,回憶起以往讀書時,感覺文字干凈的汞扎,有兩個季稳,一是位詩人,顧城澈魄,他是低能而又為我所不恥的景鼠,讀他的詩,便能看...
    葡萄美酒閱讀 228評論 0 0
  • 閑來無事翻開自己空間的說說!有點小震驚鲫构,看到自己的Q齡居然有8年了浓恶。這段時間里自己經(jīng)歷過什么呢?回憶難道僅僅是回憶...
    mo莫墨閱讀 371評論 0 2
  • 2015年12月1日。今年的最后一個月炕吸。 我以為一切都會順利無比伐憾。 7月份從學校出來,不緊不慢等了半個月才開始去廣...
    青石牛閱讀 262評論 0 0