花10分鐘開(kāi)始使用Git

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

剛開(kāi)始你完全沒(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ù)器地址??赡苁荌P或者域名
    一個(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為本地分支。二者的值都是在你一開(kāi)始用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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容