先来看看什么是代码远程托管: 其实就是将我们的代码上传到GitHub的服务器上, 供别人下载, 当然了也可以在团队开发的时候, 使用GitHub进行代码合并工作, 下面我们进入正题
(已经有远程仓库的网址, 请直接跳转到2.0步骤查看)
(工程是从远程仓库拉取下来的, 并且写好了代码后, 不会进行拉取/推送, )
忠告: 进行拉取, 推送之前最好备份一下你的代码
Git方式 -> 步骤3.0
SVN方式 -> 步骤4.0
Git回滚-> 步骤5.0
SVN回滚-> 步骤6.0
步骤1.0 创建远程仓库
这里我们使用https://github.com(github现在支持GIT和SVN2种访问方式) (可能公司有自己的服务器, 会给你一个网址)(如果想只是使用SVN的, 推荐一个svn999.com)
1.1 我们需要注册

1.1注册登录.png
约束比较多, 账号和邮箱啊, 密码之类的, 如果有一个不符合人家规定, 就会跳转到一个页面, 会告诉你哪个不行, 修改之后, 显示对号了, 之后继续sign up(注册), 然后注册好之后, 重新进入到https://github.com

1.2登录成功后.png
1.2 创建远程仓库
然后点击右上角+号, 新建个项目(远程仓库)

1.3新建项目(远程仓库).png

1.4新建项目.png
获取远程仓库的网址

1.5获取仓库网址.png
2.0 在Xcode中进行代码克隆(下载)到本地

2.0打开Xcode准备拉取.png
然后输入远程仓库的网址

2.1输入远程仓库的网址.png
设置和远程仓库交互的方式(用GIT还是SVN)(根据你远程仓库网址的类型, 如果是既支持GIT也支持SVN那就无所谓, 但是只支持其中一种方式, 那就不要选错了, 当然了, 账号密码也是要对应哪个网站, 或者服务器的)

2.2设置和远程仓库交互的方式(用GIT还是SVN).png
如果点击Next错误了: 看看是不是这个

设置本地仓库位置

2.3设置本地仓库的位置.png

2.4进行克隆(下载).png
成功后, 就会自动打开你克隆(下载)的工程

2.5 下载成功.png
步骤3.0 如何使用Xcode自带的Git进行代码的提交, 拉取, 推送
壮士:这里有碗汤你先喝了, 我们先来看下原理:参考这个链接:http://www.jianshu.com/p/0582e1908c22可见, 我们需要做以下3步:
Commit操作:
解释: 先把Xcode工作区(你写的代码), 提交到本地仓库),
Pull操作:
解释: 然后从远程仓库拉取代码(可能别人刚传了别人写的, 你需要拉下来和你新写的合并一下), 然后在本地仓库合并后, 保证编译, 运行无错误后.
Push操作:
解释: 在进行将本地仓库你的代码推送到远程仓库上面.让团队里别的人可以进行下载
3.1 Commit操作
打开工程后, 看这里有个Source Control

点开我们来说一下

然后当你修改了代码后, 修改过的文件都是显示M

然后我们点击Source Control 菜单, 选择Commit(提交, 把Xcode工作区的变更提交到本地仓库)


然后点击commit按钮之后, M标志没了就代表提交变更已经到本地仓库啦, 但是不是远程仓库哦, 别人还不能拿到你新写的代码!!(庆祝一下, 成功一小步)

'
3.2 Pull(拉取)操作
点开Source Control 然后执行Pull操作

这个时候, 可能会出现警告提示, 如图:(如果没出现直接略过)
// 你有本地变更没有提交到本地仓库, 不让你去拉取代码

但是明明我们都Commit过了啊, 这是因为, 有一个配置文件实时的刷新(就是刚才没勾选那个), 那么我们只有删除它啦!
删除这个配置文件
进入终端
利用cd命令进入到我们工程所在的文件夹, 如图:

如图:

然后运行命令:
解释下参数
git rm --cached 工程名.xcodeproj/project.xcworkspace/xcuserdata/电脑用户名.xcuserdatad/UserInterfaceState.xcuserstate
例如:
git rm --cached php.xcodeproj/project.xcworkspace/xcuserdata/lidongxu.xcuserdatad/UserInterfaceState.xcuserstate
然后输入完命令, 回车运行

然后重新拉取, (或者你没出现警告, 应该是这样的)

点击Pull按钮之后, 就会把远程仓库的代码拉到本地了, 然后运行下吧看看有没有错误啊, 冲突之类的(如果有冲突, 就是商量下, 用谁的)


然后继续点击Pull按钮拉取代码
步骤3.3 Push(推送代码)到远程服务器
还是一样, 打开Source Control 然后点击Push
然后点击Push


然后点击Push按钮, 如果你是第一次配置, 可能会让你输入远程仓库网站对应的登录账号和密码

然后显示正在change, 等待一会儿

下面这个会一闪, 然后自己消失的哦!

然后怎么看我们是否正在把本地仓库代码推送到了远程服务器上, 看一下我们对应的网站

以上就是我们Git的基本使用过程
4.0 SVN使用方式
先来解释下Source Control 里不同的地方

然后现在我们编写完代码之后:

4.1 我们要拉取(update)远程仓库的代码
如果你不拉取, 就直接推送, 很可能把远程仓库里别人代码覆盖掉, 所以一定要先拉取

4.2然后确认没有错误之后, 然后提交(Commit)到远程仓库,
这个Commit跟Git中的可不一样哦!

4.3弹出这个界面, 选择你要推送的代码

这样, 我们SVN就基本使用过程
有的时候, 我们代码合乱了, 或者需要穿越回到昨天的那个代码样式怎么办? 不要怕. 代码版本管理就是为了方便我们的. 往下看
5.0 Git回滚本地代码
进入到我们本地仓库目录下
cd 仓库文件夹路径

然后我们可以看一下, 项目中代码现在是什么样子(这里就随便写了2个变量)

然后提交到本地仓库, 拉取代码合并, 推送到远程服务器, 现在远程服务器有版本0, 版本1 和版本2的代码了(本地是版本2的), 现在我想
让本地代码进行回滚.
5.1 查看我们提交的记录
输入命令 git log --pretty=oneline

5.2 git reset --hard HEAD^
HEAD^回滚上次提交 (取消刚才的提交)
HEAD^^ 回滚到上次的上次的提交
输入命令运行.
HEAD is now at d490df9 (本地代码变成上次提交的时候的样子了)


6.0 SVN回滚代码
现在代码是这样的.

6.1 先进入到本地仓库下

6.2 查看我们的提交记录
输入命令 svn log

每个r后面的数字 就是一次提交的记录
6.3 回滚到某次提交的时候的代码的样子
svn update -r 数字 (数字就是那个6 5 4 3 2 1)
根据自己电脑上的数字自己选择
这里我们回滚到最初的状态

完成之后打开代码查看

文/M_Lee(简书作者)
原文链接:http://www.jianshu.com/p/300f8fd043c5
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
网友评论