- 投稿日:2020-10-23T17:11:34+09:00
Rails Tutorial 第1章学習編
Rails Tutorial 第一章で(。´・ω・)ん?って思ったところ
Cloud9のユーザー登録
Cloud9は現在Amazon Web Services (AWS) に統合されたため、Cloud9を使うためにはAWSアカウントが必要になります。AWSアカウントを既にお持ちの場合は、AWSにログインしてください。AWSコンソールに行き、検索ボックスから “Cloud9” と入力すると、Cloud9の開発環境を作成するためのページに行けます。
Amazon Web Services (AWS) アカウントを持っていない場合は、AWS Cloud9のユーザー登録をします。悪用防止のためクレジットカード情報の入力が必須になりましたが、Railsチュートリアルのワークスペースは1年間無料なのでご安心ください。アカウントが有効になるまで最大で24時間かかりますが、著者の場合は約10分ほどで完了しました。
Cloud9の管理ページ (図 1.4) に無事たどり着いたら “Create environment” をクリックし、図 1.5のような画面になるまで進めてください。情報を適宜入力して、確認ボタンを押して進めていくと、最終的にCloud9の開発環境を手に入れることができます (図 1.6)。このとき “root” ユーザーであるという警告メッセージが表示されるときがありますが、こちらの対処方法は後ほど説明します (IAMという機能を使った対応方法について13.4.4で説明します)。
引用:https://railstutorial.jp/chapters/beginning?version=5.1#sec-development_environmentこれじゃわかんねーよって感じだったのでYoutube上にあったcloud9の登録方法説明動画を参考にしました。
AWS Cloud9の登録にはクレジットカードが必須
あんまりいないと思うけどクレカ作れない人向け(´-ω-`)
住信SBIネット銀行で口座開設すれば貰えるデビットカードで代用できます('ω')ノコマンドでどうやってファイル開けばいいの? を解決
#Rails tutorialには便利なc9をインストール('ω')ノ #c9 <ファイル名> でファイルを開けるよ。 npm install -g c9このコマンド何してるの? その1
Rubyのインストールで無駄な時間を使わないようにするために追記 $ echo "gem: --no-document" >> ~/.gemrc UNIXコマンドの処理内容 echo "gem: --no-document" ("gem: --no-documentを) >> (末尾に追記してね。) ~/.gemrcファイル (ホームディレクトリの下にある~/.gemrcというファイルに)このコマンド何してるの? その2
JavaScriptソフトウェアの依存関係を管理するYarnをインストール $ source <(curl -sL https://cdn.learnenough.com/yarn_install) UNIXコマンドの処理内容 source ファイルに書かれたコマンドを現在のシェルで実行するコマンド <() : プロセス置換(コマンドの出力結果をファイルとして扱う機能) curl -sL https://cdn.learnenough.com/yarn_install curl [http://対象のURL] HTTPリクエストを実施し結果を標準出力へ -s -- 余計な出力をしない -L -- リダイレクトがあったらリダイレクト先の情報を取る yarn_installファイルの中身です。 #!/bin/bash # Installs YARN on AWS Cloud9 Ubuntu Server. curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get -y update && sudo apt-get -y install yarn やっと全貌が見えました! 以下のコマンドを実行してるんですね・・・! curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get -y update && sudo apt-get -y install yarncurl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get -y update && sudo apt-get -y install yarnこれって・・・なんでしょう?
自分のプラットフォームに合ったYarnインストール手順(英語)
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get -y update && sudo apt-get -y install yarnJavaScriptソフトウェアの依存関係を管理するYarnをインストールする為のコマンドって事だった。
このコマンド何してるの? その3
sudo ln -sf `which nano` /usr/bin UNIXコマンドの処理内容 sudo 管理者で実行 ln -sf シンボリックリンク(ショートカット)を作成 /usr/binという場所に飛ぶwhich nanoという名前のショートカットを作成?クラウドIDEを使う場合は、次にGitで使うデフォルトのエディタを設定します(編集や、“amend”でプロジェクトを変更するのに使われます)。ここでは、比較的使いやすくクラウドIDEのデフォルトエディタでもあるnanoエディタを使うことにしましょう。この設定を書き込んでもログアウト時にデフォルトエディタはログアウトしてしまいますし、パスも正しくないので、を実行してシンボリックリンク(symlinkとも呼ばれます)を作成してnanoの実行ファイルを正しく指すようにしましょう (初心者には少々難しいので、今読んで理解できなくても心配は不要です)。
(。´・ω・)ん? でどうすりゃいいの? まぁ飛ばすか( ^ω^)・・・。
Rails Tutorialで使用するデータベースソフト(SQL)について
cloud9(開発環境)ではsqliteを使用。
HerokuではPostgreSQLを使用。
開発環境と本番環境は同じSQLを使う事が推奨。なんで違うの使っているだろう学習の為なのかな?(´-ω-`)分からない。
Amazon RDS での AWS 無料利用枠
DB インスタンスを各月で連続して実行するのに十分な、MySQL、MariaDB、PostgreSQL、Oracle BYOL、または SQL Server (SQL Server Express Edition) などを使う Amazon RDS の Single-AZ db.t2.micro インスタンスのための、750 時間という使用時間
Oracle BYOL db.t3.micro Single-AZ インスタンスの使用は、Amazon RDS の無料利用枠に含まれています。Oracle BYOL の上で、db.t2.micro Single-AZ と db.t3.micro Single-AZ のインスタンスを両方実行する場合、その使用量はインスタンスクラス全体で合計されます。
20 GB の汎用 (SSD) DB ストレージ*
自動データベースバックアップとユーザーによる任意の DB スナップショットに使用できる 20 GB のバックアップストレージ*PostgreSQL使えるのに・・・なんでだろう。。。
Railsインストール関連
Railsをインストール RubyGemsが提供するgemコマンドを使う。 gem install rails -v 6.0.3 gem install [アプリ] -v [バージョン指定]
#Railsで空のテンプレート作成コマンド rails _6.0.3_ new hello_app rails _[version]_ new [アプリ名]Gemfile.はインストールするライブラリ(部品)を記述するファイルsource 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.6.3' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 6.0.3' # Use sqlite3 as the database for Active Record gem 'sqlite3', '~> 1.4' # Use Puma as the app server gem 'puma', '~> 3.11' # Use SCSS for stylesheets gem 'sass-rails', '~> 5' # Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker gem 'webpacker', '~> 4.0' # Turbolinks makes navigating your web application faster. # Read more: https://github.com/turbolinks/turbolinks gem 'turbolinks', '~> 5' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.7' # Use Redis adapter to run Action Cable in production # gem 'redis', '~> 4.0' # Use Active Model has_secure_password # gem 'bcrypt', '~> 3.1.7' # Use Active Storage variant # gem 'image_processing', '~> 1.2' # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.4.2', require: false group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a # debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] end group :development do # Access an interactive console on exception pages or by calling 'console' # anywhere in the code. gem 'web-console', '>= 3.3.0' gem 'listen', '>= 3.0.5', '< 3.2' # Spring speeds up development by keeping your application running in the # background. Read more: https://github.com/rails/spring gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' end group :test do # Adds support for Capybara system testing and selenium driver gem 'capybara', '>= 2.15' gem 'selenium-webdriver' # Easy installation and use of web drivers to run system tests with browsers gem 'webdrivers' end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]#Gemfileの中に記載されてるライブラリを一括インストールするコマンド bundle install #インストールしたライブラリに依存関係で問題が発生した場合に使うコマンド bundle update#Railsサーバーの立ち上げコマンド rails server rails s #(省略形) ← こっちの方がよく使うrb config/environments/development.rbRails.application.configure do . . . # Cloud9 への接続を許可する config.hosts.clear ←これ追記しないとRailsサーバーへのアクセスで弾かれる endGit関連
Gitはソースコードを管理する便利なアプリ
Githubはインターネット上にソースコードを保管する場所を提供してくれるサービス# Gitで使う名前の設定とメールアドレス設定 # ※Gitに設定する名前やメールアドレスは、今後リポジトリ上で一般に公開されるので注意 $ git config --global user.name "名前" $ git config --global user.email メールアドレス # checkoutコマンドをcoに省略できるようにする。 $ git config --global alias.co checkout # git pushする時にパスワード要求される時間を変える 毎回パスワード打つのめんどさを軽減 $ git config --global credential.helper "cache --timeout=86400" # リポジトリ(保存箱)を作るコマンド $ git init # 一時保存箱にファイルを入れるコマンド -A は変更(新規・追加・削除)があったファイルを全て追加という意味 $ git add -A # 一時保存箱にメモを付けて保存箱へ移すコマンド -m "メッセージ" でメモを書ける $ git commit -m "Initialize repository" # インターネット上にある自分のソースコード置き場をoriginという名前で登録 $ git remote add origin https://github.com/<あなたのGitHubアカウント名>/hello_app.git # 自分のアップロード $ git push -u origin master # 変更があるかを確認できる $ git status # 過去にcommitした内容を確認 $ git logHeroku関連
Herokuはインターネット上でアプリを公開させてくれるサービス(5個まで無料)
ソースコードのバージョン管理にGitを使っていれば、Railsアプリケーションを簡単に公開できる開発環境と本番環境で環境が違うのでそれに合わせてインストールするライブラリを変更する必要がある。
cloud9(開発・テスト環境) = sqlite3 Heroku(本番環境) = PostgreSQLruby.Gemfilesource 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } gem 'rails', '6.0.3' gem 'puma', '4.3.4' gem 'sass-rails', '5.1.0' gem 'webpacker', '4.0.7' gem 'turbolinks', '5.2.0' gem 'jbuilder', '2.9.1' gem 'bootsnap', '1.4.5', require: false #ここから上は全て共通でインストールするんだと思う('ω')ノ #開発環境とテスト環境のみインストール group :development, :test do gem 'sqlite3', '1.4.1' gem 'byebug', '11.0.1', platforms: [:mri, :mingw, :x64_mingw] end #開発環境のみインストール group :development do gem 'web-console', '4.0.1' gem 'listen', '3.1.5' gem 'spring', '2.1.0' gem 'spring-watcher-listen', '2.0.1' end #テスト環境のみインストール group :test do gem 'capybara', '3.28.0' gem 'selenium-webdriver', '3.142.4' gem 'webdrivers', '4.1.2' end #本番環境のみインストール group :production do gem 'pg', '1.1.4' end # Windows ではタイムゾーン情報用の tzinfo-data gem を含める必要があります gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]#本番用以外のgemをインストールする $ bundle install --without productionpg gemを追加したことやRubyバージョンを指定したことをGemfile.lockに反映させないと、
本番環境へのデプロイで失敗してしまうためです。#herokuコマンドのインストール source <(curl -sL https://cdn.learnenough.com/heroku_install) 実行してる中身のコマンドはこれ! curl -OL https://cli-assets.heroku.com/heroku-linux-x64.tar.gz tar zxf heroku-linux-x64.tar.gz && rm -f heroku-linux-x64.tar.gz sudo mv heroku /usr/local echo 'PATH=/usr/local/heroku/bin:$PATH' >> $HOME/.profile source $HOME/.profile > /dev/null# herokuにログインする (--interactiveオプションを使うとブラウザをかずにログインできる) $ heroku login --interactive # Herokuに新しいアプリケーションを作成する (gitのソースコードを解析して適切なサーバーを用意) $ heroku create # ソースコードをアップロードする これでネット上に自分の作ったサービスが公開される。 $ git push heroku master感想
Cloud9・Git・Herokuを使ってHello Worldだけど公開サービスができた!
アプリ開発だけで終わる本が多い中でサービスを公開まで1章で出来るって本当にすごいと思う。
今回のアウトプットでUNIXコマンドで躓いていただなぁっと調べて少し謎が解けた。
UNIXコマンド・・・(゜-゜) 事前学習読んだんだけどな
source 、(プロセス置換) <()、curl、 In こんなん書いてあったっけ・・・。まぁいいや、さぁ 2章も張り切って頑張るぞー( `ー´)ノ
- 投稿日:2020-10-23T16:33:44+09:00
Githubを理解しよう!②
今回は、Github学習したので、アウトプットしていきます
※以下の内容は、学習内容のアウトプット用のため、誤りがある場合があります。予めご了承くださいGithubを理解しよう!①を見てから、Githubを理解しよう!②を見ることをお勧めします。
https://qiita.com/syunta061689/items/ff80ab37641d6761d916基礎知識を確認しよう!
●リモートリポジトリ
ネット上にファイルをアップロードした状態でファイル管理するものです。
複数人で使うGithubを理解しよう
●登録する名前を変更する
qiita.rbvar$ cd ファイル名 $ git config user.name Shunta $ git config user.email Shunta@example.comこのコマンドをディレクト内で実行することで、名前とメールアドレスを変更することができます。
●複数人でGithubを使う
まず、複数人でGithubを使用する場合は、共通のリポジトリを作成する必要があります。
共通のリポジトリって何となると思うので、簡単な図をご覧ください。
●共通のリポジトリを作成する
qiita.rbvar$ git clone --bare path/to/複製元 path/to/共通のリポジトリ名.git上記のコマンドで共通のリポジトリを作成することができます。
共通のリポジトリは直接作業をしません。そこで、bareを用いることで。共通のリポジトリは、作業ディレクトリなしで、リポジトリだけを複製することができるのです。
つまり、共通のリポジトリは実態をもちません。
そして、共通のリポジトリのネームの最後に.gitとつけるのが一般的です。●共通のリポジトリから個別のリポジトリを作成する
上記の図を例にとって考えると、共通のリポジトリのからTaroリポジトリを作成してみましょう。
qiita.rbvar$ git clone path/to/共通のリポジトリ名 path/to/複製するリポジトリ名bareをなしにすることで、実態をもつリポジトリを複製することができます。
●リモートブランチの追跡を行なう
git cloneで複製したリポジトリは、元のブランチを追跡して作業する必要があります。
qiita.rbvar$ git branch <手元のブランチの名前> origin <追跡したいリモートブランチの名前>追跡したいリモートブランチは、git graphで確認することができ、リモートブランチの前にoriginがついています。
●リモート設定を行なう
qiita.rbvargit remote add origin path/to/共通のリポジトリ名clone で作っていないリポジトリに対して、リモートリポジトリの設定を行う時に上記のコマンドを実行します。
●リモートリポジトリの中身を引っ張ってくる
qiita.rbvargit fetch origin From path/to/共通のリポジトリ名clone で作っていないリポジトリに対して、originを反映させる
●リモートブランチの追跡を行なう(cloneで複製していないリポジトリの場合)
qiita.rbvargit branch --set-upstream-to=<追跡したいリモートブランチ> <手元のブランチ>"●originブランチの複製(cloneで複製していないリポジトリの場合)
qiita.rbvargit push <リモートリポジトリの名前> <手元のブランチ>:<リモートに作りたいブランチ>上記のコマンドで、共通のリポジトリにブランチを複製することができ、originブランチの複製に成功しました。
手元のリポジトリでのブランチの名前とリモートリポジトリのブランチの名前が同一の場合は以下のコマンドでもokです。
qiita.rbvar$ git push <リモートリポジトリの名前> <ブランチの名前>pushの後に何もなければ、共有リポジトリに変更を共有することができる
qiita.rbvar$ git push●リモートブランチの削除
リモートブランチを使用している場合は、2つ消す必要があります。
①手元のブランチの削除
これは、Githubを理解しよう!①の復習ですねqiita.rbvar$ git branch -d 削除したいブランチ名②リモートブランチの削除
qiita.rbvar$ git push origin :削除したいブランチ名●fetch してマージという一連の動作を自動で行なう
qiita.rbvar$ git pull origin「コンフリクト」が起こる可能性があるので注意!
最後に
Githubは複数人で使用する、かなり難易度が上がりますよね。
本記事では、筆者のメモ用,アウトプット用として執筆しましたが、こうしてアウトプットすると少し頭の中が整理されていいですね。参考文献
[Git をはじめからていねいに] https://github.com/takanabe/introduction-to-gitかなりわかりやすくて、お勧めです!!
- 投稿日:2020-10-23T11:35:13+09:00
.gitignore をコマンドで作成する[gibo]
.gitignore をコマンドで作成する
環境
ProductName: Mac OS X ProductVersion: 10.13.6 BuildVersion: 17G14033gibo
インストール例
$ brew install gibo使い方例
$ gibo dump Node >> .gitignore上記Nodeはboilerplates、下記で自分の要件にあったものを指定し実行
$ gibo list悪い例 dumpではboilerplates(テンプレートみたいなもの)を指定しないとこうなる。
$ gibo dump >> .gitignore Fetches gitignore boilerplates from https://github.com/github/gitignoregitignoreのテンプレート
おそらくlistの情報と一緒、好きなの選んで指定する。調べた理由
いつもプロジェクト新規作成時にnode_modulesをignoreするのがめんどくさかったから。
$ git st On branch init Untracked files: (use "git add <file>..." to include in what will be committed) node_modules/ package-lock.json package.json nothing added to commit but untracked files present (use "git add" to track)コメント
Global環境下に.gitignoreのテンプレートを作成するのも考えたが、
これから要件が異なることがあると考えたこと、ignore対象はしっかりと把握して作業をしたいと考えたため、テンプレートを指定し実行する方法を選択した。
今後の作業を進め、使用感を見極めたいと思う。References
デフォルトの .gitignore を使用する方法
Mac OSバージョンを確認するコマンドこの記事作成のプロジェクト
- 投稿日:2020-10-23T00:24:10+09:00
Githubを理解しよう!①
今回は、Github学習したので、アウトプットしていきます
※以下の内容は、学習内容のアウトプット用のため、誤りがある場合があります。予めご了承くださいGithubとは
Githubは友人、同僚、クラスメイト、見知らぬ人とコードを共有するための場所えお提供しているサービスのことです
基礎知識を確認しよう!
●gitとは?
主に、プログラムのソースコードを管理するためのシステムです。gitをうまく使うと、バーション管理や、バクの発見、複数の作業を並行して行なうことができます。
●リポジトリとは?
ソースコードを管理する単位です。プロジェクトごとに対応するリポジトリが作られます。リポジトリは、基本的に無料で何個も作成できます。
●stageとは?
Git では、コミットの前に、「作業ディレクトリ内のこのファイルの内容はリポジトリに反映してほしいけど、このファイルの内容は反映してほしくない」みたいなことを Git に教えておく必要があります。このとき、「次にコミットするときにリポジトリに反映される内容の置き場」のことを、staging area と呼んでいます。
つまり、staging area に上げられたことを「stage する」と言います。この状態で commit を行うと、Git は stage に上がっている内容をリポジトリに登録します。
ちなみに、staging areaにあげるコマンドが git addを使用します。
後ほど、説明します●branchとは?
分岐や再現を利用して、別々の作業を並行して行なうために利用します。
イメージ図
基礎コマンドを覚えよう!
開発環境:ターミナル
●空のリポジトリを作成し、初期化をする
qiita.rbvar$ mkdir 自分でファイル名を決める //新しいファイルを作成 $ cd ファイル名 //作成したファイルに移動する $ git init //リポジトリの初期化●ファイルの一覧を確認する
qiita.rbvar$ ls -a●現在のリポジトリと作業コピーの状態の確認
qiita.rbvar$ git status●staging areaにセットする
qiita.rbvar$ git addgit add コマンドは、リポジトリで作業した内容を記録するために、この変更内容を記録するよと、Githubに教えてあげる作業になります。
これをやることによって、Aの作業はGitHubに登録して記録しておきたいけど、 まだ、B作業は記録したくない時に、A作業だけ、git add でセットして、記録することができます。qiita.rbvar$ git add .また。git add .コマンドを使うことで、「その中身のファイルを全部」と指定してすることができます。
staging areaにセットする作業が複数ある場合に、使うことができ、非常に便利です。(Aの作業と、B作業を同時にセットしたい)●staging areaから削除する
qiita.rbvar$ git rm --cached [ファイル名]staging areaにセットするコマンドがあるなら、staging areaから削除するコマンドもあります。
●リポジトリの作業を記録する
qiita.rbvar$ git commitgit add でセットされた内容を記録します。この記録を元にファイルを復元したりすることが可能になります。
●直前のコミットを上書きする
作業した状態のファイルを、git add し、以下のコマンドを実行します。
qiita.rbvar$ git commit --amend●履歴をみる
qiita.rbvar$ git log「何を」「誰が」「どんな作業したのか」の履歴を見ることができます。
●ブランチを視覚的に見る
qiita.rbvar$ git log --graph--graph というオプションをつけて実行すると、コミットの親子関係を視覚化することもできます。
わかりにくいと思うので簡単な例をご紹介します。
qiita.rbvar* commit | Author: Shunta-Ymasaki <Yamasakim@gmail.com> | Date: Sat May 4 03:20:59 2020 +0900 | | チンパンジーファイルの中に、ゴリラファイルを追加 | * commit Author: Shunta-Ymasaki <Yamasakim@gmail.com> Date: Fri May 3 22:32:52 2020 +0900 チンパンジーファイルを追加このように、作業のgit log --graphコマンドを使うことによって、作業の分岐を確認することができます。
●ファイルの削除する
qiita.rbvar$ git rm ファイル名これも簡単な例を見ていきましょう。
今回もこちらの例を使います。qiita.rbvar$ git log --graph * commit | Author: Shunta-Ymasaki <Yamasakim@gmail.com> | Date: Sat May 4 03:20:59 2020 +0900 | | チンパンジーファイルの中に、ゴリラファイルを追加 | * commit Author: Shunta-Ymasaki <Yamasakim@gmail.com> Date: Fri May 3 22:32:52 2020 +0900 チンパンジーファイルを追加チンパンジーファイルの中に、ゴリラファイルを追加をしたのに、「やっぱりいらないとなって、ゴリラファイルを削除しました」
qiita.rbvar$ git log --graph * commit | Author: Shunta-Ymasaki <Yamasakim@gmail.com> | Date: Sat May 4 03:20:59 2020 +0900 | | チンパンジーファイルの中に、ゴリラファイルを追加 //追加したゴリラファイルを削除した | * commit Author: Shunta-Ymasaki <Yamasakim@gmail.com> Date: Fri May 3 22:32:52 2020 +0900 チンパンジーファイルを追加さて、これで、作業ディレクトリ内には、「ゴリラファイルが削除された」という変化がおこりました。
この変更をstageするためにgit addをすればいいと思いがちなんですが、
実は、ファイルの削除という変更を stage するためには、git add ではなく、git rm を使わないといけません!
また、git rmコマンドを使うと、手動でファイルを削除する必要がないです。
この作業をリセットすることもできます。
●not staged 状態にする
qiita.rbvar$ git reset HEAD 削除したファイル名●削除したファイルを復活させる
qiita.rbvar$ git checkout -- 削除したファイル名●ファイル名を変更する
qiita.rbvar$ git mv <リネーム前のファイルの名前> <リネーム後のファイルの名前>●新しいファイルを作って、そこに既存のファイルを移動させる
qiita.rbvar$ mkdir animals //新しいファイルを作成 $ git mv 既存のファイル名 animals/既存のファイル名 $ git mv 既存のファイル名 animals/既存のファイル名branchを理解しよう!
●ブランチを表示する
qiita.rbvar$ git branch●ブランチを作成する
qiita.rbvar$ git branch ブランチ名●ブランチを切り替える
qiita.rbvar$ git checkout 切り替えるブランチ名●ブランチを作成して、切り替える
qiita.rbvar$ git checkout -b ブランチ名簡単な例を見てみましょう
qiita.rbvar$ git graph * bab8d49 (HEAD, A_branch) 2020-010-22 Shunta 動物ファイル名にゴリラファイルを追加 | * c3ef974 (master) 2020-010-22 Shunta 動物ファイルにチンパンジーファイルを追加 |/ * 5fe17c7 2020-010-22 Shunta-Ymasaki 動物ファイルを作成上記の例では、masterブランチの分岐として、A_branchが存在しています。
●分岐元を指定して、ブランチを作成し切り替える
qiita.rbvargit branch -b <新しく作るブランチの名前> <分岐元>上記のコマンドにすることで、分岐元を指定することができます。
マージを理解しよう!
merge というのは「複数のコミットを」一緒にするということです。
例として、 branchAをマージしてみます。
qiita.rbvar$ git merge branchAqiita.rbvar$ git graph //mergeしたことよって分岐していたものが一つになる * e175c44 (HEAD, master) 2020-010-22 Shunta Shunta Merge branch 'branchA' |\ | * bab8d49 (branchA) 2020-010-22 Shunta 動物ファイル名にゴリラファイルを追加 * | 5fe17c7 2020-010-22 Shunta-Ymasaki 動物ファイルにチンパンジーファイルを追加 |/ * 6fe17c7 2020-010-22 Shunta-Ymasaki 動物ファイルを作成●ブランチを削除する
mergeしたbranchAは不要なので、削除します。
qiita.rbvar$ git branch -d branchAqiita.rbvar$ git graph * e175c44 (HEAD, master) 2020-010-22 Shunta Shunta Merge branch 'branchA' |\ / | * bab8d49 2020-010-22 Shunta 動物ファイル名にゴリラファイルを追加 //branchAの項目は削除される * | 5fe17c7 2020-010-22 Shunta 動物ファイルにチンパンジーファイルを追加 |/ * 6fe17c7 2020-010-22 Shunta-Ymasaki 動物ファイルを作成git branch -d branchAを削除する先ほどのgit graphの項目からbranchAを削除することができます。
●Fast-forwardにならないmerge
Fast-forwardは説明が難しいので、こちらも簡単な例を見ていきましょう。
まず、branchA、branchBを作成して、「branchAは動物ファイルにチンパンジーファイルを追加」、「branchBは動物ファイル名にゴリラファイルを追加」という作業をし、コミットします。さらに、branchBだけmergeした想定で行います。Fast-forwardを使用とすると以下のgraphになります
qiita.rbvar$ git graph * 5f26eb2 (HEAD, master, branchB) 2020-010-22 Shunta 動物ファイル名にゴリラファイルを追加 | * ff00bb6 (branchA) 2020-010-22 Shunta 動物ファイルにチンパンジーファイルを追加 |/ * 8efecbd (master) 2020-010-22 Shunta-Ymasaki 動物ファイルを作成一見、シンプルに見えるgraphですが、これでは、直感的にmergeした履歴がわかりにくいです。
そこで登場するのが、このコマンドです。
qiita.rbvar$ git merge --no-ff branchBこのコマンドを使用することで、Fast-forwardを使用せずに、mergeを行います。
そうすると、以下のようなgraphになります。qiita.rbvar$ git graph * 7090c03 (HEAD, master) 2020-010-22 Shunta Merge branch 'branchB' |\ | * 5f26eb2 (branchB) 2020-010-22 Shunta 動物ファイル名にゴリラファイルを追加 |/ | * ff00bb6 (branchA) 2020-010-22 Shunta 動物ファイルにチンパンジーファイルを追加 |/ * 8efecbd 2020-10-22 Shunta-Ymasaki 動物ファイルを作成このようにMergeした記録も分岐して残リます。
●過去改変をする
qiita.rbvar$ git checkout branchA $ git rebase mastergit rebase を行なうことで、過去の改変を行なうことができます。
簡単な例を見ていきましょうqiita.rbvar$ git graph * 7090c03 (HEAD, master) 2020-010-22 Shunta Merge branch 'branchB' |\ | * 5f26eb2 2020-010-22 Shunta 動物ファイル名にゴリラファイルを追加 |/ | * ff00bb6 (branchA) 2020-010-22 Shunta 動物ファイルにチンパンジーファイルを追加 |/ * 8efecbd 2020-10-22 Shunta-Ymasaki 動物ファイルを作成前提条件として、branchBはmergeしてgit branch -dコマンドを実行をしています。
この状態からbranchAに戻って作業する時に、branchBの作業内容を反映させられたら便利ですよね。
それを可能にしてくれるのが、git rebaseコマンドです。git rebaseコマンドを実行すると以下の通りになります。
qiita.rbvar$ git graph * 03f91be (HEAD, branchA) 2020-010-22 Shunta 動物ファイルにチンパンジーファイルを追加 //branchBの要素を持ったbranchA * 87fe5eb (master) 2020-010-22 Shunta Merge branch 'branchB' |\ | * 0bd5673 5f26eb2 2020-010-22 Shunta 動物ファイル名にゴリラファイルを追加 |/ * 3b9ccc5 2020-10-22 Shunta-Ymasaki 動物ファイルを作成最後に
今回は、基礎知識と基礎コマンドのについてまとめてみました。
GitHubは色々なコマンドがあるので、混乱してしまいますが、焦らず少しづつ使いこなせるようにしていきます。次回は、複数人でGitHubを使う時に、用いるコマンドについてまとめていきます!
参考文献
[Git をはじめからていねいに] https://github.com/takanabe/introduction-to-gitかなりわかりやすくて、お勧めです!!
- 投稿日:2020-10-23T00:16:03+09:00
誤った情報をpushしてしまった時の対処法
この記事で分かること
- 誤った情報をpushしてしまった
- 誤った情報をcommitしてしまった
誤った情報をpushしてしまった
pushした情報をローカルリポジトリに戻すことはできません。したがって、pushする前に作業をしているブランチは正しいのかどうか、必ず確認するようにしましょう。
それでも間違ってpushしてしまうことがあります。ローカルリポジトリにその情報は戻せないものの、リモートリポジトリにある誤ったcommit情報は取り消すことができますcommitを取り消す方法
commitを取り消すためには、revertと呼ばれる技術を用います
間違ってpushしたcommitを取り消すことができます。commitを削除するのではなく、「指定するcommitを取り消すためのcommit」を追加で行います。
revertはcommitされた変更と逆になる変更を追加することで、commitを取り消します誤った情報をcommitしてしまった
現場からは以上です!