« 「#!」の名前は「shebang」 | メイン | できるだけ簡単にMacでローカルにGyazoサーバを立てる方法 »

「入門git」を読んだ

「あなたが読んだ『入門git』は銀色のgit本ですか? それとも小豆色のGit本ですか?」
「銀色のgit本です」
というわけで、頭文字が小文字の方の『入門git』を読みました。
大文字の方の『入門Git』と発売日が一ヶ月ちょっとしか違わないので、『入門ギット買った』とつぶやかれてもどちらの本か判断つかない状況ですね。
聞いた話によると、大きい方のGit本のほうが高度な内容らしいので、一番最初に手を出すのなら小さいgit本が良いかもしれません。
大きいGit本はまだ持っていませんが、周辺の評判も良いので近々購入予定です。

CVSやSVN等の集中型のバージョン管理システム(VCS)を使っていた人達だけでなく、これまでバージョン管理システムそのものを使った事がない人にもお勧めできる内容です。
大変わかりやすく、大変読みやすく仕上がっていました。
初版の1刷にも関わらず誤植も見当たらず(少なくとも私は気付きませんでした)、非常に丁寧に作られた印象を持ちました。
自分用メモ
小さいgit本を読んで知ったgitコマンドに、自分で調べたgitコマンドの使い方を統合したメモ。
小さいgit本の第5章までに対応している。
第6章以降のコマンドもまとめたかったのだけど、それぞれのコマンドの説明が長くなり過ぎて、メモのフォーマットにあわなくなってきていたのでここで一旦中断した。
機会があれば、残りのコマンドもまとめてみたいと思う。
(このメモだけ見てもgitの本質は理解できないので注意。)
[]は任意

ページャにlvを使っている場合、色分けがされない事がある。この場合、「lv -c」を環境変数等に設定する。

環境変数

GIT_PAGER
GIT_EDITOR

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

git help [コマンド名]                           ヘルプ
git [コマンド名] --help                         ヘルプ
git help -a                                     全コマンド一覧

git init                                        カレントディレクトリにリポジトリを作成する

git config --global user.name "[ユーザ名]"                      ユーザ名設定する
git config --global user.email "[メールアドレス]"                   メールアドレス設定する
git config --global user.editor "[エディタ]"                        エディタ設定する
git config --global color.ui "auto"                             表示色分けする
git config --global i18n.commitencoding "[文字コード]"          コミットログの文字コードを設定する
git config --global i18n.logoutputencoding "[文字コード]"       ログ表示時の文字コードを設定する
git config --global alias.[ショートカット] "[サブコマンド]"     サブコマンドにショートカットを設定する
git config --global merge.tool "[マージツール]"                 git mergetool実行時に起動するマージツールを設定する

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

git log                                         ログを全て表示する
git log -[出力するコミット数]                       コミット数を指定してログを表示する
git log --pretty=oneline                        1コミット1行でログを表示する
git log --pretty=format:"[フォーマット指定]"        指定されたフォーマットでログを表示する
git log --since "[時間]"                        指定した時間内のログを表示する
git log --after "[時間]"                        指定した時間内のログを表示する
git log --until "[時間]"                        指定した時間以前のログを表示する
git log --before "[時間]"                       指定した時間以前のログを表示する
git log [コミット名]                                最初から指定されたコミットを含む範囲のログを表示する
git log [コミット名]..                          指定されたコミット直後から直近のコミットまでの範囲のログを表示する(末尾省略はHEAD指定と同義)
git log [開始コミット名]..[終了コミット名]          指定された開始コミット直後から終了コミットを含む範囲のログを表示する
git log HEAD -1                                 先頭のログを表示する
git log HEAD^ -1                                先頭からひとつ前のログを表示する
git log HEAD^^ -1                               先頭からふたつ前のログを表示する
git log HEAD~1 -1                               先頭からひとつ前のログを表示する
git log HEAD~2 -1                               先頭からふたつ前のログを表示する
git log HEAD~2^^ -1                             先頭からよっつ前のログを表示する
git log HEAD^^~2 -1                             先頭からよっつ前のログを表示する
git log HEAD~5..HEAD~1                          先頭からいつつ前からひとつ前までの範囲のログを表示する

フォーマット指定例 "%h %s"
時間指定は"1 seconds","2 minutes","3 hours","4 days"や"2009-09-01"等が可能。
コミット名の部分にはタグ名やHEADも使用可能な模様。
"^"や"~"による相対指定はコミット名やタグ名に対しても可能。

git status                              ステータスを表示する

git add [ファイル名]                        ステージする
git add -i                              対話モードでステージング等を選択する
git add -p                              パッチモードでステージング等を選択する

git tag                                 タグ一覧を表示する
git tag [タグ名]                        タグを付与つける
git tag [タグ名] [タグを打つ場所]           場所を指定してタグをつける

git commit                              ステージからリポジトリにコミットする
git commit -a                           作業ツリーからリポジトリに直接コミットする
git commit -v                           エディタでコミットメッセージを入力する際、差分を表示する
git commit -m "[コミットメッセージ]"        コミットメッセージを指定してコミットする

git mv "[元のパス]" "[新しいパス]"      ファイルやディレクトリを移動する(リネームにも使用可能)
git rm "[パス]"                         ファイルを削除する

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

git diff                                                                        作業ツリーとステージングエリアの差分を表示する
git diff HEAD                                                                   作業ツリーとリポジトリの差分を表示する
git diff --cached                                                               ステージングエリアとリポジトリの差分を表示する
git diff [コミット名やタグ名やブランチ名]                                           作業ツリーと指定された場所の差分を表示する
git diff [コミット名やタグ名やブランチ名] [コミット名やタグ名やブランチ名]              指定されたふたつの場所の差分を表示する
git diff --cached [コミット名やタグ名やブランチ名]                                  ステージングエリアと指定された場所の差分を表示する
git diff --stat [コミット名やタグ名やブランチ名]                                    作業ツリーと指定された場所の差分の統計を表示する
git diff --stat [コミット名やタグ名やブランチ名] [コミット名やタグ名やブランチ名]       指定されたふたつの場所の差分の統計を表示する


git checkout [ブランチ名]                                                       チェックアウトする
git checkout -b [新しいブランチ名]                                              現在のブランチからブランチを作成しチェックアウトする
git checkout -b [新しいブランチ名] [元にするコミット名やタグ名やブランチ名]         元にする場所を指定してブランチを作成しチェックアウトする
git checkout -f [ブランチ名]                                                        作業ツリーの状態を問わず、強制的にチェックアウトする
git checkout -f [ファイル名]                                                        作業ツリーの状態を問わず、強制的にチェックアウトする

git branch [新しいブランチ名]                                                       現在のブランチからブランチを作成する
git branch [新しいブランチ名] [元にするコミット名やタグ名やブランチ名]                  元にする場所を指定してブランチを作成する
git branch -m [新しいブランチ名]                                                    現在のブランチ名を変更する 既存のブランチ名を指定しても上書きされない
git branch -m [元にするブランチ名] [新しいブランチ名]                               ブランチを指定してブランチ名を変更する
git branch -M [新しいブランチ名]                                                    現在のブランチ名を強制的に変更する
git branch -d [ブランチ名]                                                      ブランチを削除する マージの済んでいないブランチは削除できない
git branch -D [ブランチ名]                                                      ブランチを強制的に削除する


git merge [ブランチ名]              指定されたブランチへの変更を現在のブランチへマージする マージはステージングエリアに反映される
git merge --squash [ブランチ名]     指定されたブランチへの変更をひとつのコミットにまとめて現在のブランチへマージする マージはステージングエリアに反映される

git cherry-pick [コミット名]            指定されたコミットを現在のブランチへマージしコミットする
git cherry-pick -n  [コミット名]        指定されたコミットを現在のブランチへマージしステージングエリアに反映する git commitが必要 -mをつけない場合、最後にcherry-pickしたコミットのメッセージが表示される

git mergetool                       マージでコンフリクトが発生した場合に、コンフリクトを解消するためにマージツールを起動する 環境変数のmerge.toolが登録されていない場合は、環境に沿ったツールを起動する

git rebase [ブランチ名]             指定されたブランチと現在のブランチの分岐点の位置を、指定されたブランチの先端に移動する

git archive --format=[出力形式] --prefix=[ディレクトリ名etc.] [タグ名] > [出力ファイル名]               ファイルを出力する(出力形式にはzip等)
git archive --format=[出力形式] --prefix=[ディレクトリ名etc.] [タグ名] | gzip > [圧縮ファイル名]        出力したファイルを圧縮して保存(出力形式にはtar等)

git clone [リモートリポジトリ]                          リモートリポジトリから複製する
git clone [リモートリポジトリ] [複製先ディレクトリ名]       リモートリポジトリから複製先を指定して複製する

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

対話モードでステージする
git add -i
1: [s]tatus             ステータスを表示
2: [u]pdate             ステージするファイルを選択する画面に遷移する
3: [r]evert             ステージングエリアから戻すファイルを選択する画面に遷移する
4: [a]dd untracked      新たにステージするファイルを選択する画面に遷移する
5: [p]atch              パッチモード ファイル内の変更(hunk)をするファイルを選択する画面に遷移する ファイルを選択した後にhunkを選択する画面に遷移する
6: [d]iff
7: [q]uit               対話モードを抜ける
8: [h]elp
ファイル選択では、選択されたファイルの横に*が表示される(選択時に数字の前に-をつけると取り消しが可能)
hunk選択では、hunkに対する処理を選択する
y:      変更を受け入れる
n:      変更を受け入れない
a:      以降のhunkを全て受け入れる
d:      以降のhunkを全て受け入れない
/:
e:
?:

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

.gitignore              gitが無視するファイルを定義するファイル(定義を共有する場合)
.git/info/exclude       gitが無視するファイルを定義するファイル(ローカルリポジトリ単位)

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Google

タグ クラウド