- 投稿日:2020-05-18T23:12:36+09:00
GitLabとSourceTreeを連携させる手順と参考リンク
GitLabとSourceTreeを連携させるのに苦労した
会社でGitLabとSourceTree(GitGUI操作ツール)を用いて開発を行っている。趣味でコーディングするにあたり、自宅にもその環境を構築しようとしたが、必要手順が分からず結構手間取った。そのため、GitLabからSoureTreeを連携させるまでに必要な手順を解説する。趣味でもGitとSourceTreeで快適な開発ライフを!
GitLabとSourceTreeを連携させるまでの手順と参考リンク
手順とその参考になるリンクをまとめていく。
1. GitLabアカウント作成
当然、GitLabのアカウントが無ければならない。特に詰まることはないので解説は省略。
2. クライアントPCでSSHキーを生成。GitLabにSSHキーを登録
次に、GitLabからソースをクローンするためのSSHキーを登録する。SSHとは、クライアントPCとWebサーバー側でセキュアに通信を行うための仕組み。Webサーバー上にあるレポジトリとクライアントPCのデータを安全にやり取りするには欠かせない。
参考にさせていただいた記事
- Windows :GitLabにSSHで接続するまでの手順
- Mac:SSH認証キーをGitLabに登録・設定手順 覚書
SSHKEYの発行後、configファイルの作成も忘れずに。
3. SoureTreeをインストール
SoureTreeをインストールする。ここでは、特段詰まることは無いかと。インストール時に、製作元のアトラシアンのGit WebサービスであるBitBuketのアカウントを作らされる。デフォルトの連携アカウントがBit Buketとなるので、後でGitLabに変える。
参考にさせていただいた記事
4. SourceTreeにSSHKEYを登録する
先ほど、GitLabに登録するために作成したSSHを、SourceTree側にも設定する。手順は参考リンクに。SSHキーをすでに作成している場合は、Generateの必要は無く、既に作成したものをLoadする。
参考にさせていただいた記事
SourceTreeでGithubの認証に秘密鍵を使う (Windows)
記事題目に「GitHub」とあるが、GitLabも同一手順で可能。5. SourceTreeがGitLabにアクセスするためのトークンを発行
次に、SourceTreeがGitLabにアクセスするためのトークンを発行する。これをしないと、GitLabのアカウントをSourceTree上で連携させることができない。手順は参考リンクに。ここで発行したパスワードをSoureTree側に入力する。
参考にさせていただいた記事
6.SoureTree上でトークンを用いてGitLabアカウントを登録
上記リンクにも参考がある。
SoureTree上で、GitLabアカウントを登録する。アカウント設定のパスワード入力欄には、4. で発行したGitLabのPersonal Access Tokensを入力する。発行画面を開いたまま行う。ログインに成功すれば、自分のGitLabのプロジェクト、ソースが即座に連携される。
以上、GitLabとSource Tree連携させる手順を紹介した。各手順の詳細は優秀なリンク先を参考されたい。
- 投稿日:2020-05-18T23:12:36+09:00
GitLabとSourceTreeを連携させる手順と参考リンク(SSH認証)
GitLabとSourceTreeを連携させるのに苦労した
会社でGitLabとSourceTree(GitGUI操作ツール)を用いて開発を行っている。趣味でコーディングするにあたり、自宅にもその環境を構築しようとしたが、必要手順が分からず結構手間取った。そのため、GitLabからSoureTreeを連携させるまでに必要な手順を解説する。趣味でもGitとSourceTreeで快適な開発ライフを!
※ここでは、SSH認証で連携する手法を記述する。HTTP認証については触れないGitLabとSourceTreeを連携させるまでの手順と参考リンク
手順とその参考になるリンクをまとめていく。
1. GitLabアカウント作成
当然、GitLabのアカウントが無ければならない。特に詰まることはないので解説は省略。
2. クライアントPCでSSHキーを生成。GitLabにSSHキーを登録
次に、GitLabからソースをクローンするためのSSHキーを登録する。SSHとは、クライアントPCとWebサーバー側でセキュアに通信を行うための仕組み。Webサーバー上にあるレポジトリとクライアントPCのデータを安全にやり取りするには欠かせない。
参考にさせていただいた記事
- Windows :GitLabにSSHで接続するまでの手順
- Mac:SSH認証キーをGitLabに登録・設定手順 覚書
SSHKEYの発行後、configファイルの作成も忘れずに。
3. SoureTreeをインストール
SoureTreeをインストールする。ここでは、特段詰まることは無いかと。インストール時に、製作元のアトラシアンのGit WebサービスであるBitBuketのアカウントを作らされる。デフォルトの連携アカウントがBit Buketとなるので、後でGitLabに変える。
参考にさせていただいた記事
4. SourceTreeにSSHKEYを登録する
先ほど、GitLabに登録するために作成したSSHを、SourceTree側にも設定する。手順は参考リンクに。SSHキーをすでに作成している場合は、Generateの必要は無く、既に作成したものをLoadする。
参考にさせていただいた記事
SourceTreeでGithubの認証に秘密鍵を使う (Windows)
記事題目に「GitHub」とあるが、GitLabも同一手順で可能。5. SourceTreeがGitLabにアクセスするためのトークンを発行
次に、SourceTreeがGitLabにアクセスするためのトークンを発行する。これをしないと、GitLabのアカウントをSourceTree上で連携させることができない。手順は参考リンクに。ここで発行したパスワードをSoureTree側に入力する。
参考にさせていただいた記事
6.SoureTree上でトークンを用いてGitLabアカウントを登録
上記リンクにも参考がある。
SoureTree上で、GitLabアカウントを登録する。アカウント設定のパスワード入力欄には、4. で発行したGitLabのPersonal Access Tokensを入力する。発行画面を開いたまま行う。ログインに成功すれば、自分のGitLabのプロジェクト、ソースが即座に連携される。
以上、GitLabとSource Tree連携させる手順を紹介した。各手順の詳細は優秀なリンク先を参考されたい。
- 投稿日:2020-05-18T21:24:24+09:00
Windows環境でPX4の開発環境を整える
はじめに
この記事では,PX4公式でも推奨されているUbuntu環境でのbuildを実現するためにWSLを用いたWindows 10での環境構築環境構築までの流れを書いていきます.基本的にはwsl環境の構築に加えて,公式の内容をまとめただけになります.
少しでもプログラミング関係のことをかじったことがある人からすれば当たり前のことしか書いてません.備忘録です.
正直まだまだよくわかっていないことだらけなので,詳しい人いたらいろいろ教えてください.
特にGit周りは間違った理解が大いにあり得るので,ぜひ指摘して教えてください.WSLおよびvscodeの導入
こちらの記事通りに進めていけばできます.
以前まではVMwareにUbuntuを載せたり,GitBashを使ったりしてました.
先の話ですが,PX4でSITLをする場合,この方法ではできませんGUIのUbuntuを用意する必要があります.(GazeboがWindowsに対応していないので)
参考:Visual Studio Codeで競プロ環境構築(導入編) - QiitaFirmwareを自分のPCに入れる
PX4のFirmwarはGithubで開発されている.とりあえずコードが見てみたい,というだけならまずこれを自分のPCにcloneします.
本家のサイトの右の緑のClone or Downloadからhttpsのアドレスを取得して,
git clone <取得したもの>
とします.
git clone https://github.com/PX4/Firmware.gitfolk+branchでしっかり環境を整える
この参考先通りにやればできます.
参考:GIT Examples · PX4 Developer Guideアカウントを作りfolkする
まずGitHubの自分のアカウントを作ります.その後本家に行き,右上のfolkを押します.
これは,既存のリポジトリ(今回でいうところのPX4/Firmware)の複製を作る行為です.これがされてない他人様のリポジトリには書き込むことができませんが,folkしたものは自分の所有物なので自由に更新ができます.pullリクエストなどは今は置いておきます.とりあえずコピーをもらってきたという感じです.folkしたリポジトリをローカルにcloneする
先程と違い,folkしたリポジトリをcloneします.これによって,リモートでもローカルでも自分の好きなように開発ができます.(さっきのだとローカルのみ)
cd ~/wherever/ git clone https://github.com/<your git name>/Firmware.git
cloneしたらcdでFirmwareのdirectoryに移動して,submoduleを更新します.このサブモジュールは(自分の理解があっているかわかりませんが),とあるリポジトリ(今回でいうFirmware)を動かしている一部moduleが,独立してリポジトリとして開発されているという状態.つまり元のリポジトリでは,Winでいうところのショートカットのようなものが設定されている状態.このアップデートは,その参照先のアップデートをFirmwareにも適用させるよーという感じでしょうか…たぶん…ざっくりと…
産業目もあんまりちゃんと理解してないですが,本家の進行状況も見れるように追跡できるようにしておいて,本家がなんか変更されたら自分のリポジトリに本家の変更を反映させる,適菜やつだと思います,ざっくり.cd Firmware git submodule update --init --recursive git remote add upstream https://github.com/PX4/Firmware.gitgit remote -v二個のリポジトリが出ると思います.一つはupstreamでPX4のFirmwareを指しています.もう一つはさっき自分がfolkしたリポジトリを指しています.
branchを作る
基本的プロジェクトの本筋の最新版はmasterというbranchです.ここから枝を伸ばして自分のbranchを作ります.
そしてそのbranchに移動します.git checkout -b <your feature branch name>
git status
で自分の今いるbranchが確認できます.自分が作ったbranchになっているはずです.さて,このbranchの名前ですが,基本的には自分が変更したものがわかるものにするのが一般的です.例えば新しいセンサのドライバを新しく追加したなら,
add_xxxsensor_ドライバー
みたいな感じですかね.まあでも本家に貢献せず(本来は貢献が前提ですが),自分でいろいろ開発するだけなら好きな名前でいいと思います.commit&pushする
まず用語から.
- add
- ローカルで変更して,これは確定やな変更したろ,と思う項目をcommitするためのリスト?に追加する
- commit
- 自分のローカル環境の変更(addで指定されたもの)をローカルのリポジトリに書き込む
- ここ変ったよーっていう内容を手元にメモする感じ
- push
- ローカルのリポジトリにcommitされたものを,リモートに反映させる
- そするとGithubに反映されるという流れです.それでは...
git add <file name>これで変更を反映したいファイルなどを指定します.
git commit -m "<your commit message>"-mはメッセージをつけるというオプションです.これを書くと,リモートのそのファイルの横にメッセージが載ります.(これが新しいドライバでっせーみたいな)
これでひとまず完了.chrome等で自分のGitHubのfolkしたリポジトリを見ると,ちゃんとbranchが追加され,変更が反映されているはずです.
本家の変更をfolkしたリポジトリにも反映させたい
PX4はかなり活発に開発が進められているOSSですから,知らぬ間に新しい機能やらバグ修正やらいろんなアップデートがされています.しかし(僕の理解だと)folkリポジトリは,ほっといてもそれを参照してくれないので,それを更新する作業が必要です.(たとえば3年前にfolkしたら,今見ても三年前の状態で変わっていないはず)
これを
rebase
というコマンドを使ってやります.
まずは一旦master
ブランチに移動します.git checkout masterここで,先程追っかけ用と言っていたupstreamに最新版の変更を反映させます.
pull
というコマンドを使います.git pull upstream masterこれで,ローカルのmasterが更新されました.自分のブランチに戻ります.
git checkout <your feature branch name>ここで,
rebase
です.rebaseってなんぞや?てかたはこちらがわかりやすかったのでぜひ参照してみてください.git rebase masterこれで無事自分のブランチのローカルが更新されました.
これをリモートにも反映させます.git push origin <your feature branch name>おわりに
やっと最近ちょこちょこ理解できるようになってきましたがまだまだ…gitの慣れが微妙ですね.
中のソースはpublish/subscribeシステムやCMakeによる自動化等,まだまだ理解しなくてはならないことが山のように…
- 投稿日:2020-05-18T21:24:24+09:00
WindowsでPX4の開発環境を整える
はじめに
この記事では,PX4公式でも推奨されているUbuntu環境でのbuildを実現するためにWSLを用いたWindows 10での環境構築環境構築までの流れを書いていきます.基本的にはwsl環境の構築に加えて,公式の内容をまとめただけになります.
wsl+githubといった感じです.少しでもプログラミング関係のことをかじったことがある人からすれば当たり前のことしか書いてません.備忘録です.
正直まだまだよくわかっていないことだらけなので,詳しい人いたらいろいろ教えてください.
特にGit周りは間違った理解が大いにあり得るので,ぜひ指摘して教えてください.WSLおよびvscodeの導入
こちらの記事通りに進めていけばできます.
以前まではVMwareにUbuntuを載せたり,GitBashを使ったりしてました.
先の話ですが,PX4でSITLをする場合,この方法ではできませんGUIのUbuntuを用意する必要があります.(GazeboがWindowsに対応していないので)
参考:Visual Studio Codeで競プロ環境構築(導入編) - QiitaFirmwareを自分のPCに入れる
PX4のFirmwarはGithubで開発されている.とりあえずコードが見てみたい,というだけならまずこれを自分のPCにcloneします.
本家のサイトの右の緑のClone or Downloadからhttpsのアドレスを取得して,
git clone <取得したもの>
とします.
git clone https://github.com/PX4/Firmware.gitfolk+branchでしっかり環境を整える
この参考先通りにやればできます.
参考:GIT Examples · PX4 Developer Guideアカウントを作りfolkする
まずGitHubの自分のアカウントを作ります.その後本家に行き,右上のfolkを押します.
これは,既存のリポジトリ(今回でいうところのPX4/Firmware)の複製を作る行為です.これがされてない他人様のリポジトリには書き込むことができませんが,folkしたものは自分の所有物なので自由に更新ができます.pullリクエストなどは今は置いておきます.とりあえずコピーをもらってきたという感じです.folkしたリポジトリをローカルにcloneする
先程と違い,folkしたリポジトリをcloneします.これによって,リモートでもローカルでも自分の好きなように開発ができます.(さっきのだとローカルのみ)
cd ~/wherever/ git clone https://github.com/<your git name>/Firmware.git
cloneしたらcdでFirmwareのdirectoryに移動して,submoduleを更新します.
このサブモジュールは(自分の理解があっているかわかりませんが),とあるリポジトリ(今回でいうFirmware)を動かしている一部moduleが,独立してリポジトリとして開発されているという状態.つまり元のリポジトリでは,Winでいうところのショートカットのようなものが設定されている状態.
このアップデートは,その参照先のアップデートをFirmwareにも適用させるよーという感じでしょうか…たぶん…ざっくりと…三行目もあんまりちゃんと理解してないですが,本家の進行状況も見れるように追跡できるようにしておいて,本家がなんか変更されたら自分のリポジトリに本家の変更を反映させる,的なやつだと思います,ざっくり.
cd Firmware git submodule update --init --recursive git remote add upstream https://github.com/PX4/Firmware.gitgit remote -v二個のリポジトリが出ると思います.一つはupstreamでPX4のFirmwareを指しています.もう一つはさっき自分がfolkしたリポジトリを指しています.
branchを作る
基本的プロジェクトの本筋の最新版はmasterというbranchです.ここから枝を伸ばして自分のbranchを作ります.
そしてそのbranchに移動します.git checkout -b <your feature branch name>
git status
で自分の今いるbranchが確認できます.自分が作ったbranchになっているはずです.さて,このbranchの名前ですが,基本的には自分が変更したものがわかるものにするのが一般的です.例えば新しいセンサのドライバを新しく追加したなら,
add_xxxsensor_driver
みたいな感じですかね.まあでも本家に貢献せず(本来は貢献が前提ですが),自分でいろいろ開発するだけなら好きな名前でいいと思います.commit&pushする
まず用語から.
- add
- ローカルで変更して,これは確定やな変更したろ,と思う項目をcommitするためのリスト?に追加する
- commit
- 自分のローカル環境の変更(addで指定されたもの)をローカルのリポジトリに書き込む
- ここ変ったよーっていう内容を手元にメモする感じ
- push
- ローカルのリポジトリにcommitされたものを,リモートに反映させる
- そするとGithubに反映されるという流れです.それでは...
git add <file name>これで変更を反映したいファイルなどを指定します.
git commit -m "<your commit message>"-mはメッセージをつけるというオプションです.これを書くと,リモートのそのファイルの横にメッセージが載ります.(これが新しいドライバでっせーみたいな)
これでひとまず完了.chrome等で自分のGitHubのfolkしたリポジトリを見ると,ちゃんとbranchが追加され,変更が反映されているはずです.
本家の変更をfolkしたリポジトリにも反映させたい
PX4はかなり活発に開発が進められているOSSですから,知らぬ間に新しい機能やらバグ修正やらいろんなアップデートがされています.しかし(僕の理解だと)folkリポジトリは,ほっといてもそれを参照してくれないので,それを更新する作業が必要です.(たとえば3年前にfolkしたら,今見ても三年前の状態で変わっていないはず)
これを
rebase
というコマンドを使ってやります.
まずは一旦master
ブランチに移動します.git checkout masterここで,先程追っかけ用と言っていたupstreamに最新版の変更を反映させます.
pull
というコマンドを使います.git pull upstream masterこれで,ローカルのmasterが更新されました.自分のブランチに戻ります.
git checkout <your feature branch name>ここで,
rebase
です.rebaseってなんぞや?てかたはこちらがわかりやすかったのでぜひ参照してみてください.git rebase masterこれで無事自分のブランチのローカルが更新されました.
これをリモートにも反映させます.git push origin <your feature branch name>おわりに
やっと最近ちょこちょこ理解できるようになってきましたがまだまだ…gitの慣れが微妙ですね.
中のソースはpublish/subscribeシステムやCMakeによる自動化等,まだまだ理解しなくてはならないことが山のように…
- 投稿日:2020-05-18T20:06:11+09:00
git push -f origin master をやりなおす
結論
force push 禁止しよう。
一人でもプルリク運用した方が安全。前提
- 中央リポジトリは github
- master へのコミットは原則禁止し、PullRequest で運用
- 個人無料アカウント
- 一人プロジェクトなので、他のマシンなどに master 最新のコミットが残っていたりはしない
サマリ
- github のサイト上で、master にマージされた最新のPRを探す
- 上記 PR のマージコミットの番号を調べる
- 該当のコミットをローカルに fetch する
- そのコミットにチェックアウトしてブランチを切る
- そのブランチを master として force push する
状況
- master 最新になっていないローカル master を
git push -f origin master
した- 結果、 github 上のコミット履歴が1ヶ月くらい前にタイムスリップ
- github のサイトではプルリクやマージの状況は残っている
- ローカルにも他のマシンにも最新のコミットがない
- 目の前が真っ暗になった
対応
1. github のサイト上で、master にマージされた最新のPRを探す
2. 上記 PR のマージコミットの番号を調べる
PRのページの下の方にスクロールするとマージされたコミット番号が表示されているはず。
それをクリックするとマージコミットのページに移動する。
URLないし画面内のコミット番号をコピーする。
3. 該当のコミットをローカルに fetch する
ローカルで fetch する
git fetch origin コミット番号fetch したコミットは
FETCH_HEAD
にある。4. そのコミットにチェックアウトしてブランチを切る
git checkout FETCH_HEAD git checkout -b 任意のブランチ名
そのブランチを master として force push する
git push -f origin 任意のブランチ名:master
はぁ、また force push するの。
- 投稿日:2020-05-18T19:59:11+09:00
http接続でgit cloneする時にパスワード入力を省略する方法
git-credential-osxkeychainを使います。
キーチェインにパスワードを保存するので安全です。git config --global credential.helper osxkeychain
pullやpushの初回だけユーザー名とパスワードを入力すれば、以降はパスワード入力を省略できます
- 投稿日:2020-05-18T19:07:54+09:00
【Xcode】差分(ファイル名の横のMとかRとか)が表示されない
- 投稿日:2020-05-18T16:25:24+09:00
【git】error: failed to push some refs to "URL"のエラー対処法
Rails で個人でアプリケーションを開発中です。
表題のエラーが出た際に、改めてgitの理解が深まりましたので備忘録として残します。状況
開発中のタイミングで普段通り、「git pusu origin ブランチ名」で、
ローカルの変更をリモートにpushしようとすると。。。terminalgit push origin develop To https:///githubのURL ! [rejected]develop -> develop (non-fast-forward)error: failed to push some refs to 'https://githubのURL' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.上記のエラーが出ました。
原因
このcommitを行う前に、私がリモートでgithubのREADMEの変更を行っていたことが
今回のエラーの原因でした。「リモートのファイルがローカルのファイルも最新版だから、そのファイルにpushできないですよ」ということみたいです。
対処法
いくつか対処法があるみたいです。
①git pull origin develop
git pull origin developでリモートの環境をローカルファイルにpullした後、
再度pushを行う。②git fetchした後、git mergeする
①とやっていることはほとんど変わらず、pull=fetch + mergeという意味合いなのかと思います。
③git push ––forceで矯正的にpushする
こちらは、個人開発なら自分一人しかリポジトリを操作しないので大きな影響はなさそうですが、
チーム開発の場合だと自分以外にcommitやpushする人がいる無闇に使用すべきでは無い、という記事をいくつか確認しました。①か②で対処するのが無難かもしれません・・・(私は①で対処しました)
備考
「origin」や「master」の理解については、こちらの記事が大変参考になりました!
- 投稿日:2020-05-18T16:05:26+09:00
WSL2(Windows Subsystem for Linux 2)環境でgitをhttps経由で利用するときに認証情報を保持する
背景
WSL2を利用することでWindwosでもLinux環境での開発を実現することができるようになった。しかし、WSL2でHTTPSプロトコルを使用してgitのリポジトリにプッシュしようとすると毎回、ユーザー名とパスワードの入力を求められる。この問題を回避するためにWSL2とGit for Windowsに付属しているgit-credential-managerを連携させる。WSL2とgit-credential-managerを連携することでgitリポジトリにpushをしても毎回ユーザー名とパスワードの入力を求められなくなる。
Git for Windowsのインストール
もし、まだGit for Windowsをインストールしていなければ以下のサイトからダウンロードしてインストールを行う
https://git-scm.com/download/winWSL2上のgit-credientialとGit for Windowsのgit-credential-managerを連携
エディタでgit-credential-managerを開く
sudo vi /usr/bin/git-credential-managergit-credential-managerに以下に内容を追記して保存する
#!/bin/sh exec /mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe $@git-credential-managerの実行権限を付与する
sudo chmod +x /usr/bin/git-credential-manager~/.gitconfigを開き、認証に関する設定(認証時に利用する認証マネージャーの設定)を追記する
[credential] helper = manager以上の設定で連携が完了する。これで初回のプッシュ時に認証情報を入力すると、以降同じリポジトリにプッシュしても認証情報は求められない。
参考ページ
https://blog.anaisbetts.org/using-github-credentials-in-wsl2/
- 投稿日:2020-05-18T16:05:26+09:00
WSL2(Windows Subsystem for Linux 2)環境でgitをhttps経由で利用するときにも認証情報を保持する
背景
WSL2を利用することでWindwosでもLinux環境での開発を実現することができるようになった。しかし、WSL2でHTTPSプロトコルを使用してgitのリポジトリにプッシュしようとすると毎回、ユーザー名とパスワードの入力を求められる。この問題を回避するためにWSL2とGit for Windowsに付属しているgit-credential-managerを連携させる。WSL2とgit-credential-managerを連携することでgitリポジトリにpushをしても毎回ユーザー名とパスワードの入力を求められなくなる。
Git for Windowsのインストール
もし、まだGit for Windowsをインストールしていなければ以下のサイトからダウンロードしてインストールを行う
https://git-scm.com/download/winWSL2上のgit-credientialとGit for Windowsのgit-credential-managerを連携
エディタでgit-credential-managerを開く
sudo vi /usr/bin/git-credential-managergit-credential-managerに以下に内容を追記して保存する
#!/bin/sh exec /mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe $@git-credential-managerの実行権限を付与する
sudo chmod +x /usr/bin/git-credential-manager~/.gitconfigにどのcredentialを利用するのかを追記する
[credential] helper = manager以上の設定で連携が完了する。これで初回のプッシュ時に認証情報を入力すると、以降同じリポジトリにプッシュしても認証情報は求められない。
参考ページ
https://blog.anaisbetts.org/using-github-credentials-in-wsl2/
- 投稿日:2020-05-18T15:19:26+09:00
railsアプリをherokuでデプロイする方法(Mysqlでも確実にデプロイできます)
本記事について
railsアプリをherokuでデプロイする方法を調べていたのですが、開発環境(developmentやtest環境)でRailsアプリに最初からついているDB(SQLite3)を使用している事を前提に書かれた記事が多く、混乱してしまったので、DBにMysqlを採用している方に向けて記事を書いていこうと思います。
※変更内容の意味を理解していればどのDBを使っていようが同じ手順だと気づくのですが、初心者の僕は混乱して躓いてしまったので、同じ様な方が少しでも楽に理解できる様に執筆しています。
環境
- Ruby 2.5.1
- Rails 5.0.7.2
- git 2.25.2
- heroku/7.41.1 darwin-x64 node-v12.16.2
事前に準備して欲しいもの
- Railsで作成したアプリ(下記二つの条件を満たしているもの)
- Gitで管理している
- ローカル環境でエラーが出ていない(デプロイ中にエラーが出た場合、デプロイ時に起こったエラーかローカル環境でのエラーが関係しているのか分からなくなってしまうので、それを防ぐ為)
- herokuのユーザー登録
- heroku-cil(herokuの機能を自分のPCに紐付けるもの→herokuのコマンドをPCで使える様にする)のインストール
今回はherokuについての記事なので、Gitについての説明は割愛させて頂きます。
デプロイ作業を始める前に
デプロイ作業を始める前に、デプロイしたいRailsアプリのコードを一部編集する必要があります。
編集するのは以下の三箇所です。
- Gemfile(各環境で使うDBの設定を変更する)
- config/datebase.yml(実際に本番環境で使うDBを接続する記述を追加する)
- config/environments/production.rb(本番環境でのプリコンパイルをオンにする)
編集する内容について一つずつ理由とともに解説していきますので、変更する場所だけ確認できたら読み進めて貰って大丈夫です。
Gemfileの設定
削除するコードが一箇所、追記するコードが二つあります。
- 削除する箇所
Gemfilegem 'mysql2'
- 追記する箇所
Gemfilegroup :development, :test do gem 'mysql2' end※group :development, :test do ~ end内に他にもgemが書いてあったと思いますが、消さないでください。
Gemfilegroup :production do gem 'pg' end何をしてんだ?
herokuではPostgreSQL(pg)というDBをデフォルトで使う様に設定されています。
普通に作っている方は、全ての環境下でmysqlを使う様に表記していると思うので、その表記を削除し、開発環境、テスト環境下のみでmysqlを使える様にgroup :development, :test do ~ end内にgem 'mysql2'の表記を追加しています。
また、本番環境でPostgreSQL(pg)が使える様にgroup :production do ~ end内にgem 'pg'を表記しています。config/datebase.ymlの設定
追記するコードが一つあります。
config/datebase.ymlproduction: <<: *default adapter: postgresql encoding: unicode pool: 5※production:内にあった元々の記述は全て削除して、上記の様に書き換えて下さい。
何をしてんだ?
先ほどgemを追加し、機能をインストールするための準備は整えたのですが、実際にDBと接続する記述はまだ完了していません。どのDBに接続するのか?という設定をする箇所がconfig/database.ymlです。
※開発環境、テスト環境で使用するDBの設定もここに書かれています。追加したコードの意味は以下の様になります。
adapter: postgresql - postgreSQLのデータベースに接続。
encoding: unicode - unicodeという文字コードを使用。
pool: 5 - DBに接続できる上限の数を指定。DBに接続する為の設定をしたんだ!ってことが分かればOKです。
config/environments/production.rbの設定
追記するコードが一つあります。
config/environments/production.rb#デフォルトでfalseとなっている以下の箇所をtrueに変更 config.assets.compile = true何をしてんだ?
Railsは本番環境でのプリコンパイルがデフォルトでオフになっています。
assetsを圧縮して少しでも軽くする為だそうです。
assets以下のフォルダから動的にコンパイルしながらページを読み込む為にtrueに変更しています。
難しく書きましたが、本番環境でも画像を読み込んでくれよ~って表記にしただけです。いよいよデプロイ作業開始
これでデプロイをする前の事前準備が終わったので、いよいよデプロイ作業に移ります。
デプロイまでの流れは以下の通りです。
- herokuにログイン
- 公開されるRailsアプリのurlを決める
- pushしてデプロイ
- 本番環境でマイグレーションをする
AWSとかと比べて超絶簡単なので気負いせずにさくっと終わらせましょう!
1.herokuにログイン
ターミナル$heroku login上記コマンドでherokuにログインします。
コマンド入力に成功すると(なんか格ゲーみたい)herokuに登録したEmailとpasswordの入力を求められるので、ゆっくり正確に入力しましょう。
入力に成功すると下記の様にターミナルに表示されます。
(as ~ は自分のメールアドレスです。)ターミナルLogged in as ~~~~~@icloud.com公開されるRailsアプリのurlを決める
https://nameless-atoll-34353.herokuapp.com/
上記のURLは僕が初めて作った個人アプリなんですが、これでいうところのnameless-atoll-34353の部分を自身で決めることができます。
heroku createだけでも問題はないのですが、僕みたいになんのアプリか分からない変なURLになるのでしっかり設定しておきましょう!ターミナル$heroku create 好きな文字列pushしてデプロイ
以下のコマンドを打つだけです。楽勝です。
この時、gitのmasterで管理されているコードがpushされるので、brunch生やして作業している方は一旦masterにpushしましょう。ターミナル$git push heroku masterこんな感じで進んでいたら順調です。
ターミナルEnumerating objects: 148, done. Counting objects: 100% (148/148), done. Delta compression using up to 4 threads Compressing objects: 100% (125/125), done. Writing objects: 100% (148/148), 39.65 KiB | 2.09 MiB/s, done. Total 148 (delta 24), reused 0 (delta 0) remote: Compressing source files... done. remote: Building source: remote: remote: -----> Ruby app detected remote: -----> Installing bundler 2.0.2 remote: -----> Removing BUNDLED WITH version in the Gemfile.lock remote: -----> Compiling Ruby/Rails remote: -----> Using Ruby version: ruby-2.6.6 remote: -----> Installing dependencies using bundler 2.0.2 remote: Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment remote: The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`. remote: Fetching gem metadata from https://rubygems.org/............下記のコードの5行目に書かれているのが、今回デプロイしたアプリのURLです。
8行目のは全然関係ないです。僕はそれで悩んでました。ターミナルremote: -----> Compressing... remote: Done: 58.8M remote: -----> Launching... remote: Released v4 remote: https://nameless-atoll-34353.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done. To https://git.heroku.com/nameless-atoll-34353.git * [new branch] master -> masterこれで終わりと思いきや、、まだ本番環境にDBが作成されてないので、マイグレーションをしなきゃいけません。
それで終わりだよん。
4. 本番環境でマイグレーションをする
以下のコマンドでマイグレーションしてください。
ターミナル$heroku run rails db:migrateheroku runをつけるとrailsのコマンドをherokuを動かしているときにも使える様になります。
はい。終わりです。先ほどのURLを貼っつけて、正常に見れるか確認しましょう。
見れた方、お疲れ様でした。
見れてない方、調べても分からない方は僕のTwitterにでも相談しにきて下さい。
いつでも答えますよ?(@rurukasan0212 )
- 投稿日:2020-05-18T14:31:28+09:00
プログラミング初学者がGitで擬似開発する方法
はじめに
初Qiita記事投稿です!
boost noteに書き殴っていた内容をまとめていきたいと思います。
独学歴は4ヶ月ちょっとなので、
初学者がgitを操作してgithubにコードを上げて自分の学習時間を記録したい!という方には役立つ記事にしたいと思います(僕もそのためにgitを勉強しました)。ご指摘・ご意見等あればご連絡いただけたら幸いです。
*lssuesから作成していくのが本来の共同開発の手順みたいなので、あくまで一連の手順を練習したい!という方向けです。流れを理解したら追記しようと思います。参考文献・参考記事
・【初心者必見】Gitの基本
https://www.youtube.com/watch?v
・Gitを使ったクローン、プルリク、マージの流れについて解説
https://www.youtube.com/watch?v=JispFS6zeDw&t=617s上記2つともプログラング講師として有名なかみざとさんのyoutube動画です。
こちらの動画両方見ればgitについての一連の流れは理解できるかと思います。
無料でこれが見れるのは神すぎる!・【Git入門】サルでも分かるGit入門の前に!Git使い方高速入門編【入門は5分で十分だと思います】
https://www.youtube.com/watch?v=i1L3A0SLDyggitをある程度扱えるようになってからですが、こちらの動画も大変参考になりました。(git add .でstagingに保存されるという理解はできてなかった)
5分で説明されているので、すぐにでもgitを使いたい!という方にはおすすめです。・Githubにport:22 で push できなかった場合の対処法
https://qiita.com/SOJO/items/74b16221580a17296226
こちらがおそらくメインといっても過言ではないです笑
このエラーに1日~2日程度悩まされました。。。
手順通りしてるのにpushできない!となったときはこちらの記事を確認してみてください。開発環境
OS:Macbook Pro(gitとgitHubを導入またはアカウント登録済みであることが前提)
擬似開発するまでの手順
1.githubにてフォルダを作成後ターミナルでdesktopに移動
cd desktop2.gitを起動してフォルダをコピー
git init git clone https://github.com/作成したフォルダの名前.gitgithubに作成したフォルダのcodeにhttpsのリンクが書いてあります。
3.エディターを使用し、index.htmlをファイルをフォルダ内に作成
ファイルに適当にテキストを書き込んでおく。
4.ターミナルに戻り、フォルダに移動
cd フォルダ名5.git add .でwork treeからstagingに保存し、git commit -m でローカルリポジトリに保存(自分のパソコンだけにデータを保存する)
git add . git commit -m "追加した内容"6.ローカルリポジトリからリモートリポジトリにプッシュ(githubに保存)
git push origin masterこれでgithubにデータが保存されているかと思います!次はブランチを作成してプルリクエストするまでの手順を説明します。
7.ブランチを作成し、作成できているか確認git checkout -b "ブランチ名" git branchターミナルにmasterとブランチ名が書かれていれば作成完了です。
**8.ファイルに書き込み、5の手順で保存し、プッシュします。git push origin ブランチ名この後、githubにpull requestが表示されているはずなのでクリックしcreate pull requestをクリックします。(このあとがコードレビュー)
そして、コードが問題なければブランチのプルリクエストをリモートリポジトリのマスターにmargeします。(Delete branchでブランチを削除する)9. masterに移動し、githubの中身をロカールリポジトリのマスターに反映
git checkout master git pull origin masterこれでgithubにあるデータがローカルリポジトリに反映されました!このあとは7〜9までを繰り返していくだけで擬似開発がおこなえると思います。
10. ローカルリポジトリのブランチ削除
git branch -D 削除したいbranch名使い終わったローカルリポジトリのブランチを削除します。
最後に
ここまで読んでいただきありがとうございます!
書いていて感じたのですがローカルリポジトリやリモートリポジトリの説明が少ないため何をしているのか理解しづらいかもしれません。一度動画を見て仕組みを理解しておいた方がいいかと思います。あとは使っていたらだんだんわかってくるのでまずやってみましょう!
- 投稿日:2020-05-18T14:31:28+09:00
プログラミング初学者がでGitで擬似開発する方法
はじめに
初Qiita記事投稿です!
boost noteに書き殴っていた内容をまとめていきたいと思います。
独学歴は4ヶ月ちょっとなので、
初学者がgitを操作してgithubにコードを上げて自分の学習時間を記録したい!という方には役立つ記事にしたいと思います(僕もそのためにgitを勉強しました)。ご指摘・ご意見等あればご連絡いただけたら幸いです。
*lssuesから作成していくのが本来の共同開発の手順みたいなので、あくまで一連の手順を練習したい!という方向けです。流れを理解したら追記しようと思います。参考文献・参考記事
・【初心者必見】Gitの基本
https://www.youtube.com/watch?v
・Gitを使ったクローン、プルリク、マージの流れについて解説
https://www.youtube.com/watch?v=JispFS6zeDw&t=617s上記2つともプログラング講師として有名なかみざとさんのyoutube動画です。
こちらの動画両方見ればgitについての一連の流れは理解できるかと思います。
無料でこれが見れるのは神すぎる!・【Git入門】サルでも分かるGit入門の前に!Git使い方高速入門編【入門は5分で十分だと思います】
https://www.youtube.com/watch?v=i1L3A0SLDyggitをある程度扱えるようになってからですが、こちらの動画も大変参考になりました。(git add .でstagingに保存されるという理解はできてなかった)
5分で説明されているので、すぐにでもgitを使いたい!という方にはおすすめです。・Githubにport:22 で push できなかった場合の対処法
https://qiita.com/SOJO/items/74b16221580a17296226
こちらがおそらくメインといっても過言ではないです笑
このエラーに1日~2日程度悩まされました。。。
手順通りしてるのにpushできない!となったときはこちらの記事を確認してみてください。開発環境
OS:Macbook Pro(gitとgitHubを導入またはアカウント登録済みであることが前提)
擬似開発するまでの手順
1.githubにてフォルダを作成後ターミナルでdesktopに移動
cd desktop2.gitを起動してフォルダをコピー
git init git clone https://github.com/作成したフォルダの名前.gitgithubに作成したフォルダのcodeにhttpsのリンクが書いてあります。
3.エディターを使用し、index.htmlをファイルをフォルダ内に作成
ファイルに適当にテキストを書き込んでおく。
4.ターミナルに戻り、フォルダに移動
cd フォルダ名5.git add .でwork treeからstagingに保存し、git commit -m でローカルリポジトリに保存(自分のパソコンだけにデータを保存する)
git add . git commit -m "追加した内容"6.ローカルリポジトリからリモートリポジトリにプッシュ(githubに保存)
git push origin masterこれでgithubにデータが保存されているかと思います!次はブランチを作成してプルリクエストするまでの手順を説明します。
7.ブランチを作成し、作成できているか確認git checkout -b "ブランチ名" git branchターミナルにmasterとブランチ名が書かれていれば作成完了です。
**8.ファイルに書き込み、5の手順で保存し、プッシュします。git push origin ブランチ名この後、githubにpull requestが表示されているはずなのでクリックしcreate pull requestをクリックします。(このあとがコードレビュー)
そして、コードが問題なければブランチのプルリクエストをリモートリポジトリのマスターにmargeします。(Delete branchでブランチを削除する)9. masterに移動し、githubの中身をロカールリポジトリのマスターに反映
git checkout master git pull origin masterこれでgithubにあるデータがローカルリポジトリに反映されました!このあとは7〜9までを繰り返していくだけで擬似開発がおこなえると思います。
10. ローカルリポジトリのブランチ削除
git branch -D 削除したいbranch名使い終わったローカルリポジトリのブランチを削除します。
最後に
ここまで読んでいただきありがとうございます!
書いていて感じたのですがローカルリポジトリやリモートリポジトリの説明が少ないため何をしているのか理解しづらいかもしれません。一度動画を見て仕組みを理解しておいた方がいいかと思います。あとは使っていたらだんだんわかってくるのでまずやってみましょう!
- 投稿日:2020-05-18T00:22:48+09:00
GitHubのレポジトリーのmasterにpushができないようにする
GitHubのレポジトリーのmasterにpushができないようにする
目的
maseterにpushするとCI/CDが走ってしまい勝手にデプロイされてしまう。気をつけていても間違ってmasterにpushしてしまうので、システム的にmasterにはpushできないようにする。(自分がadministratorでもできないようにする)
調べた結果、以下の方法1だけすれば良い気がします。
方法1;Branch protection rule
GitHubレポのsettings -> Branches で
- Branch name pattern に master を設定して、
- Require pull request reviews before merging にチェックを入れて、
- Include administrators にチェックを入れる。(これにチェックを入れないと個人レポジトリーのオーナーではpushができてしまう。Organizationのレポジトリーでは未調査)
これだけでmasterへのpushはエラーとなります。
方法2:.git/hooks/pre-push
方法1はGitHubサーバー上で行う方法でした。こちらはクライアント側で行う方法です。
.git/hooks/pre-pushにpush前に実行されるスクリプトを置いて、pushしたときにmasterに対してのpushであれば中止する、ということが可能です。
ただGitHub上で実行されるわけではなくクライアントマシン上で実行されるものなので、どうやってスクリプトを配り、実行を強制させるのかは別で考えないといけません。
スクリプト自体は下の参考のリンクを参照ください。(僕は動作未確認です)
参考
Stack Overflowの質問
https://stackoverflow.com/questions/46146491/prevent-pushing-to-master-on-githubpre-pushのスクリプト
https://gist.github.com/vlucas/8009a5edadf8d0ff7430