是否显示隐藏文件夹的终端命令:
defaults write com.apple.finder AppleShowAllFiles YES
defaults write com.apple.finder AppleShowAllFiles YES
1.git工作原理和git下的文件夹
(1)工作区:仓库文件夹里除了.git目录以外的内容;
(2)版本库:.git目录,用于存储记录版本信息;
暂缓区(stage);
分支(master)git自动创建的分支;
HEAD指针:用于指向当前分支;
一、git简介
1.git和svn对比:
(1)很多情况下,git的速度远远比SVN快;
(2)SVN是集中式管理,git是分布式管理;
(3)SVN使用分支比较笨拙,git可以轻松拥有多个分支;
(4)SVN必须联网才能正常工作,git支持本地版本控制工作;
(5)分布式和集中式最大区别:在分布式下时候:
开发者可以本地提交代码;
每个开发者机器上都有一个服务器的数据库;
2.git
(1)git init :初始化一个代码仓库
(2)使用git前必须配置用户名和邮箱
git config user.name “CYJ”
git config user.email “[email protected]”
(3)给git配置全局的用户名和邮箱
git config —global user.name “CYJ”
git config —global user.email “[email protected]”
3.初始化项目
touch main.m 创建文件
git status 查看状态
git add main.c 将文件添加到暂缓区 (git add . 将在工作区中所有不再暂缓区中的所有格内容添加到暂缓区中)
git commit -m "初始化项目" main.m :将暂缓区中的内容提交到本地版本库,清空暂缓区
注意:添加的文件或者是修改的文件都需要通过add命令添加到暂缓区
4.git status 查看状态不同颜色代表不同状态
红色:该文件被添加或者修改,但是没有添加到git的暂缓区;
绿色:文件在暂缓区中,但是没有被添加到本地版本库;
5.git工作原理
(1)工作区:仓库文件夹里除了.git目录以外的内容;
(2)版本库:.git目录,用于存储记录版本信息;
暂缓区(stage);
分支(master)git自动创建的分支;
HEAD指针:用于指向当前分支;
(3)git add:把文件修改或者新添加的文件添加到暂缓区;
git commit 把暂缓区的所有内容提交到当前分支;
6.
(1)给命令行起别名:
git config alias.st “status” 给status起一个st别名;
git config —global alias.st “status” 给status起一个全局别名;
(2)删除文件:
git rm 文件名 删除指定的文件
(3)查看版本信息:
git log :版本号(是由sha1算法生成的40位哈希值 )
git reflog :可以查看所有版本回退的操作
(4)版本回退
git reset —hard HEAD :回到当前版本;
git reset —hard HEAD^ :回到上一个版本;
git reset —hard HEAD^^ :回到上上个版本;
git reset —hard HEAD~n :退回到前n个版本;
git reset —hard 版本号(前5位) :回到指定的版本;
做上面的任意一个操作是在本地版本库中进行回退的,还需要将共享版本库中保存的也回退(注意:此操作不可逆)
get push -f 强制push到共享版本库;
二、共享版本库及使用git管理项目
1.共享版本库
(1)git服务器的搭建非常繁琐;可以把代码托管到(GitHub/OSChina);也使用一个文件夹或者一个U盘;
(2)git init --bare 使用一个文件夹作为一个共享版本库
(3)将共享版本库的所有文件下载下来
git clone 共享版本库地址
2.删除忽略文件
touch .gitignore 创建一个.gitignore文件 ;
去gitHub上将内容复制到.gitignore文件中;
git add .gitignore:把.gitignore文件添加到暂缓区;
git commit -m “注释” .gitignore :将暂缓区中的内容提交到master分支中;
3.初始化项目
在Xcode中的git对应的人员的文件夹中创建新的项目;
点击source Control,点击commit进行提交本地版本库;
点击source Control,点击push,提交到共享版本库之中;
4.张三加入开发
(1)来到张三的文件夹:
git clone 共享版本库地址 将共享版本库中的代码下载到张三的文件夹中;
(2)可以直接将代码新建到共享版本库下载下来的文件夹中,点击source Control,点击commit进行提交本地版本库;如果网速快,也可以同时勾选push到共享版本库中;
(3)想要从共享版本库中更新最新的代码到本地,需要点击source Control,点击pull进行提交本地版本库;
5.git管理方式下 使用静态库的方法:
(1)方法一:将静态库拖入项目中,静态库的.h文件和.a文件会显示?表示不识别;右击这两个文件,选择sourceControl,点击add;就可以使用了(表示已经可以commit添加到暂缓区了);
(2)方法二:将静态库拖入项目中,用终端,cd finder中静态库所在的文件夹;输入命令git add.;这样就可以使用了(表示已经可以commit添加到暂缓区了);
三、版本备份和创建新人共享库
1.版本备份
(1)当程序开发完成后,需要进行备份(打上标签);
使用git时候如果需要备份,都是使用命令行进行备份;
git tag -a weibo1.0 -m “注释” 在本地打上标签
git tag 查看当前有哪些tag
git push origin weibo1.0 将标签push到共享版本库
当别人需要查看tag的时候
git pull
git tag
(2)将标签push到共享版本库;开始2.0版本的开发;发现1.0版本有bug;
(3)创建一个文件夹,用来修复bug,在这个文件夹中将,将共享版本库中的内容clone下来;
在微博中创建weibo1.1fixBug文件夹,在这个文件夹中修复bug
cd weibo1.1fixBug文件夹
git clone 服务器保存的文件夹地址 将这个服务器中的文件clone到weibo1.1fixBug文件夹中;
(4)将当前的代码转为1.0标签,创建分支,并切换到该分支;在分支中修复bug,上传到appstore;cd 来到git同级目录下的工作区中;
git checkout 标签名(在这里是weibo1.0) 切换到1.0标签,但是不能在标签中修改代码
git checkout -b 标签名(weibo1.1 fixbug) 创建了新的分支,并切换到了这个分支;
在这里完成bug的修复;
在Xcode中的sourceControl中commit并勾选push到共享文件夹
(5)将修复好的版本,打上tag并上传到共享版本库;
git tag -a weibo1.0 -m “注释” 在当前这个分支中为修复了bug的这个版本打上tag;
git tag 查看当前有哪些tag
git push origin weibo1.1 将新的标签push到共享版本库
(6)跟当前正在开发的2.0版本进行合并
在正在开发的2.0版本中,点击sourceControl ,点击pull,选择weibo1.1fixbug 分支,进行pull;
然后选择点击sourceControl ,选择push,选择当前正在开发的版本,进行push;上传到共享版本库;
(7)删除分支
git branch 查看本地分支
git branch -r 查看所有的分支
git checkout 分支名 切换到正在开发的分支中
git branch -d 分支名 删除本地分支
git branch -r -d 分支的全名 删除本地版本库的分支
git push origin —delete 分支名 删除共享版本库中的分支
2.创建新人的共享版本库 (项目经理做的)
因为新人可能会随意上传修改共享版本库的代码,所以需要为新人创建一个单独的文件夹在服务器中,来给他使用,不会影响到正在开发的文件
(1)在服务器中创建一个lisi的文件夹
cd lisi的文件夹
git init —bare 使用lisi文件夹作为一个共享版本库
来到开发者人员的电脑中,正在开发的Xcode中,选择sourceControl,选择正在开发的分支,选择configure weibo。。;选择Remotes,点击+;填写name和address(lisi的文件夹的地址);
点击sourceControl,点击push,选择 新建的共享版本库,点击push;
在lisi的电脑中,git clone,将共享版本库中的文件clone下来;
四、GitHub托管文件和OSChina托管文件
www.github.com
git.oschina.net
1.GitHub托管文件
方式一:HTTPS
方式二:SSH Keys
SSH Keys认证:
1.公钥:存在github上用来解密
2.私钥:存在本地的一个.ssh文件下