tyoshikawa1106のブログ

- Force.com Developer Blog -

Rails:GitHubへのアップロードを試してみました

チュートリアルのGitHubへのアップロードです。


まずはGitHubにリポジトリを作成します。
f:id:tyoshikawa1106:20150714032619p:plain


チュートリアルに記載されている注意事項です。

注意: このときにREADMEファイルを使用してリポジトリを初期化しないでください 。rails newコマンドを実行するときにこれらのファイルは自動的に作成されるからです


Initialize this repository with a READMEにチェックを付けずに作成します。
f:id:tyoshikawa1106:20150714032815p:plain


リポジトリを作成したら、以下を実行してアプリケーションをプッシュします。

$ git remote add origin https://github.com/<username>/first_app.git
$ git push -u origin master

ここのコマンドはGitHubでも確認できます。
f:id:tyoshikawa1106:20150714033518p:plain


GitHubで二段階認証を導入しているとここでエラーが発生しました。パスワードの代わりにアクセストークンを入力する必要があります。こちらのサイトが参考になりました。

手順

1. ユーザ設定のPersonal access tokensを選択
f:id:tyoshikawa1106:20150714034706p:plain:w100

2. Generate new Tokenボタンをクリック
f:id:tyoshikawa1106:20150714034754p:plain

3. Generate Tokenボタンをクリック
f:id:tyoshikawa1106:20150714034822p:plain


これでアクセストークンが生成されます。それをコピーしてパスワードの代わりに入力すると無事にPushできました。

f:id:tyoshikawa1106:20150714035020p:plain


SSHを利用すればパスワードを入力したりする必要がないみたいです。

ブランチ (branch)

GitHubのブランチの使い方についてです。

Gitは、ブランチ (branch) を極めて簡単かつ高速に作成することができます。ブランチは基本的にはリポジトリのコピーで、ブランチ上では元のファイルを触らずに新しいコードを書くなど、自由に変更や実験を試すことができます。通常、親リポジトリはマスターブランチと呼ばれ、トピックブランチ (短期間だけ使う一時的なブランチ) はcheckoutと-bフラグを使って作成できます。

$ git checkout -b modify-README
$ git branch

f:id:tyoshikawa1106:20150714035500p:plain

変更 (edit)

トピックブランチを作成後、READMEの内容をわかりやすく書き換えてみましょう。著者の場合、デフォルトのRDocを編集するときには主にMarkdownというマークアップ言語を使用しています。拡張子を.mdにしておけば、GitHubにアップロードしたときに自動的にドキュメントがきれいに整形されます。今回はGitに付属するmvコマンド (注: Unixのmvコマンドではありません!) を使ってREADMEの拡張子を変更し、それからREADMEの内容を書き換えます。

$ git mv README.rdoc README.md
$ subl README.md

f:id:tyoshikawa1106:20150714035755p:plain

エディタで書き換えます。
f:id:tyoshikawa1106:20150714035907p:plain

コミット (commit)

READMEの編集が終わったら、コミットを行います。まずはgit statusで状態の確認です。
f:id:tyoshikawa1106:20150714040138p:plain

Gitには現存するすべてのファイル (git mvで作成したファイルも含む) への変更を一括でコミットする-aフラグがあります。このフラグは非常によく使われます。なお、git mvで作成されたファイルは、Gitによって新規ファイルではなく変更として扱われます。

$ git commit -a -m "Improve the README file"

f:id:tyoshikawa1106:20150714040254p:plain

"-a"フラグは慎重に扱ってください。最後のコミット後に新しいファイルを追加した場合は、まずgit addを実行してバージョン管理下に置く必要があります。

コミットメッセージは現在形で書くようにしましょう。Gitのモデルは、(単一のパッチではなく) 一連のパッチとしてコミットされます。そのため、コミットメッセージを書くときには、そのコミットが「何をしたのか」と履歴スタイルで書くよりも「何をする」ためのものなのかを書く方が、後から見返したときにわかりやすくなります。さらに、現在形で書いておけば、Gitコマンド自身によって生成されるコミットメッセージとも時制が整合します。

マージ (merge)

ファイルの変更が終わったので、マスターブランチにこの変更をマージ (merge) します。

$ git checkout master
$ git merge modify-README

f:id:tyoshikawa1106:20150714040710p:plain


変更をマージした後は、git branch -dを実行してトピックブランチを削除します。

$ git branch -d modify-README

f:id:tyoshikawa1106:20150714040818p:plain

トピックブランチの削除は必須ではありません。実際、トピックブランチを削除せずにそのままにしておくことはよく行われています。トピックブランチを削除せずに残しておけば、トピックブランチとマスターブランチを交互に行き来して、きりの良い所で変更をマージする事ができます。


git branch -Dでトピックブランチ上の変更を破棄できます。

# これはあくまで例です。ブランチでミスをした時以外は実行しないでください。
$ git checkout -b topic-branch
$ <ブランチをめちゃくちゃにしてみる>
$ git add .
$ git commit -a -m "Major screw up"
$ git checkout master
$ git branch -D topic-branch

プッシュ (push)

READMEファイルの更新が終わったので、GitHubに変更をプッシュします。これをやらないとGitHubに反映されません。

$ git push

f:id:tyoshikawa1106:20150714041227p:plain


これでGitHub側に変更が反映されました。
f:id:tyoshikawa1106:20150714041258p:plain

確認

ブランチを変更せずにファイル更新をしてみました。

$ subl README.md
$ git commit -a -m "Update the README file"
$ git push 


無事に変更できました。
f:id:tyoshikawa1106:20150714041747p:plain


GitHubのブランチの基本的な使い方はこんな感じです。