Git 主なコマンド
Tag:Gitの操作は、GUI経由で行うというかたも多いかと思います。ですが、GUIを使えないときもあり、そのような場合、Gitコマンドの使い方を抑えておく必要があります。ここでは、Git操作でよく使うコマンドについて取り上げます。
初期設定
git config --global user.name "ユーザー名" git config --global user.email "メールアドレス"
上記コマンドを実行すると「~/.gitconfig」に書き込まれる。
※「/etc/gitconfig」 全ユーザに対する設定ファイル。 「git config --system -l」で内容確認できる。 ※「~/.gitconfig」 特定ユーザに対する設定ファイル。 「git config --global -l」で内容確認できる。 ※リポジトリ内の「.git/config」 リポジトリに対する設定ファイル。 「git config --local -l」で内容確認できる。 ※最終的に適用される設定値 「git config -l」で確認できる。
ローカルリポジトリ作成
# リポジトリにしたいフォルダ内で実行 git init
状態確認
git status
ステージングに登録
# ファイル指定 git add ファイル名 # 全てのファイル git add .
ステージング登録取り消し
git reset HEAD ファイル名
コミット
git commit -m "message" # 複数行のメッセージ git commit # 直前のコミットメッセージを変更 git commit --amend
直前のコミットのミスを修正
git commit ミスを修正 git commit --amend
先に行ったコミットが、ミスを修正したものに置き換えられます。
reset(取り消し)
履歴において、指定コミットをなかったものとする。
# 最終コミット後の作業ディレクトリにおける修正を取り消し git reset --hard HEAD # 作業ディレクトリの内容を1つ前のコミットの状態に戻す git reset --hard HEAD^
resetのオプションごとの動作を理解するのに、下記URLが参考になります。 ⇒ http://d.hatena.ne.jp/murank/20110327/1301224770
# ワークディレクトリの内容をそのままに直前のコミットを取り消す git reset --soft HEAD^
HEAD^ 直前のコミットを表す
revert(打ち消し)
履歴は残したままで、指定コミットによって変更された内容を元に戻すための新しいコミットを生成。
git revert <commit>
コミットログを確認
git log # 1行表示 git log --oneline # 過去90日間で変更があったファイル git log --since="90 days ago" --pretty=format:"" --name-only
gitignoreに入れ忘れてコミットした場合
後からでも、以下コマンドで無視させることができます。
git rm --cached -f filename
filenameには無視したいファイルを指定。
最新コミットとの差分を表示
git diff HEAD
HEADは、現在使用しているブランチの先頭を表します。
ブランチ操作
# ローカルブランチの一覧表示 git branch # リモートとローカルのブランチの一覧表示 git branch -a # ブランチを作成 git branch ブランチ名 # ブランチを削除 git branch -d ブランチ名 # 現在のブランチをリネーム git branch -m 新しいブランチ名
ブランチ切り替え
git checkout ブランチ名 # ブランチの作成とチェックアウトをまとめて実行 git checkout -b ブランチ名
checkoutにより、HEADが移動することで、使用するブランチが変更されます。コミットしてない変更内容も移動先のブランチに対して移動します。
別ブランチの変更履歴を統合
「merge」を利用すると、現在のブランチに別ブランチの変更内容を統合できます。
featureブランチにmasterブランチの変更を統合してみます。
git checkout feature git merge master
※mergeとrebase
rebaseでも変更履歴を統合できます。違いについては下記サイトで詳しく解説されていました。
・git rebaseと仲良くなろう~part1 – Qiita
・git pull と git pull -rebase の違いって?図を交えて説明します! | KRAY Inc
・[Git] 使い分けできていますか?マージ(merge)&リベース(rebase)再入門
・git pull と git pull -rebase の違いって?図を交えて説明します! | KRAY Inc
・[Git] 使い分けできていますか?マージ(merge)&リベース(rebase)再入門
変更内容を一時退避
# 一時退避 git stash # 退避を戻す git stash pop # 退避の一覧表示 git stash list # 退避の消去 git stash clear
checkoutを行うと、元のブランチで行った変更内容は、移動先のブランチに対して移動します。変更内容を移動させたくない場合、stashを使って退避させてからcheckoutを行います。
リモートリポジトリを登録
# HTTPS接続の場合(GitHUBアカウントのユーザー名、パスワードによる認証) git remote add origin https://github.com/ユーザ名/リポジトリ名 # SSH接続の場合(公開鍵認証) git remote add origin git@github.com:ユーザ名/リポジトリ名
これ以降、originがリモートリポジトリの場所の別名(識別子)として利用できます。 ※origin/masterとmasterの違い origin/master リモートリポジトリ「origin」のブランチ「master」の位置を表す。 master ローカルリポジトリのブランチ「master」の位置を表す。
# fork元リポジトリを登録 git remote add upstream git@github.com:fork元ユーザ名/リポジトリ名
これ以降、upstreamがfork元リモートリポジトリの場所の別名(識別子)として利用できます。
リモートリポジトリの確認
git remote -v
リモートリポジトリを変更
git remote set-url origin https://github.com/ユーザ名/リポジトリ名 git remote set-url origin git@github.com:ユーザ名/リポジトリ名
クローン
# リポジトリ名のディレクトリができる git clone https://github.com/XXX/XXX.git # リポジトリ名と別名のディレクトリにしたい場合 git clone https://github.com/XXX/XXX.git ディレクトリ名 # 特定のブランチを指定する場合 git clone -b ブランチ名 https://github.com/XXX/XXX.git
デフォルトで、リモートリポジトリをoriginで参照できます。
リモートリポジトリのブランチに現在のブランチを送信
git push リモート名 ブランチ名 # originが指すリモートリポジトリのmasterブランチに、現在のブランチを送信 git push origin master # リモートでブランチ生成も行う git push --set-upstream origin ブランチ名
現在のブランチに、リモートリポジトリのブランチ統合
git pull リモート名 ブランチ名 ローカルのmasterにリモートの変更を取り込むには以下のようにします。 # masterに切り替え(作業途中のファイルがある場合、先にstashしておく) git checkout master # origin(fork先:自分のアカウント内)が指すリモートリポジトリのmasterブランチを受信 git pull origin master # upstream(fork元)が指すリモートリポジトリのmasterブランチを受信 git pull upstream master
「git pull upstream master」で何が行われる?
1. フォーク元の内容「upstream/master」の取り込み
2.「upstream/master」を現在のブランチに統合
つまり、以下コマンドを実行したこととなる。
git fetch upstream git merge upstream/master
PRの動作確認をローカルでしたい
git fetch origin pull/PR番号/head:ブランチ名
forkしているならupstream。
その後、checkout。
git checkout ブランチ名
タグ操作
# タグの一覧表示 git tag # コミットにタグを付ける git tag v2.0 # タグを削除 git tag -d v2.0
gitでの管理を辞める
.gitを削除すれば普通のディレクトリになります。
スポンサーリンク
こちらの記事もどうぞ
- 開発環境 : Dockerをmacにインストール
- 開発環境 : Dockerでcentosのコンテナを生成
- 開発環境 : Laradockで動作するPHPアプリをリモートデバッグ
- 開発環境 : Dockerコンテナ全削除、イメージ全削除
- 開発環境 : Docker for Macが遅いのでcoreos-vagrantを利用
- 開発環境 : PhpStormの使い方
- 開発環境 : NetBeans作業効率を高めるおすすめプラグイン
- 開発環境 : NetBeansでファイルをサーバーにアップロードする方法
- 開発環境 : NetBeansが重いときに見直す設定
- 開発環境 : GitHub 利用イメージ
- 開発環境 : Vagrantの使い方
- 開発環境 : Vagrantでprivate_networkが設定できないときの対応
- 開発環境 : 1つのVagrantfileで複数の仮想マシンを立ち上げ
- 開発環境 : WindowsのVagrant環境でchefを実行する方法
- 開発環境 : Vagrant環境にServerspecを実行
- 開発環境 : Windows上にAnsible実験環境構築
- 開発環境 : Ansibleの基本的な使い方
- 開発環境 : AnsibleでCentOSの初期設定
- 開発環境 : AnsibleでNginxとPHPの環境構築
- 開発環境 : AnsibleでMySQLの環境構築
- 開発環境 : Selenium IDEの使い方
- 開発環境 : Gulpの使い方
- 開発環境 : スタイルガイドジェネレータ「sc5-styleguide」の使い方