*目次 [#mfa3ae2d] #contents *初期設定 [#pbe1610d] **名前、メールアドレスの設定 [#a89c9a46] $ git config --global user.name = "src" $ git config --global user.email = "src@xxx.yyy" 次のコマンドでちゃんと設定できたか確認できる git var GIT_COMMITTER_IDENT git var GIT_AUTHOR_IDENT UNIX系OSの場合、~/.gitconfigファイルに設定が保存される。 *リポジトリの初期化 [#m6213818] フォルダに移動しgit initを実行するだけ。 mkdir myproduct cd myproduct git init *ファイルを追加 [#lf924da4] **現在のフォルダ以下のファイルをすべて追加 [#aeb24cd4] git add . **指定ファイルを追加 [#lfc39bca] git add sample.txt **バージョン管理しているファイルをすべて追加 [#c0e50c6b] git add -u **バージョン管理しているファイル&新規ファイル [#w6d3a1ed] git add -A **.gitignore [#f5017f59] バージョン管理から除外したいファイルはリポジトリのルートディレクトリに.gitignoreファイルを作成する *~ *コミット [#p2bef697] **ログを直接指定 [#l3e007c9] "-m"オプションでログを直接記録できる git commit -m "sample.txt added" **エディタでログを指定 [#a93c4c18] "-m"オプションを使わない場合エディタが立ち上がる。 -1行目: 変更内容の要約 -2行目: 空行 -3行目以降: 変更した理由の説明。 **一括コミットしたい場合 [#qacd5209] git commit -a **変更点を確認しつつコミットログを書く [#z0e37053] git commit -v **特定ファイルだけcommit [#te23105b] git commit sample.txt **特定ファイルの変更記録要求を取り消す [#c1f99bd0] git reset sample.txt *変更点の確認 [#c7eb3f28] **変更記録をリクエストしてない変更点の表示 [#sce4c205] git diff git diffコマンドはgitに変更点を記録したいとリクエストしてない変更点を出力するので変更されたファイルをgit addすると表示されなくなる。 ** commitしていない変更点を表示 [#z6f4e958] git diff HEAD ** 部分変更をインデックスに記録した場合の変更点の表示 [#nb7d3c35] git diff --cached *状態の記録をリクエスト [#gbf0a90b] git addコマンドを使って状態の記録をリクエスト(=インデックスに記録)することができる。 ** 個別にファイルを指定 [#r2db820b] git add sample.txt ** バージョン管理しているすべてのファイル [#i92921ca] git add -u **部分変更 [#s834dcd3] 変更点が2箇所以上ある場合、変更箇所を確認しながらaddする箇所を選定できる。 git add -p *状態の確認 [#x0c4ca35] git status *履歴の表示 [#y1aa28b1] **ログを表示する [#jed601a1] git log --pretty=short **パスで検索する [#f35d1cf7] git log --pretty=short sample.txt **ログメッセージをgrep検索する [#e1800f9d] git log --pretty=short grep='xxx' *変更を取り消す [#s76f8da5] ** 過去のコミットを取り消す [#sf9cc8a5] git revert xxxxx **ワークツリーの変更を取り消す [#o9f355b5] インデックスに記録されている状態に戻す git checkout sample.txt 最新のコミットの状態に戻す git checkout HEAD sample.txt **コミットをなかったことにする [#s2218b0d] git reset HEAD^を使う。部分コミットしたい場合に間違えたときなどに使う。 git commit -a # 間違えたコミット git reset HEAD^ #現在のヘッドの一つ前に戻る。 ワークツリーの内容も戻す場合 git reset --hard HEAD^ **コミットをやり直す [#ecabf10c] ログメッセージを記録し直したい場合に使う。git reset HEAD^→ git commitのような感じ。 git commit --amend **二つ以上前のコミットを書き換える [#gb093cb9] HEADから3つ前のコミットを書き換える場合。 git rebase -i HEAD-3 実行するとエディタで指示票の編集画面が表示されるので、pick→editに書き換え保存する。 pick xxxxxx あれをこうした pick yyyyyyy それをあれした pick zzzzzz それからこうなった。 最初の行のコミットを書き換える場合 edit xxxxxx あれをこうした pick yyyyyyy それをあれした pick zzzzzz それからこうなった。 コミットを修正。 git commit --amend 続く混みとを反映する git rebase --continue *バックアップリポジトリを作成する [#q3019b1b] **空リポジトリの作成 [#g2ec6cc1] /home/repository/sample.gitディレクトリに空のリポジトリを作成する。 $ mkdir -p /home/repository/sample.git $ cd /home/repository/sample.git $ git --bare init **オリジナルワークツリーの内容をpush [#dace9143] $ cd <ワークツリー> $ git push /home/repository/sample.git master **バックアップリポジトリからcloneして使う [#bd255ac7] $ git clone /home/repository/sample.git sample.new **cloneしたワークツリーの内容をpush [#o01979f4] ざっくり書くと 「git push <反映先> <反映もと>」となる。 $ git push (git push origin masterと同じ) *共同開発 [#s2406e8e] **マージ [#zb9cb859] git pullとgit pushを駆使する。この辺はCSV、Subversionと同じような感じか。 **共用リポジトリ [#bfd14fee] -プロジェクトのグループメンバーは1つのUNIXグループに属するようにする。 -git init --sharedオプションでリポジトリを作る。 -umask 002とか007を使って、グループのメンバーが書き込めるようにする #pre{{ umask 002 mkdir -p /home/repository/bigproject.git cd /home/repository/bigproject.git git --bare init --shared }}