一、简介
1、什么是git?
git是一款开源的分布式版本控制工具,在世界上所有分布式版本控制工具中,git是最快、最简单、最流行的。
2、gitd的起源
git的做着是Linux之父:Linus Benedict Torvalds,当初开发git仅仅是为了辅助Linux内核的开发,方便管理源代码
3、git的现在
在国外已经非常普及,在国内并未普及,但是原来越多的开源项目已经转移到git上
二、其他版本控制工具
1、CVS,最早的开源、免费的集中式版本控制工具,自身设计有问题,会造成提交文件不完整
2、SVN,修正了CVS一些稳定性问题,是目前用得最多的集中式版本控制工具
3、ClearCase,收费的集中式版本控制工具,安装比Windows还大,运行速度比蜗牛还慢
4、VSS 微软的集中式版本控制工具,集成在Visual Studio中
三、git和SVN的简单对比
1、速度,在很多情况下,git的速度远远比SVN快
2、结构,SVN是集中式管理,git是分布式管理
集中式管理
分布式管理
3、其他,SVN使用分支比较笨拙,git可以轻松拥有无限个分支;SVN必须联网才能正常工作,git支持本地版本控制,旧版本的SVN在每一个目录防止一个.svn目录,git只会在根目录拥有一个.git目录
svn工作流程
git工作流程
四、使用git,跟SVN一样,你可以通过命令行或者图形界面客户端使用git
1、在Mac上,比较好用的git图形有:SourceTree,gitHub,不过他专门为Github网站而设计,Xcode
五、git 常用指令
1、git help
查看其它指定的用法:git help 其它指令
2、git config git配置信息相关(修改的是.git/config文件)
配置用户名 git config "user.name" 用户名(用于跟踪修改记录)
配置邮箱 git config "user.email" 邮箱 (用于多人开发间的沟通)
查看配置信息 git config -l
编辑配置信息 git config -e(用vim 编辑)
设置指令的别名:git config alias.别名 原指令名称
git config alias.ci "commit -m"
设置带参数指令命令:git config alias.别名 原指
将此设置应用到整个系统中:git config --global
git log --pretty=oneline
git config alias.log1 "log --pretty=oneline"
3、git status:查看文件的状态
查看某个文件的状态 git status 文件名
查看当前路径所有文件的状态 git status
4、git log:查看文件的修改日志
查看某个文件的修改日志:git log 文件名
查看当前路径下所有文件的修改日志 git log
用一行的方式查看简单的日志信息 git log --pretty=oneline
查看最近N次修改修改 git log -N (N是一个整数)
5、git diff:查看文件最新改动的地方
查看某个文件的最新改动的地方:git diff 文件名
查看当前路径所有文件最新改动的地方:git diff
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
6、git reset:版本回退(建议加上 --hard参数,git支持无限次数后悔)
回退到上一个版本 git reset --hard HEAD^
回退到上上一个版本 git reset --hard HEAD^^
回退到上N个版本 git reset --hard HEAD~N(N是一个整数)
回退到任意一个版本 git reset --hard 版本号(版本号用7位即可)
7、git reflog:查看指令使用记录(能够查看所有的版本号)
8、git rm :删除文件(删除之后要进行commit操作,才能同步到版本库)
9、git clone:
下远程仓库到当前路径:git clone 仓库的URL
下载远程仓库到特定路径:git clone 仓库的URL 存放仓库路径
10、git pull:下载远程仓库的最新信息到本地仓库
11、git push :将本地的仓库信息推送到远程仓库
六、git工作原理,如果想了解git的工作原理,有个核心的概念必须知道
工作区(Working Drictory):仓库文件夹里除了.git目录以外的内容
版本库(Repository):.git目录,用于存储记录版本信息
暂缓区:(stage)
分支(master):git 自动创建的第一个分支
HEAD指针:用于指向当前分支
七、git add 和git commit 的原理
git add:把文件修改添加到暂存区
git commit:把暂存区的所有内容提交到当前分支
git branch
*master
git checkout -b fix_bug 创建分支
git checkout fix_bug 切换分支
八、远程仓库:
如果是多人团队开发,最好还是搭建一个远程仓库,远程仓库的途径:
1、自己大家一个git服务器
2、在gitHub上托管项目:公开项目完全免费
3、在oschina上托管项目:完全免费,在国内访问速度快
本文出自 “小鱼的博客” 博客,谢绝转载!