资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,5/4/2012,#,单击此处编辑母版标题样式,Git,新一代版本控制系统,superwen,Git,简史,Linux,内核开源项目有着为数众广的参与者。一开始整个项目组,BitKeeper,来管理和维护代码。,2005,年,,BitKeeper,不再能免费使用,这就迫使,Linux,开源社区开发一套属于自己的版本控制系统。,自诞生于,2005,年以来,,Git,日臻成熟完善,它的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统,可以应付各种复杂的项目开发需求。,Git,基础,直接记录快照,而非差异比较。,近乎所有操作都是本地执行,时刻保持数据完整性,多数操作仅添加数据,文件的三种状态,-,已修改(,modified,)、已暂存(,staged,)和已提交(,committed,),为什么要使用,Git,本地建立版本库,本地版本控制,多主机异地协同工作,重写提交说明,有后悔药可以吃,更好用的提交列表,更好的差异比较。,更完善的分支系统,代理,SVN,提交实现移动式办公,无处不在的分页器,速度快,在,Linux,下安装,Git,使用包安装,以,centos,为例,$ yum install git,$ yum install git-svn git-email git-gui gitk,使用源代码安装,从官网下载源码,http:/git-,$,tar jxvf git-version.tar.bz2,$,cd git-version,$ make prefix=/usr/local all,$ sudo make install prefix=/usr/local,在,Windows,下安装,Git,(,Cygwin,),通过,Cygwin,安装,(,不建议,),通过,msysGit, -version,#,配置,$,git config -global user.name John Doe,$ git config -global user.email johndoe,/-system,系统配置,/-,global,该用户的全局配置,#,查看配置信息,$,git config -list,$ git config user.name,#,获取帮助,任意一个都可以,$,git help config,$ git config -help,$ man git-config,Git,的初始化新仓库,#,在工作目录中初始化新仓库,$ cd myproject,$ git init,#,从现有仓库克隆,克隆完整数据,包括版本信息,$ git clone git:/ git clone git:/ mygrit,#,检查当前文件状态,$ git status,Git,的跟踪文件,#,跟踪新文件,$ git add *.c,#,将文件添加到暂缓区,每次修改之后都需要将文件放到暂缓区去,$ git add *.c,#,忽略某些文件,#,修改,.gitignore,*.a #,忽略所有,.a,结尾的文件,!lib.a #,但,lib.a,除外,/TODO #,仅仅忽略项目根目录下的,TODO,文件,不包括,subdir/TODO,build/ #,忽略,build/,目录下的所有文件,doc/*.txt #,会忽略,doc/notes.txt,但不包括,doc/server/arch.txt,Git,的比较,#,查看尚未暂存的文件更新了哪些部分,$ git diff,#,查看暂存区文件和上次提交的快照之间的差异,$ git diff -cached,Git,的提交更新,#,提交更新,#,每次准备提交前,先用,git status,看下,是不是都已暂,#,存起来了,然后再运行提交命令,$ git commit,$ git commit -m initial project version,#,跳过使用暂存区域,$ git commit -a,Git,的移除文件,#,移除文件,$ git rm grit.gemspec,#,移除已经修改的文件,$ git rm grit.gemspec-f,#,仅仅从暂缓区移除,$ git rm grit.gemspec,Git,的移除文件,#,移除文件,$ git rm grit.gemspec,#,移除已经修改的文件,$ git rm grit.gemspec-f,#,仅仅从暂缓区移除,$ git rm grit.gemspec,#,移动文件,$,git mv file_from file_to,Git,的查看提交历史,#,查看提交历史,$ git log,-p,展开显示每次提交的内容差异,-n,则仅显示最近的,n,次更新,-stat,,仅显示简要的增改行数统计,-pretty=format:%h - %an, %ar : %s,Git,的,修改最后一次提交,#,修改最后一次提交,$ git commit -m initial commit,$ git add forgotten_file,$ git commit amend,#,上面的三条命令最终只是产生一个提交,.,#,取消已经暂存的文件,$,git reset HEAD benchmarks.rb,#,取消对文件的修改,$,git checkout -,benchmarks.rb,Git,的远程仓库,#,查看当前的远程库,$ git remote,#,显示对应的克隆地址,(origin,为默认的远程库名称,),$ git remote v,#,添加远程仓库,$,git remote add pb git:/ git fetch remote-name,#,推送数据到远程仓库,$,git push origin master,Git,的远程仓库,#,查看远程仓库信息,$ git remote show origin,#,远程仓库的重命名,$ git remote rename pb paul,#,远程仓库的删除,$ git remote rm paul,Git,的标签,#,列显已有的标签,$ git tag,#,列出符合条件的标签,$ git tag -l v1.4.2.*,Git,的标签,#,新建标签,#,标签有两种类型:轻量级的(,lightweight,)和含附注的(,annotated,),#,创建一个轻量级标签,$ git tag v1.4-lw,#,创建一个含附注类型的标签非常简单,$ git tag -a v1.4 -m my version 1.4,Git,的标签,#,分享标签,#,默认情况下,,git push,不会把标签传送到远端服务器,$ git push origin v1.5,#,一次推送所有本地新增的标签,$ git push origin -tags,Git,的技巧和窍门,#,自动完成,#Windows,上安装了,msysGit,,默认已经配好了这个自动完成脚本。,#Linux,上,$ cp $GitHomecontrib/completion/git-completion.bash /etc/bash_completion.d/,Git,的技巧和窍门,#Git,命令别名,$ git config -global alias.co checkout,$ git config -global alias.br branch,$ git config -global alias.last log -1 HEAD,Git,的分支,#,创建分支,$ git branch testing,#,切换到分支,$ git checkout testing,#,创建并切换到分支,$ git checkout -b testing,Git,的分支,Git,的分支,Git,的分支,#,与当前分支合并,$ git merge testing,#,合并时难免有冲突,#,调用图形化工具解决冲突,$ git mergetool,#,删除分支(不能删除一个未合并的分支),$ git branch -d testing,#,强制删除一个分支,$ git branch -D testing,Git,的分支,Git,的分支,Git,的分支,#,查看分支,$ git branch,#,查看分支最后一次提交的信息,$ git branch -v,#,查看已经合并,|,尚未合并的分支,$ git branch -merged|no-merged,Git,的分支,#,同步远程服务器上的数据到本地,$ git fetch origin,#,推送本地分支,$ git push origin serverfix,#,推送本地分支,serverfix,为,origin,的,awesomebranch,分支,$ git push origin serverfix:awesomebranch,#,删除远程分支,$ git push origin:serverfix,Git,的服务器上的,Git,
展开阅读全文