Oimo のお勉強ノート

勉強したことのメモを残す

GitHub Desktop を卒業して Gitコマンドを覚える

GitHub Desktop を辞めて ターミナル(コマンド)を使えるようになろうとした時の備忘録

はじめに

かれこれ5年くらいGitHubを仕事で使っているけど、エンジニアじゃないから・・・と思ってGitHub Desktopを使ってcloneとかcommitやpublish、pullなどをしていました。ふと、そろそろ仕組みには慣れてきたし、コマンド覚えた方がかっこいいかも?(笑)と思いたって勉強したことをまとめて置くことにしました。

前提条件

Gitコマンド

ローカルにリポジトリにREADMEを作ってリモートリポジトリに同期する(初回)

これは簡単!ブラウザからGitHubにリモートリポジトリを作成すると出てくるコマンドを打つだけでできます。

例)リポジトリ名「test」で作成

リポジトリの作成
リポジトリの作成

リポジトリを作ると表示されるコマンドがこれ

新しいリポジトリを作るコマンド
新しいリポジトリを作ると表示されるコマンド

このコマンドを打つ前にローカルリポジトリを用意する場所を指定したいので、次のコマンドから始める。(前述の通り、私の場合はDocuments/GitHub/に作っているのでこうなる。)

$ cd Documents/GitHub/
$ mkdir test

続けて指定された通り実行する。

$ echo "# test" >> README.md
$ git init
$ git add README.md
$ git commit -m "first commit"
$ git remote add origin https://github.com/natsumo/test.git
$ git push -u origin master

これで、

  1. 中身が # test だけの README.md ファイルが作成される
  2. 「test」フォルダを Gitリポジトリにする
  3. 1.で作ったREADME.mdファイルがの変更(今回は新規作成)を、"first commit"(サマリー)としてcommit する
  4. リモートリポジトリの https://github.com/natsumo/test.git にpush する準備をする
  5. 晴れて初回masterブランチへのpushを実行

っという感じだと思う。 ちなみに複数ファイルに変更があるときは、

$ add .

とすればOKみたい。

リモートリポジトリの変更をローカルリポジトリに同期する

$ git pull

または、

$ git fetch
$ git merge origin/master

git fetch だけだと取ってくるだけで同期されないらしい。

ローカルリポジトリの変更をリモートリポジトリに同期する(2回目以降)

README.mdを変更した場合はこんな感じ。初回と違うのは push のところに -u オプションがないだけ。

$ git add README.md
$ git commit -m "Update README.md"
$ git push origin master

だいぶできるようになってきた気がする!(本当か?笑)

既存リモートリポジトリをローカルにクローンする

今度は違うリモートリポジトリ(例えば「test2」)をローカルに置く場合、Document/GitHub フォルダに戻ってから次を実行する。*1

$ mkdir test2
$ git clone https://github.com/natsumo/test2.git

ローカルリポジトリで master ブランチから新しいブランチを作る

まずはブランチを確認してから。カレントブランチには「*」が付いている。

$ git branch -a
* master

masterブランチになっていないときはブランチを変更する。

$ git checkout master

masterブランチを最新の状態にしてから新しいブランチ 例えばfix/hogehogeを作る。

$ git pull
$ git checkout -b fix/hogehoge

Pull Request を作る

プルリクを作るのはコマンドを使わないのが早い! ブラウザからGitHubを開いて操作する。

マージ済み不要ブランチを削除する

例えばfix/hogehogeを削除する。

$ git branch -d fix/hogehoge

ちなみに、マージしていないけど不要なブランチを消したい場合は次のようにすると強制的に消すことができる。

$ git branch -D fix/hogehoge

*1:一般にはこれでうまく行くんだけけど、自分はこれがうまくいかなくてしばらく悩みました、、その原因は test ディレクトリをglobal のremoteに設定してしまっていたことでした・・いつやったんだろう; 一応その対処方法は別に書いておこうと思うので、同じように悩んだらこちらをどうぞ▼ natsumo.hatenablog.com