花10分钟开始使用Git

假如你刚加入一个项目组,该项目使用Git作为源代码管理,但你之前没有用过Git,你该怎么办?

刚开始你完全没必要去系统学习Git,只要了解几条命令就足以胜任:首先用git clone下载代码,每当你修改一个文件或者新添加了一个文件你用git add暂存修改,修改好之后用git commit提交代码变更记录,最后用git push提交到服务器上。如果你随时想查看提交记录用git log。我们来看看具体该怎么做:

注意,如果没有其他特殊说明,本教程的所有操作都是在系统shell中运行,不包含任何图形化工具的操作。

  1. 安装Git Git官方网站上有相应平台版本下载(Mac上一般默认有Git,如果你用Mac先敲下git命令,确认下有没有)。在不想安装的情况下,你也可以去这里在线练习,该网页提供模拟的Git命令供你一步步练习使用。

  2. 全局设置

    git config --global user.name "John Doe" // John Doe换成你自己名字`
    git config --global user.email johndoe@example.com // johndoe@example.com 换成你的邮件地址
用户名和邮件是用来追踪代码提交者的,每次你提交代码,历史记录里面会有这个信息。
  1. 获取远程代码仓库地址如果你还没有Git服务器的地址,请找你同事求助,问一问“我们Git服务器地址是什么?”,一般情况下你会得到这样一个地址:

    username@host:/path/to/repository

    其中username是你的用户名,host当然就是git的服务器地址。可能是IP或者域名
    一个真实的例子可能像这样:
    jeffrey@192.168.1.100:project.git~
    或者这样的
    user@server:/projects/project.git

    也可能是这样的
    https://server/namespace/project.git
    如果你同事只告诉你一个服务器和路径,你也不知道用户名密码,你还得再找其他人帮你增加新用户。为了方便描述,之后用_ https://server/namespace/project.git_来指代这个你得到的地址。

  2. 下载项目源代码[^ 1]
    git clone https://server/namespace/project.git
    下载之前最好先切换到你想放源代码的文件夹,通过执行上面这个命令下载项目代码到该文件夹中。
    [^ 1]:“下载”确切的说是创建一个远程代码仓库的一个本地克隆,如果你有疑问,暂时就理解成“下载源代码”即可,本系列后面文章会有详细解释。

  3. 修改了一个代码文件之后使用git add命令
    git add the-modified-file.cc

  4. 添加新代码文件到项目中同样也使用git add命令
    git add the-added-file.cc

  5. 提交本地仓库更改
    git commit -m "fix a xxx bug

  6. 提交到远程服务器
    git push origin master
    该提交命令的格式是~git push [remote-name] [branch-name]~. origin指的是远程服务器分支,master为本地分支。二者的值都是在你一开始用clone命令的时候被git自动设置好了的了。所以只要简单的使用origin master即可。

需要注意的几点有:

  1. 多次更改需多次git add。上述#5中,如果你在你执行了add之后有又有新的更改想提交,请再次执行add命令,如此反复。否则此时通过commit命令被提交的只是上次add之前的更改,add之后的新改动不会被提交。下一篇文章会详细描述为什么需要这么做,和这个机制有什么优点;

  2. git push才会提交代码到服务器,其他操作都是在本地进行。上述#7中_git commit _命令只是把代码提交到本地仓库,此时其他人还看不到你的更改。只有通过#8的push操作后代码才会真正被提交到远程服务,此时其他人才会看到你的更改;现在你应该还不会如何撤销更改,所以请谨慎使用push操作;

  3. 修改和提交代码到服务器前最好先同步最新代码。因为你现在还不熟悉其他操作,为了避免merge,最好能在别人没有改动的情况下修改代码,或者运行下git fetch origin先同步别人的更改后再修改文件。

  4. 放心练习,只要不做git push操作,都是安全的。这里之所以没有推荐在本地新建一个代码仓库作为练习是因为你完全可以用你的真实项目随便练习操作,只要不git push就行。真实的项目你可以看到别人是怎么用Git的,也不用人为花时间造练习数据。玩坏了直接在文件系统删掉整个目录,或者在其他目录重新git clone一份项目代码即可。即使公司暂时没有可以使用的源代码仓库你还可以去[github]上随便找一个感兴趣的小项目clone下了练习即可。如果你还是要坚持新建本地代码仓库练习随笔找个目录执行git init即可,执行git init之后该目录下除了没有项目文件以外和其他git仓库没有区别。

那如何知道自己和别人的提交记录呢?使用git log即可。输出结果会像这样:

$ 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

或者你想看看每次提交具体的改动内容,请加上-p选项
git log -p
下面显示的结果包涵了具体改动内容历史记录

$ 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

返回本系列文章目录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容