http://www.uml.org.cn/pzgl/201206155.asp

之前在公司使用过SVN(无甚感觉)和ClearCase(把人恶心死的东西)两种版本控制工具,都不满意。后来想自己写点东西玩,就发现了这个在国内人气还不怎么高的Git,这个由Linus实现的灵活小巧的VCS。对它的印象差不多可以这么说:“我被萌到了”。

通过采用不同类型的工作流,Git可以适用于各种大小规模的项目。这里介绍一下针对最简单的集中式工作流的配置方式,适合个人和小型团队使用。

注:本文只是一个快速流程,要详细了解Git使用方法的话,强烈推荐阅读《Pro Git》这本书(见本文末尾的参考)。流程中需要一台服务器或VPS(越来越感受到VPS这东西对程序员真有用啊)。

安装Git

Git是跨平台的,在Linux/Mac/Windows上都可以使用,它的分布式特性也使得个人可以在多种平台下方便地进行开发。

Linux

作为桌面系统用的Linux大多是Debian系的,安装很方便,执行下面命令即可:

 
$ sudo apt-get install git-core

Mac OS X

如果安装了Xcode 4的,里面就已经包含了Git。也可以从这里单独安装:http://code.google.com/p/git-osx-installer/downloads/list?can=3

Windows

window平台可以安装msysgit: http://code.google.com/p/msysgit/downloads/list?can=3

喜欢图形界面的可以再加上TortoiseGit:http://code.google.com/p/tortoisegit/downloads/list

初次配置

执行下面两条命令来配置用户信息,他们会用于Git提交时的签名:

 
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

建立本地Git仓库

在你的项目目录下执行:

$ git init

这会在你的项目目录下建立一个.git目录,存储所有Git所需的资源。

然后我们该往项目中添加文件了。不过在这之前,最好先建立一个名为.gitignore的文件,来把一些不需要的文件或文件夹排除掉。比如在Mac下有时会在当前目录下产生一个.DS_Store的文件,这对我们的项目是无用的,我们就可以把它排除掉,而一些文本编辑器会使用以~结尾的备份文件,也要排除掉:

 
.DS_Store
*~

《Pro Git》的2.2节对此规则有更详细的介绍。

然后我们就可以进行文档的添加了,如果是按照上面把忽略规则设定好了的话,可以简单地执行:

$ git add .

这会把忽略规则以外的所有文件都添加进来,也可以这样:

$ git add *.c

来添加部分文件。Git还可能会忽略.gitignore文件,需要手工添加:

$ git add .gitignore

添加好文件后,就进行第一次提交:

$ git commit -m 'initial project version'

Git要求所有地提交都要包含说明文字,-m后面地即为说明,这是一种快捷地做法,也可以只用git commit,然后在切换到的界面中编辑说明文字。

建立服务器端

Git是分布式的版本管理软件,不需要服务器端也可以使用,但若要进行多人/多设备协同开发,还是要架设一个服务器端。
首先把刚才建好的本地仓库导出为裸仓库,在项目的上级目录执行:

$ git clone --bare my_project my_project.git

这会新建一个my_project.git文件夹,差不多和项目目录.git文件夹中的内容一样。

使用scp命令(或其他方式)把它上传到你的服务器上:

$ scp -r my_project.git user@git.example.com:/var/git

服务器上存放的目录可以是任意位置,目录的访问权限其实就和通过Git访问的权限相同(使用ssh协议来访问代码),比如你的项目是私人的,就可以放在你的home目录中。

上传之后本地的my_project.git就可以删掉了。

如果你的服务器端还没有安装git的话,这时是无法通过Git获取代码的,很简单,还是通过

$ sudo apt-get install git-core

命令,在服务器端安装Git。

现在就可以在本地通过Git来获取这个项目了:

$ git clone user@git.example.com:/var/git/my_project.git

这会在当前目录下建立一个my_project文件夹,里面包含项目源码和git仓库。也可以在上面的命令后再添加一个参数,来制定这个文件夹的位置和名称。

本地仓库和服务器端的关联

我们通过git clone命令抓下来的项目会自动和抓取的服务器端关联好,这样如果你确保前面添加到库中的文件没有遗漏,就可以把它删掉,再新clone下来的项目目录下进行开发(这样最简单最懒)。

也可以手工为原项目建立关联,在最初的项目目录中执行:

$ git remote add origin user@git.example.com:/var/git/my_project.git

这条命令就是把刚才做好的服务器端仓库添加为远程仓库,名字叫origin。

这时已经可以通过git fetch origin和git push origin master命令来抓取和推送代码了,但这样会比较麻烦(git
fetch不会自动将远端分支合并到当前工作的分支)。

为了之后的使用方便,要设置本地的master分支跟踪远程仓库的master分支:

$ git checkout --track origin/master

$ git checkout --set-upstream master origin/master

这条命令即让本地master分支跟踪远程仓库origin中的master分支。

设置好更总后如果我们需要从远程仓库抓取数据,只需要运行

$ git pull

即可。而本地数据变动后,要提交到远程仓库,则执行:

$ git push

使用git部署网站

以前写好了网页就用ftp工具上传到服务器上,这样子没有版本控制的发布行为可能会导致很多问题。既然现在我们用git来管理项目,那也可以用它来发布网站。

假设刚才我们的my_project是为sojingle.net做的网站,要放在服务器的/var/www/sojingle.net/htdocs/www目录下,则可以在服务器端执行

$ git clone user@git.example.com:/var/git/my_project.git
/var/www/sojingle.net/htdocs/www

如果网站和git服务器在同一个主机的话,也可以使用本地文件协议来抓取:

$ git clone /var/git/my_project.git /var/www/sojingle.net/htdocs/www

不止是网站,有些软件也是通过这种方式来发布。比如Homebrew和RVM,在更新本地软件时,就是利用git来更新。

新建develop分支

Git除了分布式这一大特性外,还大大强化了分支的使用。我们日常的开发工作一般不在master分支上进行,而是最好建立一个develop分支:

$ git checkout -b develop

开发时,最好基于develop分支再新建一个特性分支,比如我们要为网站添加一个新功能“标签支持”,就为其新建一个分支tag_support,新功能开发完成之后,将其合并到develop分支上:

$ git checkout develop $ git merge tag_support

这就将新功能的代码合并到了开发主分支上,合并过程没有冲突的话,就可以删掉这个分支:

$ git branch -d tag_support

当做好了一组新功能,决定要发版本了,就用可以把develop分支合并到master分支上,git push推送到远程仓库。在服务器端的www目录中,再来执行git
pull,即可把网站更新到最新版本。

推荐及参考

《Pro Git》 http://progit.org/book/zh/

这本书的作者是GitHub的员工,写得非常棒,大量的配图把Git的分支管理讲得非常清楚。而且非纸质书是免费的,已经有了中文版翻译,可以直接在线阅读。

《Git开发管理之道》 http://blog.leezhong.com/translate/2010/10/30/a-successful-git-branch.html

这篇文章主要讲的是软件开发中的分支管理模型,很值得一读

[转] 使用Git进行小项目代码管理的更多相关文章

  1. dictionary小项目代码管理

    软件项目开发流程 需求分析 ----> 概要设计  ---> 项目计划 ---->详细设计--->编码测试 -----> 项目测试 ---->调试修改 ---> ...

  2. 从coding.net 克隆(git clone)项目代码到本地报无权限(403)错误 解决方案

    直接从coding.net (git clone)项目代码到本地时,会提示没有权限的错误,如下图: 解决方案:添加远程地址的时候带上用户名及密码即可解决,格式如下: git clone http:// ...

  3. 项目代码管理工具Git的总结

    在项目的开发中,代码的同步管理很重要,团队的几个人可以通过免费的github管理自己的开源项目代码,高效方便.下面说说,开发中经常用到的git指令操作,基于github平台. 0.配置提交者的账户和邮 ...

  4. git上传项目代码到github

    参考: git学习——上传项目代码到github github上传时出现error: src refspec master does not match any解决办法 git 上传本地文件到gith ...

  5. git分支在项目中管理

    实际项目中如何使用Git做分支管理 2018年06月24日 18:08:24 ShuSheng007 阅读数:9241   版权声明: https://blog.csdn.net/ShuSheng00 ...

  6. 使用Git上传项目代码到github

    github是一个基于Git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.这对于一般人来说公共仓库就已经足够了.   注册账户以及创建仓库 要想使用gi ...

  7. 如何使用Git上传项目代码到github

    这是我第一次应用git,以下仅供git的初学者参考.     github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.这对于一般人来说 ...

  8. 如何使用Git上传项目代码到代码服务器

    如你本机新建Git项目 地址:git@github.com:yourName/yourRepo.git,远程代码库服务器地址:192.168.10.1,远程代码服务器账户名密码:admin 密码:12 ...

  9. Git命令提交项目代码

    Git客户端安装 今天就结合`GitHub`,通过`Git`命令,来了解如何实现开源代码库以及版本控制 GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托 ...

随机推荐

  1. 学习Swift--下标脚本

    下标脚本 下标脚本可以定义在类(Class).结构体(structure)和枚举(enumeration)这些目标中,可以认为是访问集合(collection),列表(list)或序列(sequenc ...

  2. Android程序安装后在模拟器上不显示,并且控制台显示The launch will only sync the application package on the device!

    初学安卓,今天写了一个小例子,可是eclipse控制台却提示 No Launcher activity found! The launch will only sync the application ...

  3. new 与override 区别

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Newover ...

  4. 最好的JAVA IDE IntelliJ IDEA使用简介(一)—之界面元素

    打开IDEA,(当第一次打开的时候出现的是一个欢迎页面,随便创建一个project来进入到IDEA的主界面),主界面显示如下: 主界面由6个主要区域组成(图中红色数字标注的) 1.菜单和工具栏 2.导 ...

  5. WordPress Download Monitor插件跨站脚本漏洞

    漏洞名称: WordPress Download Monitor插件跨站脚本漏洞 CNNVD编号: CNNVD-201308-139 发布时间: 2013-08-14 更新时间: 2013-08-14 ...

  6. Spring - Sring MVC入门

    2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职 ...

  7. (转载)PHP json_encode() 函数介绍

    (转载) 在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它. 这个函数的功能是将数值转换成json数据存 ...

  8. android获取设备屏幕大小的方法

    // 通过WindowManager获取 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay( ...

  9. Android 国内镜像

    Android SDK官网国内很难直接访问,除了FQ/VPN等方法还是很不方便. 原有的Android SDK直接下载因http://dl-ssl.google.com/android/reposit ...

  10. XenServer的某台机器一直pending住怎么办

    XenServer某台VM在操作后,图标一直显示成黄色,无法完成操作,成假死的状态.可以用下面命令强制终止VM: 1.在你假死的机器获得UUID 2.在XenServer的控制台输入如下命令获得ID ...