20201023のGitに関する記事は5件です。

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 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 yarn

これって・・・なんでしょう?
自分のプラットフォームに合ったYarnインストール手順(英語)
image.png

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

JavaScriptソフトウェアの依存関係を管理する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.rb
Rails.application.configure do
  .
  .
  .
  # Cloud9 への接続を許可する
  config.hosts.clear ←これ追記しないとRailsサーバーへのアクセスで弾かれる
end

Git関連

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 log

Heroku関連

Herokuはインターネット上でアプリを公開させてくれるサービス(5個まで無料)
ソースコードのバージョン管理にGitを使っていれば、Railsアプリケーションを簡単に公開できる

開発環境と本番環境で環境が違うのでそれに合わせてインストールするライブラリを変更する必要がある。
cloud9(開発・テスト環境) = sqlite3 Heroku(本番環境) = PostgreSQL

ruby.Gemfile
source '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 production

pg 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章も張り切って頑張るぞー( `ー´)ノ

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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を使用する場合は、共通のリポジトリを作成する必要があります。

共通のリポジトリって何となると思うので、簡単な図をご覧ください。
スクリーンショット 2020-10-23 13.47.58.png

●共通のリポジトリを作成する

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.rbvar
git remote add origin path/to/共通のリポジトリ名

clone で作っていないリポジトリに対して、リモートリポジトリの設定を行う時に上記のコマンドを実行します。

●リモートリポジトリの中身を引っ張ってくる

qiita.rbvar
git fetch origin From path/to/共通のリポジトリ名

clone で作っていないリポジトリに対して、originを反映させる

●リモートブランチの追跡を行なう(cloneで複製していないリポジトリの場合)

qiita.rbvar
git branch --set-upstream-to=追跡したいリモートブランチ 手元のブランチ" 

●originブランチの複製(cloneで複製していないリポジトリの場合)

qiita.rbvar
git 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

かなりわかりやすくて、お勧めです!!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

.gitignore をコマンドで作成する[gibo]

.gitignore をコマンドで作成する

環境

ProductName:    Mac OS X
ProductVersion: 10.13.6
BuildVersion:   17G14033

gibo

giboのGitHub

インストール例

$ brew install gibo

使い方例

$ gibo dump Node >> .gitignore

上記Nodeはboilerplates、下記で自分の要件にあったものを指定し実行

$ gibo list

悪い例 dumpではboilerplates(テンプレートみたいなもの)を指定しないとこうなる。

$ gibo dump >> .gitignore

Fetches gitignore boilerplates from https://github.com/github/gitignore

gitignoreのテンプレート
おそらく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バージョンを確認するコマンド

この記事作成のプロジェクト

weather_app

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Githubを理解しよう!①

今回は、Github学習したので、アウトプットしていきます
※以下の内容は、学習内容のアウトプット用のため、誤りがある場合があります。予めご了承ください

Githubとは

Githubは友人、同僚、クラスメイト、見知らぬ人とコードを共有するための場所えお提供しているサービスのことです

基礎知識を確認しよう!

●gitとは?

主に、プログラムのソースコードを管理するためのシステムです。gitをうまく使うと、バーション管理や、バクの発見、複数の作業を並行して行なうことができます。

●リポジトリとは?

ソースコードを管理する単位です。プロジェクトごとに対応するリポジトリが作られます。リポジトリは、基本的に無料で何個も作成できます。

●stageとは?

Git では、コミットの前に、「作業ディレクトリ内のこのファイルの内容はリポジトリに反映してほしいけど、このファイルの内容は反映してほしくない」みたいなことを Git に教えておく必要があります。このとき、「次にコミットするときにリポジトリに反映される内容の置き場」のことを、staging area と呼んでいます。

つまり、staging area に上げられたことを「stage する」と言います。この状態で commit を行うと、Git は stage に上がっている内容をリポジトリに登録します。

ちなみに、staging areaにあげるコマンドが git addを使用します。
後ほど、説明します

●branchとは?

分岐や再現を利用して、別々の作業を並行して行なうために利用します。

イメージ図

スクリーンショット 2020-10-22 16.14.46.png

基礎コマンドを覚えよう!

開発環境:ターミナル

●空のリポジトリを作成し、初期化をする

qiita.rbvar
$ mkdir 自分でファイル名を決める //新しいファイルを作成 
$ cd ファイル名 //作成したファイルに移動する
$ git init //リポジトリの初期化

●ファイルの一覧を確認する

qiita.rbvar
$ ls -a

●現在のリポジトリと作業コピーの状態の確認

qiita.rbvar
$ git status

●staging areaにセットする

qiita.rbvar
$ git add

git 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 commit

git 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.rbvar
git branch -b 新しく作るブランチの名前 分岐元

上記のコマンドにすることで、分岐元を指定することができます。

マージを理解しよう!

merge というのは「複数のコミットを」一緒にするということです。

例として、 branchAをマージしてみます。

qiita.rbvar
$ git merge branchA
qiita.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 動物ファイルにチンパンジーファイルを追加
|/
* fe17c7  2020-010-22 Shunta-Ymasaki 動物ファイルを作成

●ブランチを削除する

mergeしたbranchAは不要なので、削除します。

qiita.rbvar
$ git branch -d branchA
qiita.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 動物ファイルにチンパンジーファイルを追加
|/
* fe17c7  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 master

git 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

かなりわかりやすくて、お勧めです!!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

誤った情報をpushしてしまった時の対処法

この記事で分かること

  • 誤った情報をpushしてしまった
  • 誤った情報をcommitしてしまった

誤った情報をpushしてしまった

pushした情報をローカルリポジトリに戻すことはできません。したがって、pushする前に作業をしているブランチは正しいのかどうか、必ず確認するようにしましょう。
それでも間違ってpushしてしまうことがあります。ローカルリポジトリにその情報は戻せないものの、リモートリポジトリにある誤ったcommit情報は取り消すことができます

commitを取り消す方法

cbe00f28b88d5f18b9c71024034afe3d.png

commitを取り消すためには、revertと呼ばれる技術を用います
間違ってpushしたcommitを取り消すことができます。commitを削除するのではなく、「指定するcommitを取り消すためのcommit」を追加で行います。
revertはcommitされた変更と逆になる変更を追加することで、commitを取り消します

誤った情報をcommitしてしまった

83c821f4a185cf767e80dcde53e109da.png

現場からは以上です!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む