Edited at

GitHubにXcodeから初めてソースコードを公開する方法【Swift】【Xcode6】【初心者】

More than 3 years have passed since last update.

環境

OS X Yosemite10.10

Xcode6.1.1

iOS SDK 8.1

git version 1.9.3 (Apple Git-50)


知識レベル


  • gitとGitHubの違いもよくわからなかった。趣味でのプログラミングしかしていないが、仕事でチーム開発するにはgitの知識が必要らしい、という認識。

  • GitHubは公開されているソースコードをダウンロードするときに何度か(10回程度)訪れている。毎回Download Zipのボタンを押すだけ。

  • ターミナルをほとんど使えない(ググらずに使えるのはcdとlsコマンドぐらい。)

  • 数カ月前にドットインストールのgit入門の7回目(全22回)まで視聴。なんだか難しそう、という認識。

  • Swiftで新しいプロジェクトを作成する際、git管理するかという確認があり、そこにはチェックしておいたほうが良いらしいというネットの知識。


手順


1.GitHubのアカウント作成

https://github.com/

ユーザーネームやパスワードを設定して簡単にアカウントが作成できる。


2.ターミナルを起動

アプリケーション -> ユーティリティ -> ターミナル.app


3.gitの初期設定

ターミナルに以下を入力していく。

git --versionでgitのバージョン確認

ユーザーネーム、GitHubに登録したメールアドレスを入力

git config --global user.name "XXXXX"

git config --global user.email "XXXXX@Xmail.com"


git config --listで現在の設定を確認


4.SSH鍵の設定

以下を入力

mkdir ~/.ssh/github

ssh-keygen -t rsa -C "XXXXX@Xmail.com" -f ~/.ssh/github/id_rsa

次のように表示される

Generating public/private rsa key pair.

Enter passphrase (empty for no passphrase): //ここでパスワード入力

Enter same passphrase again: //パスワード再入力

Your identification has been saved in /Users/YOURNAME/.ssh/github/id_rsa.

Your public key has been saved in /Users/YOURNAME/.ssh/github/id_rsa.pub.

The key fingerprint is:

XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX XXXXX@Xmail.com

The key's randomart image is:

+--[ RSA 2048]----+

| o o.o |

| o o.oo..|

| o.oo.....|

| o + o o. .|

| o o. ... .|

| o o.oo. o |

| o o.oo |

| . |

| o o |

+-----------------+

ls ~/.ssh/githubを入力すると

id_rsa   id_rsa.pubと表示される。

cat ~/.ssh/github/id_rsa.pubを入力すると公開鍵が見られる。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCd+t0ooWFXDrEFuRkLAoMJYralIRhClJ/WB499zJziIAazzPCJdWiri2S+p03OUl1CBH+zR3z0AbDsxEM+KROLE5dNusexwmEaeCFxqJI51XWs70rVpKw8BAs1UonB9ZDeHjSq7m4NHtyAp5MQqFv9zZ7g+oHrjVfe5ebz8SEL5dNVkGC0aHa+uCXAwzwEm3h6q9WLQ6tpaM5PzfY1atu2AiauC4pypecUjdzvIveYSbKc2k4UurO2q/6krjMJ+hDIOFfhGxYZRzzR51phnIW2w9vq6fCzeCRrIC/3k1UlhHBon6JUYc5qW9cz9qauuSO+ImHy3dPWxKww8Falnz2H XXXXX@Xmail.com


5.SSH鍵の登録

GitHubにログイン

右上の設定ボタン -> 左カラムのSSH keys -> Add SSH key

001.png

titleとkeyを入力 -> Add key -> 先ほど設定したパスワードを入力

003.png

これで登録完了。


6.登録されているかを確認

ssh -T git@github.com -i ~/.ssh/github/id_rsaを入力

以下が表示される。

The authenticity of host 'github.com (207.97.227.239)' can't be established.

RSA key fingerprint is 16:27:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX.

Are you sure you want to continue connecting (yes/no)?

yes を入力

Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.

Identity added: /Users/YOURNAME/.ssh/github/id_rsa (/Users/YOURNAME/.ssh/github/id_rsa)

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

キーチェーンによるパスワード入力を求められた場合、SSH鍵作成の際のパスワードを入力。

「パスワードをキーチェーンに保存」にチェック。


7.GitHub.comへのアクセスを簡単にする

上記のssh -T git@github.com -i ~/.ssh/github/id_rsaでもアクセスできるが、それをもっと簡単にするため、ファイルを編集する。

vim ~/.ssh/configと入力

ファイルの編集画面になるので、以下

Host github.com

IdentityFile ~/.ssh/github/id_rsa


をコピーして貼り付け、保存する。これは、vimでの編集に慣れた人なら簡単にできるが、私は調べながらドキドキしながらやった。

丁寧に説明すると


  • 編集画面が開いたらアルファベットの「i」を押す。

  • 画面下に--INSERT--と出ていればOK.

  • その状態でctrl+Vで貼付け。

  • escキーを押す

  • 画面下の--INSERT--が消えた状態で:wqと入力。

これで編集完了。

ssh -T git@github.comを入力し

Hi uqtimes! You've successfully authenticated, but GitHub does not provide shell access.と表示されればOK.


8.GitHubのレポジトリを作成

画面右上のプラスマークからNew repositoryを選択

005.png

Remository nameと Description(概要)を記入。

Publicにチェック。

initialize this repository with a READMEにチェックは入れないこと。

SSHのアドレスが表示されるので、右側のCopy to Clipboardをクリックしコピーしておく。

このとき、HTTPSでなく、SSHのアドレスを選択すること。

006.png


9.Xcodeで新規プロジェクトを作成

プロジェクトの保存先を選ぶときに、Source Control:Create local git repository for this projectにチェックを入れる。

007.png


10.GitHubのレポジトリを登録

メニューバーのSource Control -> YOURREPOSITORY NAME -> Configre YOURREPOSITORY NAMEを選択

008.png

Remotsのタブを開き、左下のプラスボタンからAdd Remoteを選択 -> Done

009.png

名前を入力し、Addressに先ほどGitHubでクリップボードにコピーしたSSHアドレスを貼り付け。

010.png

無事に登録が終わるとリモートリポジトリが表示される。

011.png


11.ソースコードを公開

開発を行う。プロジェクトにファイルを追加したり、コードを加えたりする。

Xcodeの左側、ナビゲーションエリアにのファイル名の横に、変更された場合「M」、追加されたファイルの場合「A」が表示される。

まとまった変更が終わったら、commitを行う。

Xcodeのメニューバー -> Source Control -> Commit

画面左側で、変更履歴を保存するファイルにチェックが入っていることを確認し、下部にコミットの内容を入力。

ここは必須で、空白のままだとエラーが出る。

変更履歴の書き方は、他の人が見てもわかりやすいように

1行目 : コミットでの変更内容の要約

2行目 : 空行

3行目以降 : 変更した理由

とすると良いらしい。

021.png

※コミット画面の左下にあるオプションをオンにすることで、同時にリモートプッシュが出来る。(tottokotkdsさんより、コメントにて教えていただきました。)

変更履歴も含め、GitHubに公開する。

Xcodeのメニューバー -> Source Control -> Pushを選択

先ほど作ったリモートリポジトリが選択されていることを確認し、Pushを押す。

025.png

Push successfulと表示されれば完了!

026.png

GitHubのリポジトリページを確認すると、自分のソースコードが公開されていることがわかる。

027.png


苦労した点


リモートリポジトリが登録できない。

手順10で、GitHubのリポジトリアドレスを登録しても、commitもPushもできない状態に。スペルミスだろうか、何が違うのだろうかと何度もやり直した。

結論としては、コピーするアドレスがhttpsから始まるものだったため、つながらなかったようだ。

git@github.comから始まるSSHのアドレスをコピーすること。


Pushできない

もう一つ悩まされたのが、pushしようとしても以下のポップが出てできないエラー。

030.png

Working copy out of date.

Try pulling from the remote to get the latest changes, then push again.

とあるので、pullしようとしても、

"NAME/master" is not a valid remote branch to pull from. Please choose a different remote branch.

とエラーが出る。commitもできず、原因がわからなかった。

いろいろ調べたところ、手順8でGitHubにレポジトリを作成する際、initialize this repository with a READMEにチェックを入れ、.gitignoreとライセンスを選択したのが原因らしい。

もう一度新しいリポジトリを作りなおし、チェックを外した状態でpushすると、問題なく公開できた。

ただし、これだとライセンスを自動で明記できないので、問題があるかもしれない。

リポジトリ作成後にライセンスファイルを自動で追加できる機能があれば良いのだが、、、。

もし、もっと良い方法があったら教えていただけると嬉しいです。


参考サイト

そもそもGitHubとは一体何か?

ドットインストールgit入門 (全22回)

githubストーリー 〜そのコードgithubで公開しませんか?〜

XcodeからGitHubのリポジトリを使う方法

Gitの基本 変更を記録するコミット

Can't push/pull to/from brand new repository hooked up to Xcode


その他


なぜGitHubに挑戦しようと思ったか

 数カ月前からgitは気になる存在でした。JavaScriptを勉強していたとき、公開されたプラグインのファイルをGitHubから丸ごとダウンロードさせてもらうことが複数回ありました。また、求人要項の必要とされるスキル欄に「gitの知識」と書かれていることも。今どきのプログラマにとって必須知識なのか!と思い、ドットインストールで入門動画を見てみました。

 しかし、ターミナル操作に難がある私がそれを見ても、いまいち腑に落ちず、使うことのメリットもよくわかりません。特に必要に迫られていないため勉強のモチベーションも高まらず、放置していました。

 最近Swiftを勉強し始め、Qiitaやブログでソースコードを公開している方がGitHubにもプロジェクト丸ごと公開していることが多いとわかりました。ソースコードの一部を読むよりも、GitHubからプロジェクト全体をダウンロードしたほうが全体像を把握できます。簡単にシミュレーターで実行確認もできます。その便利さに大きな魅力を感じました。

 私自身、youtubeやQiitaに簡単なサンプルを投稿するようになり、プロジェクト全体を共有するのはGitHubが良いだろうと。こんな経緯で挑戦してみました。


これから取り組みたいこと


  • ドットインストールのgit入門を最後まで見る

  • CommitとPushのタイミングを知ったり、branchなどもわかる状態になる

  • ターミナルから自在に操作できるようになる(Xcodeからの公開はきっと比較的容易だろうから。)

  • GitHubを介した他のプログラマとのつながりを持つ

間違いや不明点、より良い方法などありましたら、遠慮無くご指摘ください。最後までお読み下さり、ありがとうございました。