图片在这里失效了,欢迎点击跳转链接...
配置git
一、个人开发
xcode自带git环境
一、进入工作目录,初始化一个代码仓库
1.1 git init (会在对应目录下创建一个.git隐藏文件)
1.2 显示隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool false
1.3 重启finder commod+option+esc
二、给git仓库配置一个用户名和邮箱
2.1 git config user.name"自己名字"
2.2 git config user.email "自己提交代码邮箱"
此时在.git的config文件里面就会有配置好的名字和邮箱;
三、初始化代码
3.1 创建文件 touch main.m(文件名字自己定义)
3.1.1 git status(查看目录下的文件状态)后会显示红色的 (Untracked files): 新添加或者修改的文件未添加到暂缓区;
3.2 添加到暂缓区
3.2.1 git add main.m(工作区添加到暂缓区) 让git管理main.m文件;用git status查看会有青色(new file: main.m)显示,可以提交到代码仓库(Changes to be committed:);[注:git add . :一次添加多个文件]
3.3 提交代码到暂缓区
3.3.1 git commit -m "填写代码的版本号" (将暂缓区的文件添加到暂缓区主要的分支)【eg:[master (root-commit) fde42c6] 初始化代码:】;
3.4 修改文件
3.4.1 open main.m\(打开文件\)此时git status 文件又变红了,又跑到工作区去了;
3.4.2 git add main.m(我们需要重新添加)此时git status 文件就是青色的,加入缓存区了;
3.4.3 git commit -m "修改了main.m"(文件需要重新提交);
四、给git命令取别名
4.1 git config alias.st "status" // st = status
git config alias.ct "commit" \/\/ ct = commit
在config文件里面会显示
五、查看历史版本
5.1 git log(不能查看之前回退的版本号)
5.1.1 fde42c652693dde43f716a09a3d6be7271b16a30 // 版本号:由sha1加密算法生成的一个40位的哈希值,保证版本号唯一,不重复;
5.2 git reflog(可以查看之前回退的版本号)
5.2.1 显示前7位版本号命令,更简洁;
六、版本回退
6.1 git reset --hard // --hard强制回退
6.1.1 git reset --hard HEAD // 回到当前版本
6.1.2 git reset --hard HEAD^ // 回到上一个版本
6.1.3 git reset --hard HEAD^^ // 回到上两个版本
6.1.4 git reset --hard HEAD~100 // 回到上100个版本
6.1.5 git reset --hard 版本号前7位 // 回退到指定版本号
七 --global 配置全局用户名和邮箱
7.1 git config --global user.name "用户名"
7.2 git config --global user.email "自己提交代码邮箱"
终端命令行我也贴出来吧
bogon:git edge$ pwd
/Users/edge/Desktop/git
bogon:git edge$
bogon:git edge$ git config user.name"Edge"
bogon:git edge$ git config user.email "leonsongfeng@gail.com"
bogon:git edge$ touch main.m
bogon:git edge$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
main.m
nothing added to commit but untracked files present (use "git add" to track)
bogon:git edge$ git add main.m
bogon:git edge$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: main.m
bogon:git edge$ git commit -m "初始化代码"
[master (root-commit) fde42c6] 初始化代码
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 main.m
bogon:git edge$ open main.m
bogon:git edge$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: main.m
no changes added to commit (use "git add" and/or "git commit -a")
bogon:git edge$ git add main.m
bogon:git edge$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: main.m
bogon:git edge$ git commit -m "修改了main.m"
[master c65c95c] 修改了main.m
1 file changed, 5 insertions(+)
bogon:git edge$ git status
On branch master
nothing to commit, working directory clean
bogon:git edge$ touch dog.h dog.m
bogon:git edge$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
dog.h
dog.m
nothing added to commit but untracked files present (use "git add" to track)
bogon:git edge$ git add .
bogon:git edge$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: dog.h
new file: dog.m
bogon:git edge$ git commit -m "添加了许多文件"
[master 000b563] 添加了许多文件
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dog.h
create mode 100644 dog.m
bogon:git edge$
bogon:git edge$ git config alias.st "status"
bogon:git edge$ git config alias.ct "commit"
bogon:git edge$ git config alias.ct "status"
bogon:git edge$ git config alias.ct "commit"
bogon:git edge$ git st
On branch master
nothing to commit, working directory clean
bogon:git edge$ git log
commit 000b563c12e840099743cdc14c5138f6cb954d3c
Author: UEdge <leonsongfeng@gail.com>
Date: Fri Jul 22 12:11:28 2016 +0800
添加了许多文件
commit c65c95c8a46de8dc75db508e048f10c501c54be1
Author: UEdge <leonsongfeng@gail.com>
Date: Fri Jul 22 11:41:40 2016 +0800
修改了main.m
commit fde42c652693dde43f716a09a3d6be7271b16a30
Author: UEdge <leonsongfeng@gail.com>
Date: Fri Jul 22 11:22:23 2016 +0800
初始化代码
bogon:git edge$
bogon:git edge$ git reflog
000b563 HEAD@{0}: commit: 添加了许多文件
c65c95c HEAD@{1}: commit: 修改了main.m
fde42c6 HEAD@{2}: commit (initial): 初始化代码
二、团队开发
本地:文件夹目录(团队开发->经理,远程代码仓库,开发者)
一、创建共享代码仓库
1.1 git init --bare // 创建远程仓库(在自己创建的远程代码仓库文件夹里面)
1.2 git clone 仓库地址 // 克隆代码仓库【(
进入管理文件夹(如经理)在该地址里面克隆我们的代码仓库)xcode 6可以直接在Xcode的Cheak out an exiting project 下面拖入我们要克隆的远程代码仓库地址(如要克隆岛经理的里面,可以先进入经理文件夹,然后再将远程代码仓库地址放进去next就行了,xcode 6可以直接提交,xcode7会一直转圈,****原因在于有中文的问题,在Xcode 7之后绝对路径之中有中文就不识别了)】。
1.3 添加.gitignore //添加忽略文件夹
( 打开浏览器->进入github->搜索gitignore(一般是星星最多的第一个)->找到Object-C.gitignore->进入其中将里面的文件内容复制下来,然后在终端cd 进入经理的远程代码仓库文件夹里面 touch .gitignore 然后打开finder(记得显示mac隐藏文件)双击打开.gitignore 将复制的内容粘贴进去,并保存。)
1.4 初始化代码(xcode7以前的不会有问题,可以直接push)
****用Xcode创建项目工程创建的文件不再工作区直接在暂缓区!!!****工程放在在经理的远程代码仓库里面,用git status可以看见文件都是青色的,不用add了直接commit提交就好了。在xcode的Source Control里面有一个commit点进去,在可视化界面的下面输入版本标识(如:初始化代码),直接提交就好了。--真样子本地代码仓库就管理好项目了,可是远程代码仓库还不能。接下来在Xcode的Source Control 里面点击push(就在commit下面),直接push就好了。这样子就提交到远远程码仓库里面了。
1.5 (先进入自己的目录然后再) git clone 远程代码仓库地址;个人(开发者)clone远程代码仓库,不是经理的远程代码仓库,将远程代码仓库东西导进来吗。出示此刻代码里是有我们刚才建立的项目的。
1.6
1.6.1 不同人修改不同模块:当其中(经理)修改了其中的代码,变重新push一次,另外一个人直接pull将代码拉下来就好了。
1.6.2 不同人修改相同模块:因为此时远程代码仓库更新了,我们要先更新本地代码仓库再push。当我们修改完成了需要先提交到本地代码仓库然后再pull但本地(提示代码冲突,显示要求修改)。xcode会提示四种解决方案【只用我们提交的(左边的)、只用服务器的(右边的),左边的在上面右边的的在下面、左边的在下面右边的在上面】。此时代码重新进行了更新,需要重新提交再push,然后再pull就好了。
1.6.3 当storyBoard或者xib发生变化(经理进行提交再push);当开发人员也修改了storyBoard然后进行提交再push。当开发人员pull下来时会发生代码冲突,这样子即使按照上面的解决了冲突也会报错,而且storyBooard还打不开****所以在以后的开发过程中,我们一定要使用一个人的storyBoard,要么用他的,要么用我们自己的,否则只能版本回退了****
网络:用的肯定是我们大家总所周知的Github了。
没有账号的小伙伴我就不带大家注册了,大家自己注册下就好了,这个比较简单。
2.1 点击右上角的+号码,选择里面的New repository 创建新的代码仓库。
2.2 进入了创建好的代码仓库 Repository name 填写我们的仓库名字;Description (optional)对我们的代码仓库进行描素;下面一般我们是开源选择public不然的话private要钱的;Initialize this repository with a README 这个创建项目说明书,我们肯定会选中了。这就到了最下面了(左边是Add.gitignore,右边是Add a license)在左边我们点进去添加我们要忽略的文件(eg:Object-C),在右边证书里面直接选择Apache License 2.0 别问我为嘛,记住就好了。再点击创建就好了。这里好比创建了远程代码仓库并且添加了.gitignire文件。
[图片上传失败...(image-cbb2fa-1533608040543)]
[图片上传失败...(image-d203a1-1533608040543)]
2.3 将网络上的代码仓库clone到本地。进入到Xcode的欢迎界面,点击Cheak out an exiting project 并且打开我们刚在网络上创建的代码仓库,
****点击Clone or download下面的网址****复制粘贴进去,这个是带.git结尾的,千万别错了。直接进行下一步,选择自己要保存的目录进行创建并且Download.此时此刻里面就有了刚才我们创建的文件了,这里就是我们的工作区域了。我们的代码就放在里面进行commit和push了。
2.4 用xcode创建一个项目放在刚才的文件夹里面。我们直接进行Commit和push到网络就好了。这时候会有一个特殊的操作:Xcode 会提示你输入账号和密码,别急这样是防止别人修改我们的代码,我们要输入****gitHub上注册的账号和密码****输入了再提交等菊花结束就好了。
2.5 进入我们的github我们刚才建立的远程仓库刷新下(commod+R)就可以看见我们刚才提交的项目文件夹了。这个时候,我们的文件夹因为是public的,所以全世界的小伙伴们都可以查看并且下载,但是不能修改我们的代码进行提交。如果我们想要团队的小伙伴们进行修改,大家一起完成就要指定人群了。****点击右上角头像,在下拉列表里面选择settings****不是项目上面的settings->进去后点击SSH and GPG keys 我们需要将要修改人员的电脑的ssh到我们的github这样才能访问。****如何生成SSH keys **** 1.点击下面的 generating SSH keys 里面的 Adding a new SSH key to your GitHub account 里面就会告诉你如果添加新的ssh的方法了。
【1、进入终端,将下面的那一行命令复制进去执行,直到出现一个图案为止才结束了。2、进入finder 用户 目录home里面有个生成的.ssh隐藏文件夹里面有一个id_rsa_pub公历文件;3.进入终端 进入到该文件夹里面,执行 cat id_rsa_pub 查看该文件夹内容。这一串看起来乱码的就是电脑的公钥】我们进入github的里面点击SSH and GPG keys 进去点击添加Shh key 进去后里面。在title里面输入标识,将复制的内容放进key里面去。点击add就好了。这样这台电脑就可以和github的这个代码仓库无缝连接了。
eg:修改大神的代码AFNetworkinig。我们先将这个clone下来,在xcode里面修改,再按步骤提交上传就好了。