Git
GitHub

Gitの基本

Gitとは

ソースコード等、ファイルのバージョン管理を行うためのツール。
このようなツールを利用することで、複数人で並行して開発を進めることができ、
過去の修正履歴に戻すことも可能。
チームでの共同開発を行う場合には、バージョン管理ツールが必須。

Gitの構成

Gitがファイルの状態を保存する場所について整理。

  • ワーキングツリー(今作業しているファイルのある場所)
  • インデックス(コミットするためのファイルを登録する場所)
  • ローカルリポジトリ(リモートリポジトリに変更内容を送信するための場所)
  • リモートリポジトリ(複数人でファイルを共有するための場所)

バージョン管理の流れ

Gitでのバージョン管理は基本的に以下のような流れになる。

  • ローカルリポジトリの作成(git init)
  • 変更ファイルをインデックスにあげる(git add)
  • 変更履歴を保存する(git commit)
例:
-- sampleフォルダを作成し、そこでGitを使用する。
-- フォルダ作成、ファイル作成、ファイルに追記を行う。
> mkdir sample
> cd sample
> touch aaaa.html

-- ローカルリポジトリの作成する。
> git init

-- 変更ファイルをインデックスにあげる
(ドットをつけることで全ての変更ファイルが対象になる)
> git add .

-- 変更履歴を保存する(コメントもつける)
> git commit -m "aaaaを作成"

Gitコマンド一覧

git init
Gitでのバージョン管理を開始する

git add .
変更したファイルをインデックスにあげる

git reset HEAD config/database.yml
特定のファイルのインデックスへの追加を取り消す

git commit -m "message"
変更履歴を保存

git log
コミットの履歴を確認
オプション指定"git log --oneline" により一行表示も可能

git stash
変更内容を一時的に退避(コミットする前の変更内容)

git stash pop
退避した変更を復元する

git push origin remoteurl_
変更したファイルをリモートリポジトリに反映

git push -f origin remoteurl_
リモートリポジトリの状態を無視して強制プッシュ

git branch
ブランチの確認

git checkout branchname_
ブランチの切り替え

git checkout -b newbranch_name_
ブランチを新規作成して切り替えまでを一気にやる

git branch -m newbranch_name_
ブランチ名の変更

git checkout HEAD^
過去のコミットの状態にファイルを戻す(1つ前に戻す)

git checkout HEAD^^^
過去のコミットの状態にファイルを戻す(3つ前に戻す)

git clone githuburl_
リポジトリをクローンする

git diff HEAD^
前回のコミットとの変更点の差分を確認する

git diff HEAD^^
2つ前のコミットとの変更点の差分を確認する

git fetch
リモートリポジトリの変更内容をローカルリポジトリに反映させる(リモートリポジトリにあるブランチがローカルリポジトリに反映される)

git branch -a
リモートリポジトリのブランチを確認する

git branch --delete branchname_
HEADにマージしたローカルリポジトリのブランチを消す

git branch -D branchname_
マージの有無にかかわらずローカルリポジトリのブランチを消す

git rebase -i HEAD^^^
過去のコミット3つ分をまとめる(コミットメッセージの変更もできる)

git checkout .
ローカルの変更内容を取り消す(新規追加したファイルは削除されない)