Xcode、Git和Github是三个伟大的编程工具。本文记录一下如何在Xcode中使用Git作为源代码控制工具,以及如何将本地的Git仓库和远程Github上的仓库集成起来。

1. 如何为新建的Xcode项目使用Git

Xcode4开始,就已经将Git作为内置的源代码控制(Source Control)工具了,所以为新建的项目使用git来管理是很方便的。

在新建项目向导中,可以直接选择Git作为源代码控制工具,完成项目新建向导后,就在本地项目目下新建了一个仓库。

2. 如何为已经存在的项目使用Git

如果已经存在了一个Project,想要为它使用Git,可以利用Git的命令行来操作。

假设该项目的根目录是: ~/Documents/Projects/ProjectA

(1) 在终端中先进入该目录:

cd ~/Documents/Projects/ProjectA

(2) 在该目录初始化Git仓库:

git init

(3) 注意,这时一定不要着急将目录下的所有文件都添加进来,先手工设置一些针对Mac OS X上的无用文件的排除(exclude),在项目根目录(ProjectA)下新建.gitignore文件,在该文件中添加如下排除规则:

# 排除build目录
build/* # Exclude temp nibs and swap files
# 排除nib临时文件和交换文件
*~.nib
*.swp # 排除OS X的文件夹显示属性目录
.DS_Store # 排除xcode3 xcode4的用户自定义设置文件
*.mode1
*.mode1v3
*.mode2v3
*.perspective
*.perspectivev3
*.pbxuser
xcuserdata

上面的规则只是大多数开发者都不需要进行版本控制的文件,还可以根据实际需要添加其它排除规则. 关于.gitignore更多的信息可以google之

(4) 向git仓库中添加源文件

继续在终端命令行中,进入ProjectA下,

git add .
git commit -m "Initial commit"

然后重启Xcode,就可以在Orgnizer视图中的“Repositories”选项卡界面下看到ProjectA的仓库了,并且已经完成了源代码的初次提交。此后,就可以进行源代码在本地仓库的版本控制了。

3. 如何将Xcode的本地Git仓库与Github的远程仓库集成?

Github的理念源自于Git,但是与Git相比已经有了一些异化的功能特性(比如Pull Request),所以二者并非完全一致的。但是从版本控制方面来说,差别不大。所以利用Xcode内置的Git管理功能即可与Github连接,而无需额外安装Github客户端。

Github的仓库地址有两种方式:

一种是SSH连接方式,形式为:git@github.com:Hao-Wu/ProjecA.git

一种是HTTP形式,形式为:https://github.com/Hao-Wu/ProjectA.git

这两种仓库地址使用的认证方式也不一样。对于SSH连接,使用非对称公钥认证方法;对于HTTP连接,使用帐号密码认证方式。

3.1 使用SSH方式

# 检查本机是否已经存在ssh公钥
$ cd ~/.ssh

如果以前已经生成过ssh密钥对,那么就存在这个.ssh目录,目录下有id_rsa.pub公钥文件。如果还记得这个密钥对生成的细节(比如passphrase),就可以直接拿来用;否则就再多花费半分钟时间,生成新的密钥对(记得先备份旧的密钥文件,说不定其它什么项目或程序在使用):

#创建新的SSH密钥对
$ ssh-keygen -t rsa -C "your_email@example.com" Enter passphrase (empty for no passphrase): [输入密码]
Enter same passphrase again: [再次输入密码]

到这里,SSH密钥对就生成了,接下来将id_rsa.pub文件用文本编辑器打开,将其中的全部字符串拷贝,并粘贴到web版的github.com中SSH公钥设置内。这样Xcode就可以利用SSH认证与github连接。先测试一下:

$ ssh -T git@github.com

本机就会向github发出一个连接请求,随后Mac OS会弹出一些安全认证和请求获取授权的提示框,要选择允许。如果github的服务器返回:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

这就说明本地的git已经能够成功与github服务器通信了。(不用担心上面的访问被拒绝的提示)。在确定能够与github服务器连接后,即可为ProjectA的本地git仓库添加远程地址:

依次点击,  Orgnizer –> Repositories –> ProjectA –> Remotes –> Add Remote

输入ProjectA在github上的地址(如果没有就先在github.com的仓库管理页面新建一个名为ProjectA的仓库):git@github.com:Hao-Wu/ProjecA.git

Username与Password不用输入,关闭Orgnizer视图。在File –> Source Control中即可将本地仓库的代码Push到github上了。

3.2 使用HTTP方式

使用http认证方式省去了生成SSH证书的步骤,但是在每次提交时都需要输入github的帐号和密码。

类似地,依次点击 Orgnizer –> Repositories –> ProjectA –> Remotes –> Add Remote

输入ProjectA在github的http形式的地址:https://github.com/Hao-Wu/ProjectA.git

在UserName和Pasword中分别输入github网站登录的用户名和密码 (用户名不是邮箱形式)。关闭Orgnizer视图,File –> Source Control –> Push, 即可向github中push本地仓库的代码。这个过程可能需要重新输入一遍github的用户名和密码。

为Xcode配置Git和Github的更多相关文章

  1. Pycharm配置Git和Github

    安装Git(安装过程略) 注册Github(注册过程略) Pycharm配置 Github配置 进入Pycharm后点File——Settings,进入设置页面,依次展开Version Control ...

  2. 【IDEA】本地新建Maven项目+配置Git和GitHub+代码上传和拉取到GitHub+其他IDEA和GitHub实战

    一.本地新建Maven项目并启动成功 1. 按照IDEA提供的模板,构建一个maven webapp的模板项目. 一路Next,到最后的finish.如下图. 2. 新建Tomcat,启动刚建立的项目 ...

  3. iOS:使用Github托管自己本地的项目代码方式一:(Xcode方式:开发工具Xcode配置Git,由Xcode-->Source Control-->Commit)

    管理代码的地方主要有:Github(国外流行).CocoaChina.Cocoa4App.中国开源社区.CSDN.博客园.简书等等..... 现在主要介绍如何使用Github托管自己的项目代码. 尊重 ...

  4. androidstudio 配置git和github

    git是版本控制工具 github是一个网站,git可以把项目上传至这个网站 1:先下载git,并且安装,一般默认即可,安装成功可以点击电脑右键出现 2:生成id_rsa.pub, 配置账号和邮箱 点 ...

  5. 初次配置git与github出现push不了的问题

    ssh: connect to host gmail.com port 22: No route to host fatal: Could not read from remote repositor ...

  6. 新电脑配置 git 同步github账户

    1.下载安装git 2.初始化 仓库文件夹 git init 3.生成公钥ssh-keygen -t rsa -C "youremail@example.com"4.github ...

  7. xcode6 cocos2dx开玩笑git和github学习记录

    1. git Xcode4开始,它一直Git作为一个内置的源代码控制(Source Control)工具,所以对于新项目的用途git要管理非常方便.在新建项目向导.可以直接选择Git作为源控制工具.项 ...

  8. 图文详解 : 什么是版本控制?Eclipse配置SVN和IDEA配置GIT教程

    前言 虽然在工作中, VCS已然配置妥当, 我们敲好的业务只需要Commit&push提交就好, 但是不妨碍我们了解什么是版本控制, 为什么要使用这类工具? ps.最近项目里的小伙伴想在自己家 ...

  9. git与github安装、配置、pull、push

    操作系统是Ubuntu 16.04 LTS 64bit 1 安装git (1)安装 sudo apt-get install git-core (2)一些全局变量的初始化 在本地建立一个文件夹,然后做 ...

随机推荐

  1. python3笔记十九:os和ospath模块

    一:学习内容 os模块 ospath模块 获取指定目录下所有文件和目录 二:os模块 包含了普遍的操作系统功能,需要导入该模块:import os 当前所在位置目录结构为: 目录操作 1.获取当前目录 ...

  2. react native props上存在的属性,显示不存在

    问题:类型“Readonly<{}> & Readonly<{ children?: ReactNode; }>”上不存在属性“navigation”.ts(2339) ...

  3. [Nova] Failed to get shared "write" lock Is another process using the image?

    目录 文章目录 目录 问题 解决 问题 [root@overcloud-compute-0 ~]# /usr/bin/python2 -m oslo_concurrency.prlimit --as= ...

  4. PythonScript_demo--搭建PXE服务器

    前言 是一个测试向的Demo,在实验环境中改改还是可以用的,有助理解PXE服务器的原理.可以结合PXE服务器原理细节来看,传送门:点这里 软件环境 系统 RHEL7 软件 Python 27 RHEL ...

  5. Java编写时钟 Applet 程序

    简单分析: package clockApplet; import java.applet.Applet; import java.awt.Color; import java.awt.Graphic ...

  6. sql server 字符串拆分

    最近项目调取存储的时候直接传入string 作为in的查询范围,结果报错了,深思之后才发现,数据库对于传进来的String,并不是我们想的直接可以作为参数,而是作为一个整体,而in是需要一个类似arr ...

  7. 人事中的BP是什么意思?

    BP= business partner,指业务伙伴 HR=human resources,指人力资源 HRBP就是人力资源服务经理.主要工作内容是负责公司的人力资源管理政策体系.制度规范在各业务单元 ...

  8. etcd单节点安装

    本篇安装单个etcd,然后进行扩容etcd节点至2个,环境配置如果做了的话就跳过 实验架构 test1: 192.168.0.91 etcd test2: 192.168.0.92 无 test3: ...

  9. NFA转换为等价的DFA

    在编译系统中,词法分析阶段是整个编译系统的基础.对于单词的识别,有限自动机FA是一种十分有效的工具.有限自动机由其映射f是否为单值而分为确定的有限自动机DFA和非确定的有限自动机NFA.在非确定的有限 ...

  10. 一本值得你反复研读的Python佳作《Python编程从0到1》

    现在的Python入门书太多太多了,究竟如何选择呢? 当然选最好的最入门的讲解最清晰的,没有那么多废话的. 现在就推荐一本<Python编程从0到1>,还带视频的,到时候跟大家一起学习沟通 ...