花10分鐘開始使用Git

假如你剛加入一個(gè)項(xiàng)目組一姿,該項(xiàng)目使用Git作為源代碼管理拖云,但你之前沒(méi)有用過(guò)Git那伐,你該怎么辦踏施?

剛開始你完全沒(méi)必要去系統(tǒng)學(xué)習(xí)Git石蔗,只要了解幾條命令就足以勝任:首先用git clone下載代碼,每當(dāng)你修改一個(gè)文件或者新添加了一個(gè)文件你用git add暫存修改畅形,修改好之后用git commit提交代碼變更記錄养距,最后用git push提交到服務(wù)器上。如果你隨時(shí)想查看提交記錄用git log日熬。我們來(lái)看看具體該怎么做:

注意棍厌,如果沒(méi)有其他特殊說(shuō)明,本教程的所有操作都是在系統(tǒng)shell中運(yùn)行碍遍,不包含任何圖形化工具的操作定铜。

  1. 安裝Git Git官方網(wǎng)站上有相應(yīng)平臺(tái)版本下載(Mac上一般默認(rèn)有Git阳液,如果你用Mac先敲下git命令怕敬,確認(rèn)下有沒(méi)有)。在不想安裝的情況下帘皿,你也可以去這里在線練習(xí)东跪,該網(wǎng)頁(yè)提供模擬的Git命令供你一步步練習(xí)使用。

  2. 全局設(shè)置

    git config --global user.name "John Doe" // John Doe換成你自己名字`
    git config --global user.email johndoe@example.com // johndoe@example.com 換成你的郵件地址
用戶名和郵件是用來(lái)追蹤代碼提交者的鹰溜,每次你提交代碼虽填,歷史記錄里面會(huì)有這個(gè)信息。
  1. 獲取遠(yuǎn)程代碼倉(cāng)庫(kù)地址如果你還沒(méi)有Git服務(wù)器的地址曹动,請(qǐng)找你同事求助斋日,問(wèn)一問(wèn)“我們Git服務(wù)器地址是什么?”墓陈,一般情況下你會(huì)得到這樣一個(gè)地址:

    username@host:/path/to/repository

    其中username是你的用戶名恶守,host當(dāng)然就是git的服務(wù)器地址」北兀可能是IP或者域名
    一個(gè)真實(shí)的例子可能像這樣:
    jeffrey@192.168.1.100:project.git~
    或者這樣的
    user@server:/projects/project.git

    也可能是這樣的
    https://server/namespace/project.git
    如果你同事只告訴你一個(gè)服務(wù)器和路徑兔港,你也不知道用戶名密碼,你還得再找其他人幫你增加新用戶仔拟。為了方便描述衫樊,之后用_ https://server/namespace/project.git_來(lái)指代這個(gè)你得到的地址。

  2. 下載項(xiàng)目源代碼[^ 1]
    git clone https://server/namespace/project.git
    下載之前最好先切換到你想放源代碼的文件夾利花,通過(guò)執(zhí)行上面這個(gè)命令下載項(xiàng)目代碼到該文件夾中科侈。
    [^ 1]:“下載”確切的說(shuō)是創(chuàng)建一個(gè)遠(yuǎn)程代碼倉(cāng)庫(kù)的一個(gè)本地克隆,如果你有疑問(wèn)炒事,暫時(shí)就理解成“下載源代碼”即可臀栈,本系列后面文章會(huì)有詳細(xì)解釋。

  3. 修改了一個(gè)代碼文件之后使用git add命令
    git add the-modified-file.cc

  4. 添加新代碼文件到項(xiàng)目中同樣也使用git add命令
    git add the-added-file.cc

  5. 提交本地倉(cāng)庫(kù)更改
    git commit -m "fix a xxx bug

  6. 提交到遠(yuǎn)程服務(wù)器
    git push origin master
    該提交命令的格式是~git push [remote-name] [branch-name]~. origin指的是遠(yuǎn)程服務(wù)器分支羡洛,master為本地分支挂脑。二者的值都是在你一開始用clone命令的時(shí)候被git自動(dòng)設(shè)置好了的了藕漱。所以只要簡(jiǎn)單的使用origin master即可。

需要注意的幾點(diǎn)有:

  1. 多次更改需多次git add崭闲。上述#5中肋联,如果你在你執(zhí)行了add之后有又有新的更改想提交,請(qǐng)?jiān)俅螆?zhí)行add命令刁俭,如此反復(fù)橄仍。否則此時(shí)通過(guò)commit命令被提交的只是上次add之前的更改,add之后的新改動(dòng)不會(huì)被提交牍戚。下一篇文章會(huì)詳細(xì)描述為什么需要這么做侮繁,和這個(gè)機(jī)制有什么優(yōu)點(diǎn);

  2. git push才會(huì)提交代碼到服務(wù)器如孝,其他操作都是在本地進(jìn)行宪哩。上述#7中_git commit _命令只是把代碼提交到本地倉(cāng)庫(kù),此時(shí)其他人還看不到你的更改第晰。只有通過(guò)#8的push操作后代碼才會(huì)真正被提交到遠(yuǎn)程服務(wù)锁孟,此時(shí)其他人才會(huì)看到你的更改次绘;現(xiàn)在你應(yīng)該還不會(huì)如何撤銷更改切距,所以請(qǐng)謹(jǐn)慎使用push操作感耙;

  3. 修改和提交代碼到服務(wù)器前最好先同步最新代碼悔政。因?yàn)槟悻F(xiàn)在還不熟悉其他操作艇拍,為了避免merge器腋,最好能在別人沒(méi)有改動(dòng)的情況下修改代碼赤兴,或者運(yùn)行下git fetch origin先同步別人的更改后再修改文件队伟。

  4. 放心練習(xí)腔稀,只要不做git push操作盆昙,都是安全的。這里之所以沒(méi)有推薦在本地新建一個(gè)代碼倉(cāng)庫(kù)作為練習(xí)是因?yàn)槟阃耆梢杂媚愕恼鎸?shí)項(xiàng)目隨便練習(xí)操作烧颖,只要不git push就行弱左。真實(shí)的項(xiàng)目你可以看到別人是怎么用Git的,也不用人為花時(shí)間造練習(xí)數(shù)據(jù)炕淮。玩壞了直接在文件系統(tǒng)刪掉整個(gè)目錄拆火,或者在其他目錄重新git clone一份項(xiàng)目代碼即可。即使公司暫時(shí)沒(méi)有可以使用的源代碼倉(cāng)庫(kù)你還可以去[github]上隨便找一個(gè)感興趣的小項(xiàng)目clone下了練習(xí)即可涂圆。如果你還是要堅(jiān)持新建本地代碼倉(cāng)庫(kù)練習(xí)隨筆找個(gè)目錄執(zhí)行git init即可们镜,執(zhí)行git init之后該目錄下除了沒(méi)有項(xiàng)目文件以外和其他git倉(cāng)庫(kù)沒(méi)有區(qū)別。

那如何知道自己和別人的提交記錄呢润歉?使用git log即可模狭。輸出結(jié)果會(huì)像這樣:

$ git log
commit ca82a6dff817ec66f44342007202690a93763949`
Author: Scott Chacon <schacon@gee-mail.com>`
 Date:   Mon Mar 17 21:52:11 2008 -0700`
     changed the version number`
 commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7`
 Author: Scott Chacon <schacon@gee-mail.com>`
 Date:   Sat Mar 15 16:40:33 2008 -0700`
 removed unnecessary test`
 
commit a11bef06a3f659402fe7563abf99ad00de2209e6`
 Author: Scott Chacon <schacon@gee-mail.com>`
 Date:   Sat Mar 15 10:31:28 2008 -0700`
     first commit

或者你想看看每次提交具體的改動(dòng)內(nèi)容,請(qǐng)加上-p選項(xiàng)
git log -p
下面顯示的結(jié)果包涵了具體改動(dòng)內(nèi)容歷史記錄

$ git log -p -2 // -2表示只想看最近兩次提交歷史
 commit ca82a6dff817ec66f44342007202690a93763949
 Author: Scott Chacon <schacon@gee-mail.com>
 Date:   Mon Mar 17 21:52:11 2008 -0700
 
     changed the version number
 
 diff --git a/Rakefile b/Rakefile
 index a874b73..8f94139 100644
 --- a/Rakefile
 +++ b/Rakefile
 @@ -5,7 +5,7 @@ require 'rake/gempackagetask'
  spec = Gem::Specification.new do |s|
      s.platform  =   Gem::Platform::RUBY
      s.name      =   "simplegit"
 -    s.version   =   "0.1.0"
 +    s.version   =   "0.1.1"
      s.author    =   "Scott Chacon"
      s.email     =   "schacon@gee-mail.com"
      s.summary   =   "A simple gem for using Git in Ruby code."
 
 commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
 Author: Scott Chacon <schacon@gee-mail.com>
 Date:   Sat Mar 15 16:40:33 2008 -0700
 
     removed unnecessary test
 
 diff --git a/lib/simplegit.rb b/lib/simplegit.rb
 index a0a60ae..47c6340 100644
 --- a/lib/simplegit.rb
 +++ b/lib/simplegit.rb
 @@ -18,8 +18,3 @@ class SimpleGit
      end
 
  end
 -
 -if $0 == __FILE__
 -  git = SimpleGit.new
 -  puts git.show
 -end
 \ No newline at end of file

參考文檔

  1. Pro Git book
  2. git - the simple guide

返回本系列文章目錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末踩衩,一起剝皮案震驚了整個(gè)濱河市嚼鹉,隨后出現(xiàn)的幾起案子贩汉,更是在濱河造成了極大的恐慌,老刑警劉巖锚赤,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匹舞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡线脚,警方通過(guò)查閱死者的電腦和手機(jī)赐稽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)浑侥,“玉大人姊舵,你說(shuō)我怎么就攤上這事≡⒙洌” “怎么了括丁?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)零如。 經(jīng)常有香客問(wèn)我躏将,道長(zhǎng),這世上最難降的妖魔是什么考蕾? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮会宪,結(jié)果婚禮上肖卧,老公的妹妹穿的比我還像新娘。我一直安慰自己掸鹅,他們只是感情好塞帐,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著巍沙,像睡著了一般葵姥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上句携,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天榔幸,我揣著相機(jī)與錄音,去河邊找鬼矮嫉。 笑死削咆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蠢笋。 我是一名探鬼主播拨齐,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼昨寞!你這毒婦竟也來(lái)了瞻惋?” 一聲冷哼從身側(cè)響起厦滤,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎歼狼,沒(méi)想到半個(gè)月后馁害,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹂匹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年碘菜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片限寞。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忍啸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出履植,到底是詐尸還是另有隱情计雌,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布玫霎,位于F島的核電站凿滤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏庶近。R本人自食惡果不足惜翁脆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鼻种。 院中可真熱鬧反番,春花似錦、人聲如沸叉钥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)投队。三九已至枫疆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間敷鸦,已是汗流浹背息楔。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轧膘,地道東北人钞螟。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像谎碍,于是被迫代替她去往敵國(guó)和親鳞滨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git蟆淀,從https:/...
    落魂灬閱讀 12,668評(píng)論 4 54
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,665評(píng)論 9 163
  • 荒草叢生的青春 一眨眼來(lái)上海兩年了 經(jīng)歷了很多拯啦,跌跌撞撞地熬過(guò)來(lái)澡匪,回想兩月之前恍如隔世 那時(shí)垂頭喪氣,滿面灰塵褒链,對(duì)...
    白胡枝子閱讀 189評(píng)論 0 0
  • 我們是不是經(jīng)常有說(shuō)自己忙甫匹,或聽到別人在說(shuō)忙呢甸鸟?如果忙,那我們有沒(méi)思考過(guò)我們忙的原因以及忙的產(chǎn)出呢兵迅?這里我們把忙分為...
    辰辰_Amy閱讀 300評(píng)論 0 4
  • p2p理財(cái)利息_華融道理財(cái) p2p理財(cái)利息_華融道理財(cái) p2p理財(cái)利息_華融道理財(cái)
    包麓詹88216閱讀 163評(píng)論 0 0