僕はオツムが弱いので基本的なことだけどメモしておく。
Gitの概念
とりあえず三つある
1, 作業ディレクトリ
2, インデックス
3, リポジトリ(ローカル、リモート)
この三つの場所で色々やる。最終的にはリポジトリ内にファイルを保存することになる。
コマンド
設定
git config -l |
---|
gitの設定を確認 |
git config --global ****** |
---|
gitの設定 ex) user.name, user.email, color.ui |
git config --global alias.略語 [command] |
---|
gitコマンドのエイリアスを設定する。 ex) git config --global alias.m merge |
git config --help |
---|
git設定のhelpを表示 |
ファイル操作
git init |
---|
今いる作業dirでgit使うよーっていう宣言 |
git add [file] |
---|
作業dir内の[file]をインデックスに追加。[file]を.(ピリオド)にすればカレントdir内全部のファイルを指定することになる |
*addしたくないファイル(.logファイル等)を指定するには、vim .gitignore でignore用のファイルを作成・展開し、その中で無視したいファイル名を指定する |
git commit |
---|
インデックス内のファイルをローカルリポジトリにコミット。 |
option -a: 変更されたファイルを自動的に感知し、addからコミットまで全部やってくれる。 -m: メッセージを指定してコミットできる。-mなしだとvimが立ち上がって書く事になる。 --amend: 直前のコミットを変更する。コミットログを無駄に増やしたくない時等に使える。 |
git log |
---|
コミット履歴(コミットID,製作者,日付,メッセージ)を表示 |
option --oneline: 簡易的な履歴(ID上7桁,メッセージ)を表示。 --stat: どのファイルが何箇所変更したかも表示。 -p: 変更された箇所も表示。 |
git status |
---|
変更されたファイルの一覧表示 |
option -s: 説明文を非表示。 -d: 説明文を非表示。ブランチ名は表示。 |
git checkout -- [file] |
---|
作業dir内では変更したが、まだインデックスには保存していない[file]を変更前に戻す |
git diff |
---|
作業dir内とインデックス内の違いを表示 |
option --cached: インデックス内とローカルリポジトリ内の違いを表示。 |
git rm/mv [file] |
---|
普通にrm,mvしちゃうとgitが混乱するから、一度git initした作業dir内ではこのコマンドを使ってファイル操作しなければならない |
git reset [target] [version] |
---|
[target]を部分を[version]まで戻す |
[target] --soft: ローカルリポジトリ内のみ。 (no option): ローカルリポジトリ内とインデックス内。 --hard: 全部(LocalRepoもIndexもWorkingDirも) |
[version] ID: コミットIDで指定。最低上7桁を含む。 HEAD: 直前のコミット内容を指定。 HEAD^: HEADの更に一つ前。 ORIG_HEAD: 直前にresetしたコミットを指定。間違えてresetした時等に利用。 |
git tag [tag] [commitID] |
---|
[commitID]で指定したコミットに[tag]を付けることが出来る。 IDを指定しなかった場合、直近のコミット(HEAD)を指定することになる |
git tag |
---|
タグの一覧を表示する |
option -d [tag]: [tag]を削除する |
git show [tag] |
---|
[tag]コミットの詳細を表示する。[tag]はIDでも可 |
ブランチ
git branch |
---|
今あるブランチを確認(デフォルトでmaster) |
git branch [branch] |
---|
[branch]を作成 |
option -d: [branch]を削除。 |
git checkout [branch] |
---|
[branch]へ移動 |
optional -b [branch]: [branch]を作成し、移動。 |
git merge [branch] |
---|
[branch]をカレントブランチへmerge(混ぜる) |
共有リポジトリ
共有リポジトリを作る時はディレクトリ名の最後に.gitを付けるのが鉄則。
git init --bare |
---|
共有リポジトリのgit宣言をする時はoptionとして--bareを付ける |
git remote |
---|
別のリポジトリを操作する際に使用するコマンド オプションとして-vを付けるとリモートリポジトリの詳細を表示する |
git remote add [repository] [position] |
---|
リモートリポジトリ[repository]を生成する。[position]で指定したディレクトリを参照する。URL([position])さえ覚えておけばやる必要は無いが、普通やる ex) git remote add origin https://github.com/hogehoge/gitTest.git |
*リポジトリのURLを間違えたりすると設定したremoteを取り消したくなる。 git remote -v: 設定したリモートを確認 git remote rm [repository]: 指定したremote設定を削除 で取り消すことができる。 |
git remote rm [repository] |
---|
リモートリポジトリ[repository]を削除する |
git push [repository] master |
---|
リモートリポジトリ[repository]にローカルリポジトリの内容をプッシュする。ローカルのmasterブランチをリモートのmasterブランチに反映させている |
git clone [remoteRepository] [workingDir] |
---|
[remoteRepository]の中身を新たな作業dir[workingDir]として複製する。 リモートリポジトリへのリンクもそのまま引き継ぐ ex) git clone ~/origDir/ cloneDir |
git fetch |
---|
リモートリポジトリの内容をリモート追跡ブランチにコピーする |
git pull [remoteRepository] master |
---|
[remoteRepository]のブランチmasterからプル(プッシュの逆)。fetchとmergeを組み合わせた様なもの |
git fetch git merge origin/master と同じ |
注意点
mergeやpushをする時は他の人が同箇所を変更している等で、conflictがよく発生する。
pull, fetch, rebaseを使ってなんとかしよう。
参考URL
・サルでも分かるgit入門:
http://www.backlog.jp/git-guide/
・git pullの解説:
http://kray.jp/blog/git-pull-rebase/
・pushがrejectされた時の対処:
https://www.softel.co.jp/blogs/tech/archives/3569
・push, origin, masterとはなんぞや:
http://dqn.sakusakutto.jp/2011/10/git_push_origin_master.html