Gitの基礎用語
ヘッド【HEAD】
・今いるブランチの最新のコミットを指す
・「HEAD^」、「HEAD~」は直前のコミットを意味する
・「HEAD~{n}」は「n個前」のコミットを意味する
ワーキングツリー【Working Tree】
・今ローカルで作業している、コミットする前の状態
インデックス【index】or ステージング【Staging】
・addして追加した状態のことを指す、コミットする前の状態
ローカルリポジトリ【Local Repository】
・ファイルの変更履歴を記録(手元で管理)
リモートリポジトリ【Remote Repository】
・ファイルの変更履歴を記録(全員で共有)
Gitの操作
git logとは?
・コミット履歴を確認することができる
git log オプション
・「–oneline」オプションは各コミットを1行で出力する
・「–graph」オプションはブランチやマージの歴史を、log出力と共にグラフで表示する
・「–stat」でコミット済みのコミットの内容を確認することができる
$ git log --oneline --graph
git statusとは?
全体の変更点を確認する
・修正したファイル、ステージングにあるファイルなどを確認することができます
$ git status
git diffとは?
変更点の確認ができる。
・ 修正したファイルの詳細を確認できる
・ ファイル名を指定する事でそのファイルのみの詳細を確認できる
$ git diff
git addとは?
ファイルやディレクトリをステージングに追加
・ステージングに追加 = Git管理の対象に入れる
$ git add ファイル名
git commitとは?
追加・変更したファイルをローカルリポジトリへ反映する
・「-m」オプションはコミットする際にコメントを記述することができます
・「-a」オプションでaddに追加してそのままコミットができます
$ git commit -m 'コミットメッセージ'
git configとは?
gitの設定をオプションを付けることで変更、確認する事ができる
・「–global」、「–local」、「–system」オプションは範囲を指定する事ができる。
- system:システム全体の設定
- global:該当ユーザーの全リポジトリの設定
- local:該当のリポジトリのみ設定
・「–list」オプションは設定内容を確認できる。
$ git config --local(適用する範囲) user.name '変更名'
$ git config --global(適用する範囲) user.email メールアドレス
$ git config --local(適用する範囲) --list
git branchとは?
ブランチの一覧を表示と現在のブランチを確認できる
・「-a」オプションはリモートのブランチも表示できます
・「-D」オプションは強制削除
・「-d」オプションは削除(マージしていないブランチなどは注意されます)
・「-vv」オプションはローカルのブランチがどのリモートブランチを追跡しているか確認ができる
$ git branch オプション
git chceckoutとは?
指定したブランチに切り替えることができます
$ git branch ブランチ名
・「-b」オプションは新しくブランチを作成してかつ作成したブランチに移動する
・リモートのブランチを指定して切り替える事もできる
$ git checkout -b 新しいブランチ名 リモート名/ブランチ名
・ブランチ名にコミットIDを指定する事ができる
・「-u」オプションはリモートブランチを追跡できる
修正したファイルをリセットすることもできます
$ git checkout ファイル名 or .(すべてリセット)
git pull とは?
リモートリポジトリのブランチをローカルブランチへダウンロードするイメージです
・「pull」は「fetch」と「meger」を一つのコマンドだけで行なっています
$ git pull ローカルブランチ リモート名 リモートブランチ
git fetchとは?
リモートリポジトリの新しいデータをローカルリポジトリに取り込む。
・「-p」オプションはリモートで削除されているリモートブランチをローカルリポジトリに反映できます
$ git fetch リモート名
git push とは?
リモートリポジトリにローカルリポジトリの変更内容を反映できます
・「-f」オプションは間違えた内容をpushしてしまった際にgit reset してから add、commit、push -f で上書きすることができます
$ git push -f リモート名 ブランチ名
「–delete」オプションでリモートのブランチを削除できます
$ git push --delete リモート名 ブランチ名
git merge とは?
ブランチとブランチを結合する事ができます
・「–squash」オプションで分岐したブランチのコミットを1つにまとめてマージする事ができる
・「–no-ff」オプションでマージコミットを残す事ができます
$ git merge --no-ff ブランチ名
git reflog とは?
HEADの変遷を確認できる
$ git reflog
「reflog」と「reset」でHEADを巻き戻すこともできます
・「reflog」で内容を確認「reset」でリセットをする
$ git reflog
$ git reset HEAD@{数字} --hard
git reset とは?
状態を取り消し、巻き戻すことができる
1.「–hard」はファイルの状態、add、commit全ての状態を戻す
2.「–mixed」はcommitとaddの状態を戻す。
3.「–soft」はcommitの状態を戻す。
・「git reset」だけで行なった場合はデフォルトは「–mixed」です
$ git reset --hard HEAD
$ git reset --mixed HEAD
$ git reset --soft HEAD
git rebase とは?
派生元を変更する事ができます
・派生元を変更したブランチに移動してどのブランチから派生するかを指定します
$ git rebase ブランチ名
コミットを1つにまとめる事もできます
・「HEAD~数字」でHEADからいくつまでをという指定ができます
$ git rebase -i HEAD~3
上記のコマンドを実行する「テキストエディター」が開きます
・以下の用な内容が表示されます
pick コミットA
s コミットB # まとめるコミット
s コミットC # まとめるコミット
・修正したら「:wq」でテキストエディターをセーブして終了します、あとは場合によってコミットをします
参考サイト
git cherry-pick とは?
特定のコミットを別ブランチへコピーする事ができます
・まずはコピーするコミットのIDをみたいのでそのブランチへ移動して「git log」をします
・確認ができたらコピー先のブランチへ「checkout」します
・そしたら、「git cherry-pick コミットID」、複数指定する場合は「コミットID..コミットID」です
・コンフリクトが起きると思いますので解消して「–continue」します
$ git cherry-pick コミットID..コミットID
git stash とは?
編集した内容を残しておきたい場合に保存する事ができます
・「save」で変更を退避することができます
・「list」でstashされているリストを確認することができます
・「apply stash@{スタッシュ番号}」で状態を戻すことができます
・「drop stash@{スタッシュ番号} 」でstashしたものを削除できます
$ git stash save
$ git stash list
$ git stash apply stash@{数字}
$ git stash drop stash@{数字}
ターミナルでgitを使いやすくする設定
・Git のバージョンを確認する
$ git --version
・Macで標準インストールしている場合は、「homebrew」の「git」にアップデートします
$ brew install git
便利な機能を設定する前の準備
・ターミナルでユーザーディレクトリに移動します
$ cd
・下記のコマンドで「git-completion.bash」 と 「git-prompt.sh」 のファイルがあることを確認する
$ ls /usr/local/etc/bash_completion.d/
・「.bash_profile」、「.bashrc」のどちらかを「vi」でファイルを開いて編集します
$ vi .bash_profile
追加しておくと便利な機能
・ターミナルにブランチ名を表示する事ができます
source ~/.git-prompt.sh
source ~/.git-completion.bash
GIT_PS1_SHOWDIRTYSTATE=true
PS1='\h:\W$(__git_ps1 "[[\033[32m]%s[\033[0m]]")\$ '
・補完機能を有効にする事ができます(Tabで補完できます)
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
・「:wq」でセーブして「vi」を閉じます
・設定を反映します
$ source ~/.bash_profile または .bashrc
最後に一言
まだまだ、Gitのコマンド、オプションなどはありますが実際に利用するのはこんくらいだと思います(多分)、参考になれば幸いです( ̄^ ̄)ゞ