GitHub Desktop を卒業して Gitコマンドを覚える
GitHub Desktop を辞めて ターミナル(コマンド)を使えるようになろうとした時の備忘録
はじめに
かれこれ5年くらいGitHubを仕事で使っているけど、エンジニアじゃないから・・・と思ってGitHub Desktopを使ってcloneとかcommitやpublish、pullなどをしていました。ふと、そろそろ仕組みには慣れてきたし、コマンド覚えた方がかっこいいかも?(笑)と思いたって勉強したことをまとめて置くことにしました。
前提条件
- GitHubを使うときは
Document/GitHub
フォルダを作って、その中にGitのローカルリポジトリを置いていたので、それは継続して使うことにする - 少しずつ勉強していくので記事の中身も少しずつ増える予定
- クラウドに上がっているリポジトリを「リモートリポジトリ」、自分のPC内のリポジトリ「ローカルリポジトリ」と呼ぶことにする
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
これで、
- 中身が
# test
だけの README.md ファイルが作成される - 「test」フォルダを Gitリポジトリにする
- 1.で作ったREADME.mdファイルがの変更(今回は新規作成)を、"first commit"(サマリー)としてcommit する
- リモートリポジトリの
https://github.com/natsumo/test.git
にpush する準備をする - 晴れて初回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