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