Gitについて

$ git init

$ git add -A

$ git commit -m "Initialize repository"

$ git remote add origin https://github.com/<あなたのGitHubアカウント名>/sample_app.git

$ git checkout -b modify-README

$ git branch

$ git status

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

$ git checkout master

$ git merge modify-README

$ git branch -d modify-README

$ git push

$ heroku create

$ git push heroku master











$ git checkout -b user-microposts

$ git add -A

$ git commit -m "Add user microposts"

続いてmasterにマージします。

$ git checkout master
(「ワークツリーをmasterブランチに切り替える」という意味)

$ git merge user-microposts

$ git push

準備ができたら、いよいよ本番環境へデプロイしてみましょう。

$ git push heroku

$ heroku pg:reset DATABASE

$ heroku run rails db:migrate

$ heroku run rails db:seed

========================================================

代表的なGitの専門用語

  1. クローン

  2. コミット

  3. プッシュ

  4. マージ

  5. プル

  6. ブランチ

1.クローン
「クローン」は、リモートリポジトリを複製してローカルリポジトリを作るコマンド。
2.コミット
「コミット」は、ファイルの追加や変更の履歴をリポジトリに保存するコマンド。
3.プッシュ
「プッシュ」は、ローカルリポジトリの変更をリモートリポジトリに反映させるコマンドです。
4.マージ
「マージ」は、異なるブランチの変更を統合することです。
5.プル
「プル」は、リモートリポジトリの変更をローカルリポジトリに反映させることです。
6.ブランチ
ブランチとは、履歴の流れを分岐して記録していくためのものです。分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができます。

また、分岐したブランチは他のブランチと合流(マージ)することで、一つのブランチにまとめ直すことが出来ます。

[masterブランチ]
リポジトリに最初のコミットを行うと、Gitはmasterという名前のブランチを作成します。そのため、以後のコミットはブランチを切り替えるまでmasterブランチに追加されていきます。


========================================================

[Gitでイニシャライズする( git init )]

git initコマンドで、イニシャライズすることができます。

A. イニシャライズってなんですか?
B. Gitを使い始める、最初の状態にすることね。このディレクトリはこれからGitで管理するよ、ってパソコンに教えてあげるの

git initと打ち込むと、「.git」フォルダが生成され、イニシャライズされます。

[ステージング・エリアに追加 ( git add )]

git addは、今の状態をステージング・エリアに追加するコマンドです。
では、先ほど作ったscript.jsをステージング・エリアに追加します。以下のコマンドを入力します。

$ git add script.js

これで、script.jsの今の状態(「console.log(“バージョン1”);」と書かれている)が、追加されます。

インデックスに追加したいファイルが一つだけの時は、このようにファイル名を指定すればいいですが、ワークツリー全体を追加したい場合には、以下のコマンドが便利です。

$ git add .

$ git add -A

このコマンドを実行すると、現在のディレクトリにあるファイルがすべて追加されます。
(多くの開発者は、このコマンドとほぼ同等のgit add .コマンドを使います(このドットはカレントディレクトリを表します)。両者に違いが生じることはめったにありませんが、普通はgit add -Aを使いますし、Gitの公式ドキュメントにもそう書いてあるので、本書ではこの書き方を採用しています。)

git statusで確認すると、次のようになります。

$ git status
On branch master

No commits yet

Changes to be committed:
(use "git rm --cached <file>..." to unstage)

new file:   script.js

これで、作成したファイルをステージングエリアに追加することができました。
続いて、この追加したファイルの状態を、リポジトリにコミットします。


[コミットする ( git commit )]

コミットするには、git commitコマンドを使います。

再掲:コミット「コミット」は、ファイルの追加や変更の履歴をリポジトリに保存するコマンド

また、-mを使うで、エディタを開くことなくコメントをつけることができます。こちらの方が簡単ですね。

$ git commit -m "はじめてのコミット"

これで、ローカルリポジトリにコミットすることができました。

ここでgit statusコマンドを使うと、以下のように表示されます。

$ git status
On branch master
nothing to commit, working tree clean

A. どうしていったんaddしてからコミットするんですか? 同じことを二回やってる気がして……いきなりコミットじゃダメなんですか?
B. いったんステージングエリアにaddすることで、コミットするファイルを整理できるのよ

〜〜〜〜〜〜〜〜〜〜〜読み飛ばしてもいい〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[なぜステージしてからコミットするのか]

さて、どうしていったんステージングエリアにaddしてからコミットするのでしょうか。
少し作業を中断して、考えてみます。

りこ師匠、ステージングエリアが存在する意味が分かりません……正直、いきなりコミットでもいいですよね

そうね……じゃあ、あんたは、なにか言葉を発するとき、なにも考えずに言葉が出てくる?

いえいえ、よく考えてから発言しますよ。これは言った方がいいかな、でもあれは言わない方がいいかな、とか……

でしょ? なにも考えずにしゃべったら、言い忘れちゃったり、逆に言いすぎちゃったりするのよ

よくある失敗ですね……まさか!

そう

さっきはファイルをひとつしか作ってなかったから、ステージのありがたさが分かりにくかったかもしれないけど、ファイルが大量にあったら、どの作業をコミットするのか、分かりにくいでしょ?

git addでステージするのは、なにを言って、なにを言わないか、考えるのと同じなのよ

そしてコミットで、言おうと決めた言葉だけ発するの

コミットも、しゃべるのも、どっちも失敗したくないでしょ?

なるほど、言葉を話すのと同じなんですね!

ステージの大切さが痛いほど分かるっ!

〜〜〜〜〜〜〜〜〜〜〜読み飛ばしてもいい〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[ファイルに変更を加える]

A. バカなことやってないで、元に戻して!
B. もうVim(テキストエディタ)も閉じてしまったので、戻せないですよ……
A. あぁ、もう! そんなときこそ、Gitを使うのよ

[どこが変更されたのか確認する( git diff )]
Gitにはファイルのどこが変更されたのか、つまり差分を表示する機能がある
差分を表示するには、git diffというコマンドを使います。

$ git diff

[変更を取り消す、戻す( git checkout )]

先ほど、つい余計なソースを書き込んでしまいました。
そこで、先ほどコミットしたところまで、戻してみます

git checkoutというコマンドを使います。

$ git checkout script.js

[コミット履歴を指定して、好きなところに戻る]

現在、3つのコミットがあり、script.jsの内容を「バージョン3」に変更したところです。
では、ここでふと、「バージョン1」に戻したい、と思ったとします。

そんなときは、git reset --hardを使います。

まず、git logで、戻りたいコミットを探します

$ git log
commit 7194931e33ac9702919d553d399a802b04b3b77a (HEAD -> master)
Author: R
Date:   Tue Aug 18 00:00:04 2020 +0900

バージョン3に変更

commit 8bd2b87cd3840b021d10934738345699ff1f95b9
Author: R
Date:   Tue Aug 18 00:00:02 2020 +0900

バージョン2に変更

commit 2a4316eeb28d17613b41a74cfee75c55345fe411
Author: R
Date:   Tue Aug 18 00:00:00 2020 +0900

はじめてのコミット

commitと書かれた部分の右側にある文字列をコピーして、git reset --hardの後ろに貼り付けます。

$ git reset --hard 2a4316eeb28d17613b41a74cfee75c55345fe411

これで「バージョン1」に戻すことができました

$ cat script.js
console.log("バージョン1");



以下のサイトがめちゃくちゃわかりやすい!


========================================================

git checkout master
(ワークツリーをmasterブランチに切り替える)


よろしければサポートよろしくお願いします!いただいたサポートはクリエイターとしての活動費として使わせていただきます!