みんなgit使ってるけど実は使い方に自信ないぜ!っていう人向けに最低限必要な操作方法をまとめる。
接続アカウント
案件によってGitのログインアカウントが異なる場合があるので、そのときは都度user.name、user.emailを変更する。
設定確認
git config -l
アカウントの設定変更
git config --global user.name "[Gitのアカウント名]"
git config --global user.email "[メールアドレス]"
SSH接続設定
(1) ローカルPCで公開鍵と秘密鍵を作成(すでに作成済みの場合は再利用する)
cd ~/.ssh
ssh-keygen -t rsa -C "[メールアドレス]" -b 4096
(2) こんな感じで作られてるのが確認できるはず。この公開鍵をコピーし、GitHub側で登録する
cat ~/.ssh/id_rsa.pub
(3) 端末側で鍵を登録する
ssh-add ~/.ssh/id_rsa
リポジトリ作ったら最初に使うコマンド
リポジトリに既にコードがあるので、ローカルにコードを持ってきたい場合
(1)クローン
まずクローンする。この操作でローカルに持ってこれるのはmasterブランチのみ。
git clone git@hogehoge.jp:xx.git
※git@~の部分は、githubやgitlabなど使ってるサービスによって異なるので、各サービスの「clone」ボタンからコマンドを確認しよう
ではローカルに持ってこれたブランチ情報をみてみよう
git branch -a
* master
remotes/origin/master
「*」は今このブランチをみてるよっていう印
(2) ブランチを変更する
masterブランチに直接コードをあげるのは稀。masterなので綺麗なコードを管理したいからね。ごちゃごちゃコード弄るときはだいたいdevelopブランチ等の専用ブランチで管理をする。このとき、「作業するブランチを切り替える」ということをする。
たとえばdevelopブランチをローカルに持ってくる(=ローカルにdevelopブランチを新規作成してリモートのdevelopブランチに紐づける)
git branch develop origin/develop
すると、こんな風になってるはず
git branch -a
* master
develop
remotes/origin/master
remotes/origin/develop
同時にブランチ切り替えもしたい場合はこう↓
git checkout -b develop origin/develop
ん?じゃあこのdevelopブランチは最終的にmasterブランチにも反映しなきゃいけないんじゃ?
っていうときにマージという仕組みを使う。今回は「とりあえずgitを操作できるようにする」のが目標なのでいったん省略。
ローカルにコードがある(or これからコードを書く)ので、該当箇所をgit管理したい場合
(1) リポジトリ作成
まずhttps://github.com/ など使う場合はそちらにログインし、新規にリポジトリを作る。
(2) git管理したい場所に移動
コードを置いてる場所に移動する
cd [git管理したい任意のディレクトリ]
たとえば...
Cドライブ
└ project
└ hoge_project
└ 99_src
└ HelloWorld
└ index.html
└ css
└ ...
HelloWorldディレクトリ以降をgitにあげたい場合は、このようになる
cd C:\project\hoge_project\99_src
指定したディレクトリの配下がgit管理されることになる。次の初期化をすることで、これがローカルリポジトリになる。
(3) 初期化
以下のように実行すると、ディレクトリ配下が空の場合、ローカルにリポジトリを作成して初期化される。
空でない場合、配置してるファイル達がローカルのリポジトリに変換される。
git init
(4) add & commit する
もし、まだなにもファイルが無い場合は、適当にREADMEという名前の空ファイルを作成しておくこと
addするとローカルリポジトリのインデックスに登録する
git add [ローカルリポジトリに追加したいファイル]
もしすべてのファイルをaddしたいときはこう
git add .
次にインデックスの内容をローカルリポジトリにコミットする
git commit -m "コミットログ"
(5) ローカルリポジトリとリモートリポジトリを紐づける
以上でローカルリポジトリは最新化した。次に、これをリモートのリポジトリにpushする。ローカルだけでgit管理してても意味ないからね。
以下のコマンドでローカルリポジトリとリモートリポジトリを紐づける。
git remote add origin https://~/[さっき作成したリモートリポジトリ.git]
またはこう↓ SSH接続できてるならこのコマンドでOK。
git remote add origin git@github.com:[さっき作成したリポジトリ名].git
※git@~の部分は、githubやgitlabなど使ってるサービスによって異なるので、各サービスの「clone」ボタンからコマンドを確認しよう
(6) リモートリポジトリにpushする
git push origin master
開発中に何度か使うコマンド
やれやれこれでめでたくgit管理できるようになった。
では開発を進めていくわけだけど、だいたい
(1)ファイル編集
(2)git add
(3)git commit
(4)git push
という流れで、キリのよいタイミングで定期的にgitにpushするとよい。
上記でも登場した branch -a
add
commit
といったコマンドは開発中何度も使うことになる。
いまいるローカルブランチと、他のブランチ一覧を確認
間違えて意図しないブランチに書き込まないように、事前に今いるブランチを確認する癖をつけよう。
ローカルブランチを確認する
git branch
リモートブランチを確認する
git branch -r
上記2つを一度に行う
git branch -a
ローカルブランチを切り替える
git checkout [branch名]
↓開発用ローカルブランチを新規作成&ブランチ切り替えするときはこれ
git checkout -b [branch名]
ファイルを編集し...
ファイルの編集内容を確定(commit前に何度してもいい)
git add .
確定したファイルをコミット(push前に何度してもいい)
add済みのファイルをcommitする
git commit "コミットログ"
または
git commit
するとviが開くので、そこにコミットログ記入
プッシュ
commit済みのファイルをpushする
git pull origin [ブランチ名]
これで編集したファイルをリモートリポジトリにあげられた。
開発中はこの繰り返し。
複数人で同じリポジトリを操作する場合は、マージやらフェッチやら他にも操作が必要になるけど、まず基本的はことは以上となる。
その他便利なコマンド
開発途中で、ローカルのブランチにリモートの内容を取り入れたい
編集中のファイルをすべてcommitしたあとに、
git pull origin [取得したい任意のリモートブランチ名]
編集をすべて取り消す
git checkout .
編集を特定ファイルのみ取り消す
git checkout [ファイルパス]
編集したファイルがあるかどうか確認する
addしてないファイルは赤字、addしたけどcommitしてないファイルは緑字でリスト表示される
すべてcommit済みの場合は何も表示されない
git status
差分をすべて確認する
git diff
差分を特定ファイルのみ確認する
git diff [ファイルパス]
直前のコミットを取り消す(ローカルブランチの編修内容はそのまま)
git reset --soft HEAD^
困ったとき、コミットログ(履歴)など調べる
git log
ローカルブランチ削除(マージしたかどうか問わず消す)
git branch -D [ブランチ名]
注意事項
- pushは同じブランチ名に対してしかできない
- pullはどのブランチに対してもできる