ナベブログ

written by M-Watanabe

Gitの使い方【Git備忘録1】〜初心者向け〜

gitのロゴ

こんにちは、ナベです。

最近、Git(ギット)を勉強したので
備忘録としてザックリとした使い方をまとめてみました。

マクロ(概要)的な視点から、徐々に詳細を増やしていくように記載してます。

 

ローカルとリモート【環境】

大きく分けて2つの環境があります。

  • ローカル環境が、自分(または他の共同開発者)のPC端末上のこと。
  • リモート環境が、ローカルで開発していたファイルを合流させる、ネットワーク上のところ。

ローカル環境でコードを書きながら、いくつもセーブデータを作って、どこからでもやり直して‥。
最終的にリモート環境に上げてまとめていくイメージですね。

 

ローカル環境は3つ

  • Worktree
  • staging(インデックス)
  • ローカルリポジトリ

Worktreeは、実際に作業をしているディレクトリです。
そこからstagingローカルリポジトリとファイルデータを上げていき、最後はリモート環境へ。

これが、「ローカルからリモートへデータを上げる」流れです。

git worktreeというコマンドもあってややこしいので、ググるときには混同注意です。)

 

add・commit・push【コマンドを使う】

先ほどの流れ、「Worktree→staging→ローカルリポ→リモートリポ」に
コマンドを使ったやり方を加えていきます。

(※すでにGitがインストールされていることが前提です。)

 

add

データをステージングするためのコマンドです。
ターミナルで、作業中のディレクトリ(フォルダ)に移動している状態で

git add ファイル名

とコマンドを打つと、そのファイルがステージングされます。
(これを「インデックスにデータを登録する」ともいいます。)

 

ちなみに、

git add .

とコマンドを打つと、ディレクトリ内の「すべての」ファイルがステージングされます。

 

commit

ステージングされたデータを、ローカルリポジトリにコミットするためのコマンドです。

コミットは上書きされることなく、コミットするたび保存され、どの保存場所にも戻れます。
つまり、「いくつもセーブデータが作れて、いつでも好きなデータからやり直す」ことができるようなものです。

git commit -m "コメントを記載"

とコマンド打つと、コミットすることができます。

 

push

ローカルリポジトリに最終的にコミットされたデータを、リモートリポジトリにプッシュするためのコマンドです。

(※不用意にマスターブランチでプッシュすると、現場によってはメチャクチャ怒られますので注意。)

 

リモートリポに登録(紐付け)しておく

あらかじめGithubで作成したリモートリポジトリを登録(紐付け)するために
リモートコマンドを使います。

git remote add origin master 作成したリモートリポジトリのURL

とコマンドを打ちます。

 

リモートリポジトリをGithubで作成していなかったら、
「Githubでアカウント作成→新規にリポジトリを作成→作成したリポジトリページのURLを控える→remoteコマンド。」

ちなみに、URLの最初の「https://」や、最後の「.git」は意外と忘れがちです。
(一度紐付けが済んだリポを使うとき、アドレスバーのURLを使った‥という状況で起こりやすいので注意です。)

 

リモートリポに登録(紐付け)後にプッシュする

これでやっとローカルリポ→リモートリポへプッシュできます。

git push origin master

とコマンドを打ちます。
その後、Githubを更新させてみると、プッシュされたファイルデータが反映されていることが確認できます。

 

status・log【データの状態を確認】

さらに、データの状態を確認するコマンドを使ったやり方を加えていきます。

 

status

ディレクトリ(フォルダ)内の各ファイルが、
addコマンドでステージングしたかどうかを調べられます。

git status

とコマンドを打つと、ステージングされているファイルが「緑色」
ステージングされていないファイルが「赤色」で表示されます。

 

log

過去のコミット内容(変更履歴)をみれます。

git log

このコマンドを打てば表示されます。

 

↑ここまでをプチまとめ↑

  • 大きく分けて、ローカル・リモート、2つの環境。
  • ローカル環境は、ワークツリー・ステージング・ローカルリポジトリに分けられる。

 

  • addコマンドで(インデックスに)ステージングして、statusコマンドで状態確認。
  • commitコマンドで(ローカルリポに)コミットして、logコマンドで変更履歴を確認。
  • pushコマンドで(リモートリポに)プッシュしたら、Githubに反映される。

 

checkout【過去履歴に戻る・ブランチを作成or切替】

いよいよ、過去のコミット履歴(セーブデータ)に戻ったり
ブランチを使って、セーブボックスをいくつも作って共同開発できる環境を作るやり方を加えていきます。

混乱しないようにザックリ流れだけ整理すると、データを

  • マスターという本流から↓
  • 枝分かれさせたブランチ(セーブボックス)で↓
  • コミット履歴(セーブデータ)をいくつも作り、いずれかの過去履歴に戻る

という感じになります。

 

過去履歴に戻る

まずはlogコマンドで、変更履歴をみてみます。
そして、例えば「1つ前のコミット履歴に戻りたい」となったときは

git checkout HEAD^

とコマンドを打ちます。

2つ前の履歴なら、「」のマークを2つと、
戻りたい履歴に合わせて増やしていきましょう。

 

間違えた過去履歴に戻ったときの対処

もし、間違えた過去履歴に戻ってしまったら、

git reflog

のコマンドを打って、戻りたいコミット履歴を探して、そのコミットのID(ハッシュ値)を控えます。

 

そして、

git reset --hard 控えたコミットのID(ハッシュ値)

とコマンドを打てば、そのコミット履歴に戻れます。

 

ブランチを作成or切替

マスターという本流から、ブランチを切っていきます。

git checkout -b ブランチ名

これで、新しいブランチが作成されてそのブランチに移動できました。

git branch

とコマンドを打つと、今いるブランチが分かります。

そして、

git checkout ブランチ名

これで、好きなブランチに切替えられます。

 

なぜブランチを切るのか?

お互いの開発を干渉させないため」です。

ブランチは、いわゆる「別に分岐した歴史」みたいなものなので、
自分のブランチを自分だけが使っているなら、自分以外に干渉されることがないです。

 

とはいえ、

実際には同じブランチに変更があってエラーが起きたり(コンフリクトといいます)、

そもそも自分が違うブランチで作業してしまっていたり、

最終的にマスター(本流)に合流するときに誰かの後からプッシュしようとしてエラー。

なんてことはよくあります。
もちろん、よくあることなので、各々の解決方法もちゃんとあります。

(※ここでは解決方法は割愛します。)

 

clone【リモートリポのデータをコピー】

リモートリポのデータを、まるっとローカル環境にコピーできます。

まずはcdコマンドで、コピーしたい場所(例として、「cd desktop」コマンドで、デスクトップ)に移動します。
移動した状態で、

git clone https(リモートリポジトリのURL)

または、

git clone ssh名

とコマンドを打つと、デスクトップに指定したリモートリポジトリ のディレクトリがコピーされます。

 

自分のローカル環境でデータを作成したのなら【init】

もし、データをリモートからクローンしたのではなく、自分のローカル環境で作成したのなら
gitを使う前に、initコマンド初期化が必要です。

やり方は簡単で、
最初にターミナルで「cd」コマンドで、ディレクトリにある場所に移動します。

例えば、デスクトップのtestというディレクトリなら、

cd desktop/test

とコマンドを打つだけで、ターミナル上でtestディレクトリに移動することができます。

 

この状態で、

git init

とコマンドを打つと、初期設定のようなものがおこなえて、gitが使えるようになります。

 

↑ここまでの総まとめ↑

「上司から、共同開発でタスクを振られた」という設定で話を進めていきます。

 

  • リモートリポジトリのhttpsまたはsshを教えてもらう
  • git clone」で開発するディレクトリを、自分のPC(ローカル環境)にコピー
  • git checkout -b ブランチ名」で、自分用のブランチを作成。

 

  • git add」でステージング。「git status」で確認。
  • git commit」でローカルリポにコミット履歴を保存。「git log」で確認。
  • (「git checkout HEAD^」、「git reflog」、「git reset」を使ったり‥。)

 

  • git push」をしたら怒られるので、上司に自分のブランチ名を教えて指示を仰ぐ。
  • (上司にマージやらプルリクエストなるものを教わる。)

 

  • 次のタスクを振られ、ブランチを指定される。
  • git checkout 指定ブランチ名」で、ブランチを切替える。「git branch」で確認。

 

  • ローカル環境で別に作成したディレクトリをリモートリポにアップすることになった。
  • cd ディレクトリの場所」→「git init」。

 

勉強方法は「全体像3割のザックリ把握から」

参考までに、ここまでを把握できるまでのザックリした勉強方法を記載しておきます。

全体像を掴むために、Youtube視聴から

2〜3日、YouTubeで「Git・初心者・使い方」と検索した動画を、3つくらい繰り返し観ましょう
全体像みたいなものを掴める瞬間が必ずくるので、そしたら後は楽勝モードになります。

あとは完璧主義を捨てること。3割把握で十分です。

まずは、なんとなくで良いから「全体像をつかみ」、
わかるところから理解」していって、すぐに「手を動かしましょう」。

ホントにそれだけです。

 

3日以内。短期間で覚えれます!

Gitは最初とっつきにくいかもしれませんが、
結局は「ただのファイル管理するためのツール」です。

どんどん「試しに使って」、「失敗を楽しみながら」、「ググって理解して
爆速に使い方を学べばOKです。