gitの資料 - morivden/GMVProject GitHub Wiki

gitの資料

git : バージョン管理ステム
git-scm.com

1 : 作業ディレクトリ
2 : ステージングエリア(インデックス)
3 : リポジトリ(ローカルリポジトリ、リモートリポジトリ)

gitの設定

必須設定

git config --global user.name "名前"
git config --global user.email "メールアドレス"

メッセージを色分け

git config --global color.ui true

設定の一覧

git config -l

ヘルプの見方

git config --help
git help config

コミット

作業用のディレクトリを作成

mkdir ディレクトリ名

gitで使えるようにする(必須)

git init

ステージングエリアにファイルを上げる

git add ファイル名

ステージングエリアからリポジトリに上げる

git commit
コメントやメッセージを入れる(変更点、修正点などわかるように)

履歴を表示

git log

gitのログを見る

  • コミットにつく一意のID
  • コミットした人
  • コミットした日時
  • コミットメッセージ

コンパクトに

git log --oneline
IDとコミットメッセージのみ表示される

変更された場所を見たい

git log -p

どのファイルが何箇所変わったか

git log --stat

現在の状態を把握

現在の状態を確認

git status

変更内容が間違っていたから元に戻す

git checkout -- ファイル名

差分を確認

どこがどう変更されたのか知りたい

git diff

今さっき変更してまだステージングエリアに上がっていないものに使う

git add ファイル名git status

ステージングエリアに上がった場合

git diff --cached

gitでのファイル操作

git addの便利な使い方

git add ファイル名

現在のディレクトリ内のファイルを一気にステージングエリアに上げる

git add .

ステージングエリアに上げたりコミットしたものを削除、移動する

git rm ファイル名
git mv ファイル名

git管理に含めない

バージョン管理する必要がないファイル

.gitignoreを作成
例 : *.log
拡張子が.logのファイルを無視

.gitignoreのある階層のディレクトリとサブディレクトリ適用される

直前のコミットを変更

エディタを立ち上げずにすぐにコミット

git commit -m "メッセージ"

直前のコミットを変更したい

git commit --amend
git logを見ると直前のコミットが変更される

過去のバージョンに戻る

git add .
したが、変更を戻して過去のバージョンに戻したい

現在の作業ディレクトリもステージングエリアも戻したい場合

git reset --hard HEAD

  • HEAD : 直前
  • HEAD^ : 直前のさらに1つ前

さらに前のバージョンに戻したい

git reset --hard HEAD^

HEADの代わりにコミットIDを指定してもよい(最低7桁)

過去のバージョンに戻る

直前のバージョンに戻す→やはり元のバージョンに戻したい

git reset --hard ORIG_HEAD

ORIG_HEADに前回取り消されたHEADの情報が1つだけ入っている

ブランチを使う

別々のバージョンを並行して開発したい場合に便利
git branch

新しいブランチを作成

git branch ブランチ

今いるブランチに*が付く

別のブランチに移動

git checkout ブランチ

別のブランチに移ってgit logをすると
先ほどのコミットログは表示されない

ブランチをマージ

対象となるブランチに別のブランチを反映させる

git merge マージさせたい先のブランチ

現在いるブランチ : A
マージさせたいブランチ : B
git merge B
AのブランチにBのブランチの内容が反映される

ブランチを削除

git branch -d ブランチ

マージの衝突(コンフリクト)の解決

別のブランチを作成

ブランチを作ってチェックアウト

git checkout -b ブランチ

別ブランチとマスターブランチでそれぞれ同じ部分を編集
git merge ブランチ
別々のブランチで同じ部分を編集してコミットしたため、
マージの際にコンフリクトが発生する

マージの衝突(コンフリクト)の解決

<<<<<<<<< HEAD

=============

>>>>>>>>> ブランチ

で囲まれた部分でコンフリクトが発生している
どちらかに修正してコミットしなおす

タグを使う

コミットIDに対して名前を付ける

git tag タグ

中身を見る

git show タグ

git tag タグ コミットID

タグの消し方

git tag -d タグ

エイリアスを使う

git config --global alias.エイリアス 元のコマンド

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

git configの内容の確認

git config -l

共有リポジトリ

ourweb.git

A myweb

B myweb2

共有リポジトリを作成

git init --bare

共有リポジトリにpush

Aさんの作業

共有リポジトリを登録

git remote add origin リポジトリの場所

リポジトリの削除

git remote rm リポジトリ

リポジトリにpush

git push origin master

リポジトリの内容を共有

Bさんの作業
git clone リポジトリのURL clone先のディレクトリ

ファイルを編集してコミット → リポジトリにpush
git push origin master

Aさんの作業
変更を確認 現在のリポジトリの内容を引っ張ってくる
git pull origin master

共有時のトラブルを解決

Bさん
ファイルを編集

line 1
line 2
line 3

git push origin master

Aさん
ファイルを編集

line 1
line 2
line third

addとcommitを同時に行う

git commit -am "コメント"

git push origin master
しようとするとエラーが発生する
git pull origin master
コンフリクトの発生

コンフリクト箇所の修正

修正後にコミット→リポジトリにpush

エラーメッセージの通りに行う

おまけ

Githubでリポジトリ作ってローカルとひもづけ
Githubでリポジトリ作成
ローカルに適当にディレクトリ作成

URLの場合

git init
git add コミットしたいファイル
git commit -m "コメント
git remote add origin Githubで作ったリポジトリのURL
例:ttps://github.com/user/repository
git push -u origin master

ssh-keyの場合

git init
git add コミットしたいファイル
git commit -m "コメント"
git remote add origin [email protected]:Githubで作ったリポジトリのURL.git
例:[email protected]:user/repository.git
git push -u prigin master