1 SVN
集中式版本控制工具:
2 git
开源的分布式版本控制工具,git提交时可以在本地提交
svn和git对比:
速度:在很多情况下,git的速度远远比svn快
结构:svn是集中式管理;git是分布式管理
其他:svn使用分支比较笨拙,git可以轻松拥有无限个分支
svn必须联网才能正常工作,git支持本地版本控制工作
旧版本的svn会在每一个目录下有一个.svn,git只会在根目录下拥有一个.git
git工作流程:
共享版本库[下载是使用clone]<—————开发人员1[提交commit提交到本地代码仓库,必须push到共享版本库中,开发人员2可以使用pull来下载开发人员1push的代码]
共享版本库<—————开发人员2
在分布式下开发则可以本地提交,每个开发者机器上都有一个服务器的数据库;拥有一个本地的代码仓库。
git演练
显示隐藏文件的命令是:defaults write com.apple.finder AppleShowAllFiles -bool true
显示隐藏文件夹的命令是:defaults write com.apple.finder AppleShowAllFiles -bool true ; killall Finder
1 个人演练(命令行演练)
-1 进入到工作目录中,初始化一个代码仓库 git init
-2 给该git仓库配置一个用户名和邮箱 git config user.name “xxx"
git config user.email “xxx@xxx.com"
-3 初始化一个代码 touch main.m
git add main.m
-4 查看文件的状态 git status
Untracked files(红色文件):新添加的文件或者新修改的文件在工作区中,没有添加到暂缓区。
Changes to be committed(绿色):将工作区中的代码已经添加到暂缓区,可以被提交到代码仓库中了。
-git commit -m "初始化项目"
1> 给所有的文件提交时的注释
git commit -m “xxxxxx"
git commit -m "modified the first file"
2> git diff
3>git diff --staged
4> git rm xx.xx
5>git mv main.m pudding.m 相当于rename
6>git mv pudding.m hh/patty.m 将pudding.m 转移到hh文件夹下改名为patty.m
-5 修改文件
open main.m
-6 将工作区所有的文件添加到暂缓去
git add .
-7 给git命令起别名
git config alias.xx “status"
git config alias.xx “commit -m"
-8 查看历史版本
git log
git relog
1>查询某一个人提交的代码命令是
git log author=“xxxx"
-9 版本回退
git reset —hard HEAD
git reset —hard HEAD^
git reset —hard HEAD^^
git reset —hard HEAD~100
git reset —hard 版本号前7位
-10 -global的作用(配置全局的用户名和密码,其他地方可以不配置)
git config —global user.name “why"
git config —global user.email “why@163.com"
git 工作原理
1 工作区:仓库文件夹里除了.git目录以外的内容
2 版本库:.git目录。用户存储记录版本信息
暂缓区(stage):
分支(master):git自动创建第一个分支
HEAD指针:用于指向当前分支
3 git add:把文件修改添加到暂缓区
git commit:把暂缓区的所有内容提交到当前分支
二 团队开发
共享库:可以是文件夹/U盘/网盘(?)/GitHub/osChina
1 创建代码共享库(让一个文件夹成为共享库)
git init --bare
2 经理将共享代码仓库总的代码clone下来
git clone 地址
3 项目经理初始化项目
忽略文件:在和.git等级目录下创建一个.gitignore文件,在该文件下准备忽略的文件;可以去gitHub查找oc需要忽略的内容,将内容填写到.gitignore中
git add . /git commit -m “注释”将.gitignore添加到本地仓库管理
远程服务器中(gitHub)