Git

git入門編~コマンドをまとめてみた

More than 1 year has passed since last update.

使用頻度の高いコマンドの意味と使い方をまとめました

gitとは

  • バージョン管理システム

大まかな流れ

  1. 作業ディレクトリで作業
  2. ステージングエリア(インデックス)にadd
  3. ローカルリポジトリにcommit
  4. リモートリポジトリにpush

git初期設定

command
$ git config --global user.name "xxxx"
$ git config --global user.email "xxxx"
$ git config --global color.ui true
$ git config -l          // 設定が見れる
$ git config --help  // help画面 

gitを使用

作業するフォルダに「git init」でgitが使えるようになる

command
$ mkdir myweb
$ cd myweb
$ git init

作業フロー

・作業ディレクトリで作業する
index.htmlを作って、適当にコードを書く

command
$ touch index.html

・ステージングエリア(インデックス)にadd

command
$ git add index.html

・ローカルリポジトリにcommit
※メッセージを必ず書く

command
$ git commit -m 'first commit'

・リモートリポジトリにpush

command
$ git push origin master

コミット履歴 log

command
$ git log

以下のcommit履歴が見れる

  • commitのid(ユニークキー)
  • commitした人
  • commitした日
  • commitメッセージ

コミット履歴のオプション

・commit idの上位7ケタとメッセージを表示

command
$ git log --oneline

・変更箇所を表示

command
$ git log -p

・変更ファイルを表示

command
$ git log --stat

現在の状態を把握 status

ファイルを追加したのか修正したのか削除したのかなどのファイルの状態がわかる

command
$ git status

その次の手順

  • ステージングにaddする
  • 保存を取り消す
command
$ git add index.html             // ステージングにadd
$ git checkout -- index.html     // ファイル保存を取り消す(元に戻る)

差分を確認 diff

作業ディレクトリのファイルとステージングの差分を確認

command
$ git diff

ステージングとコミットの差分を確認

command
$ git diff --cached

ステージングに全ファイルをあげる add

作業ディレクトリからステージングに全てのファイルを上げる

command
$ git add .

git上で削除、移動

git管理下でコマンド削除、移動を行う

command
$ git rm index.html
$ git mv index.html

git管理に含めない場合

ファイル作成
.gitignore

「.gitignore」ファイルに「*.log」と書くと全てのlogファイルはgit管理から外れる
管理から外れると「git status」「git add」と打ってもlogファイルは表示されない
※「.gitignore」ファイルはファイルがある同階層、またはその下位階層が対象となる

コミットとメッセージを同時に行う

commandでメッセージを書きたいとき
※「git commit」のみの場合、メッセージを打つためのファイルが開く

command
$ git commit -m 'メッセージ'

前回のメッセージでコミット

直前のcommitを少し修正してメッセージを残すまででもないとき
メッセージは前回のものでコミットだけ実行される

command
$ git add .
$ git commit --amend

過去のcommitに戻る reset

・作業ディレクトリをステージングに上げた(add)状態で、直前の状態(commitしたもの)に戻したいとき

command
$ git reset --hard HEAD

・直前の前の状態(2つ前)に戻したいとき

command
$ git reset --hard HEAD^

・コミットIDを指定して戻す場合
「git log」で表示されるコミットIDを指定するとそのバージョンまで戻る

command
$ git reset --hard (commit id)

・過去のバージョンにリセットしたがそれを取り消したいとき(バージョンがリセット前に戻る)

command
$ git reset --hard ORIG_HEAD

resetについての参考サイト

新しい作業場を作る branch

リポジトリから作業用のスペースを作ること
branchは複数作れるので作業ごとにbranchを追加する
後にリポジトリにpush、mergeする

・branchの一覧を見る(最初は「master」しかない)
「*」が付いてるbranchが現状のbranch

command
$ git branch

・新しくbranchを作る

command
$ git branch hoge

・branchを切り替える

command
$ git checkout hoge     // branchをhogeに変更

・branchを削除する

command
$ git branch -d hoge

・branchを作って且つ、branchをそれに切り替える

command
$ git checkout -b hoge

branchとbranchを取り込む marge

・指定のbranchをmargeする
(このときbranchはマージ元に切り替える)
例:branchはmasterに切り替えた状態で、下記のコマンドで「master」に「hoge」のデータがmargeされる

command
$ git checkout master
$ git merge hoge  

margeしたら衝突 conflict

コンフリクトはマージしたときに起きる

command
$ git checkout master
$ git marge hoge

branch「hoge」を「master」にmargeしたきconflict(衝突)発生

・コンフリクト解消法
「<<<<<<<」〜「>>>>>>>」までの箇所が衝突箇所
「HEAD」が大元のbranch(この場合はmaster)
「hoge」は取り組んだbranch(この場合はhoge)

source
<<<<<<< HEAD
masterのコード
=======
hogeのコード
>>>>>>> hoge

どのコードを採用するかを選んでcommitする

commitのidに名前を付ける tag

commmitのid(ユニーク)は長く管理しづらいので、タグ名で管理できる

・直前のタグに名前をつけるとき 

command
$ git tag (tag name)

・tagの一覧がみれる

command
$ git tag

・直前の変更内容を確認

command
$ git show

・指定したタグの変更内容を確認

command
$ git show (tag name)

・指定したcommitのidにタグ名をつける

command
$ git tag (tag name) (commit id)

・指定したタグを削除

command
$ git tag -d (tag name)

コマンドを任意の文字に変更 alias

よく使うコマンドを短縮させたいときに登録

command
$ git config --global alias.co checkout
$ git config --global alias.st status
$ git config --global alias.br branch
$ git config --global alias.ci commit

・上記の登録でコマンド実行

command
$ git co
$ git st
$ git br
$ git ci

・登録したエイリアスを確認

command
$ git config -l

ローカルで共有リポジトリを作る

command
$ mkdir hoge.git
$ cd hoge.git/
$ git init --bare

※「--bare」は共有リポジトリを表すもの
管理するだけでコミットができない

・作業ブランチから共有リポジトリ先を指定する

command
$ git remote add origin ~/hoge.git

・共有リポジトリのURLを変えたいとき

command
git remote set-url origin ~/xxx/hoge.git

・remote originを確認

command
$ git config -l

・共有リポジトリを削除

command
$ git remote rm origin

共有リポジトリを操作するpush、clone、pull

・共有リポジトリにpush

command
$ git push origin master

・cloneでデータを取得

command
$ git clone ~/hoge.git/hogehoge

・共有リポジトリのデータを取り込む pull

command
$ git pull origin master

変更を一時的に退避 stash

作業途中で急遽別の案件を差し込まれたとき、作業途中のものを避けて新しくブランチを作る
その作業途中のものを管理するときに使う

・commit前のファイルを退避

command
$ git stash

・stashするものにメッセージをつける

command
$ git stash save 'xxx機能の途中まで'

・退避しているファイルを確認

command
$ git stash list

・最新のstashを取り込む(そのstashは削除される)

command
$ git stash pop

・N番目のstashを取り込む(そのstashは削除される)

command
$ git stash pop stash@{N}

・最新のstashを削除

command
git stash drop

・N番目のstashを削除

command
$ git stash drop stash@{N}

参考サイト