Railsチュートリアルを最後まで。第1章 bitbucketからブランチ

スポンサーリンク
スポンサーリンク
プログラミング

こんにちは、のまち(@bokunomad)です。

Railsチュートリアル1.4.3のbitbucketの登録からです。このあたりはサクッと進めると思ってたのですがSSH接続関係で詰まってしまって小一時間かかってしまいました。

Contents

スポンサーリンク
スポンサーリンク

1.4.3 Bitbucket

BitbucketはGithubと同じくgitリポジトリホスティングサービスだが微妙に異なる点がある。

  • Bitbucket = 共同作業者が一定数以上から有料。リポジトリの公開非公開は問わない
  • Github = リポジトリが一般公開なら無料。非公開にするときは有料

初学者〜初心者レベルであれば共同作業者もいないだろうし、公開非公開も特に意味はないと思うのでどちらを選んでもよいと思う。

安全面を考えるならリポジトリ非公開でも無料で使えるBitbucketを使うべし。

SSH認証でPermission denied (publickey)に手こずる

git remote add origin git@bitbucket.org:ユーザー名/hello_app.git
git push -u origin --all

git pushしたあとに以下のエラーが出てきた。

Permission denied (publickey).
fatal: Could not read from remote repository.

対処したこと

まずはSSH秘密鍵をconfigファイルにセットする。IdentityFileに作成している秘密鍵ファイル名を入れる。対になる公開鍵データはBitbucket上の「bitbucket settings」→「SSH鍵」→「鍵を追加」より入力する。

公開鍵は「.pub」で秘密鍵には「.pub」がつかないので注意。

Host bitbucket.org
  HostName bitbucket.org
  User git
  Port 22
  IdentityFile ~/.ssh/**** ←秘密鍵のファイル名
  TCPKeepAlive yes
  IdentitiesOnly yes

ここでひとまずgit pushを試してみましたが変わらずPermission deniedが出ました。

そこで検索してみると、どうやらssh-agent登録も必要だという情報を見つけたため登録してみます。

eval `ssh-agent`
ssh-add ~/.ssh/*** ←秘密鍵ファイル名を入れる

Bad owner or permissionエラー

Bad owner or permissions on /home/***/.ssh/config
fatal: Could not read from remote repository.

続いてBad owner or permissionエラーについてです。

これは.ssh/configのアクセス権限が適切についていなかったため起きたエラーです。

chmod 600 ~/.ssh/config

chmodでアクセス権限を変えてからもう一度git pushを試します。

WARNING UNPROTECTED PRIVATE KEY FILEが出る

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/***/.ssh/***' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/***/.ssh/***": bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

次はなんだか大層な感じのエラーが出てきました。パーミッションが644と広く許可しすぎなのでセキュリティ的に良くないよという感じのエラーです。

ls -l ~/.ssh
chmod 600 ~/.ssh/***

該当のファイルのアクセス権限を変更して再びgit pushするとようやくできました。ここまで約1時間半。長かった〜。

1.4.4 ブランチ

ブランチを使うことでマスターリポジトリをいじることなく機能追加であったりバグ修正をすることができる。

git checkout -b modify-README
Switched to a new branch 'modify-README'
git branch
  master
* modify-README

新規作成した「modify-README」ブランチに切り替え。git branchで「*」が付いているのが現在のブランチ。その後READMEファイルに追記。

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

git commitで-mオプションでコメントを残す。

git checkout master
Switched to branch 'master'

git merge modify-README
Updating 35f817f..488401e
Fast-forward
 README.md | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

git branch -d modify-README
Deleted branch modify-README (was 488401e).

masterブランチに切り替えてからマージ(変更)する。必要であればgit branch -dでブランチを削除します。

git push

最後にpushしてbitbucketに反映されていることを確認して終了です。

まとめ

Bitbucket関係はすぐに終わると思っていましたが相変わらず色々と詰まってしまいました。

エラーが出たらググる。エラーが出たらとにかくググるを繰り返して対処していくしかないですね。

次はHerokuです。以前Techacademyで使ったことがあるので早く進められるはずです!