◆gitコマンドメモ
基本的な理解はここが分かりやすい
https://qiita.com/kyoyyy/items/161b6905f45bee2efe21
Git-flowって何?
https://qiita.com/KosukeSone/items/514dd24828b485c69a05
--------------------
gitを始める
--------------------
ユーザー設定
git config --global user.name 名前
git config --global user.email メールアドレス
git config --global core.quotepath false
git config --global sendpack.sideband false
リモートリポジトリを作成する
git init --bare --shared
ローカルリポジトリを作成する(作成したい場所に移動して)
git init
リポジトリを作成した場所のファイルを追加する場合
git add *
git commit -m 'initial commit'
リモートリポジトリに作成したローカルリポジトリを追加
git remote add origin パスとか
リモートリポジトリにローカルリポジトリをプッシュ
git push origin master
リモートリポジトリをCloneする
git clone パス
--------------------
ブランチ
--------------------
ブランチの一覧を見る
git branch -a
上流ブランチの設定を確認する
git branch -vv
[リモート名/ブランチ名]が表示されれば、紐づいている
(Cloneすれば基本的に大丈夫
ブランチを切り替える
git checkout hoge
ブランチを作成する(作成元ブランチにcheckoutしてから)
git checkout -b fuga
リモートからブランチを作成する
git checkout -b fuga origin/master
ブランチをリモートに登録する
git push -u origin fuga
ブランチを削除する(HEADにマージしたブランチ)
git branch --delete fuga
ブランチを削除する(マージしたか問わずに)
git branch -D fuga
リモートブランチの一覧を表示する
gut branch --remote
リモートブランチを削除する
git push --delete origin fuga
または
git push origin :fuga
リモートブランチの参照がおかしい(消えてるに出るとか)時
git remote prune orgin
余計な枝を掃う
--------------------
コミット
--------------------
変更をコミットする
git add -u
git commit -m 'コメント'
↑を1回でする
git commit .
新規ファイルも含めてコミットする
git add .
git commit
特定のファイルをコミットする
git commit ファイル名
間違ったコミットを取り消す(ローカルは変更しない)
git reset --soft
直前のコミットを消す(ローカルは変更しない)
git reset --soft HEAD^
間違ったコミットを取り消す(ローカルも変更する
git resert --hard
直前のコミットコメントを変更する)
git commit --amend
ログを10件見る
git log --oneline --graph -10
--------------------
プッシュ
--------------------
コミットをリモートに反映する
git push origin
→checkout中のブランチをプッシュ、上流ブランチが紐づいてないとエラー
git push origin ブランチ名
git push origin ローカルブランチ:リモートブランチ
※ローカルブランチ名を空にすることで削除と同じ
--------------------
プル
--------------------
リモートブランチの内容を取得し、ローカルブランチの値にマージする
git pull
git fetch
git merge
pullは↑コマンドを一気にやっている
チェックアウトしていないブランチの内容を取得する
git fetch origin ローカルブランチ:リモートブランチ
リモートで削除されたブランチを消す場合(fetchでも使える)
git pull --prune
--------------------
マージ※マージしたいbranchで行う
--------------------
マージ
git merge ブランチ名
必ずマージコミットを作ってマージ
git merge --no-ff ブランチ名
マージが競合した場合、対象を確認
git status
マージ解消用のグラフィカルツールの呼び出し(vimdiffがいけるが使い方わからない)
git mergetool
マージを途中でキャンセル(commitしなけれキャンセル可能)
git merge --abort
マージを解消したらgit add を実行して解決済みであることを通知
git add .
git commit
※ステージすると、Git はコンフリクトが解決されたと見なす
--------------------
リベース※先行しているbranchで行う
--------------------
file:///C:/Program%20Files/Git/mingw64/share/doc/git-doc/git-rebase.html
リベースマージする
git rebase ブランチ名
リベースキャンセル
git rebase --abort
競合が発生し解消した後に反映
git add .
git rebase --continue
※rebaseの場合、競合箇所を修正した後はコミットではなく、
rebaseコマンドに --continue オプションを指定して実行する
リベースをしてコミットをまとめる(例えばHEADから2つ目までを対象)
it rebase -i HEAD~2
----
コミットを指定するときに、~(チルダ)と^(キャレット)を使ってあるコミットからの
相対位置で指定することもできます。
この時に、よく使われるのがHEADです。~(チルダ)を後ろに付け加えることで
何世代前の親かを指定することができます。
^(キャレット)は、ブランチのマージで親が複数ある場合に、
何番目の親かを指定することができます。
--------------------
タグ※Gitfllowでは「master」にのみつける
--------------------
注釈つきタグをつける
git tag -a タグ -m 'タグのコメント'
注釈なしのタグ
git tag タグ
後からタグをつける
git -tag -a タグ -m 'コメント' コミットID
タグをリモートに反映
git push origin タグ名
→タグをつけたコミットを共有しているブランチすべてに反映されるみたい
なぜ?コミットのないしてタグをつけるから、ブランチは関係ないのか?
--------------------
stash
--------------------
一時退避
git stash save(省略可)
stashのリストを見る
git stash list
git stash list -p 変更内容を見れる
各変更の詳細を見る
git stash show stash名
stashを復活する
git stash apply stash@{0}
stashを消す
git stash drop stash@{0}
復活と削除
git stash pop stash@{0}
応用、復活したけどやっぱりやめる
git stash show <適用したstash名> -p | git apply -R
--------------------
log見る
--------------------
そこそこ見やすい
git log --oneline --graph --decorate
ファイル毎の削除、追加行数をログごとに表示
git log --numstat
変更したファイルをログごとに表示
git log --name-status
変更点を見る
git log -p
リモートリポジトリのログを見る
git log origin/master
基本的な理解はここが分かりやすい
https://qiita.com/kyoyyy/items/161b6905f45bee2efe21
Git-flowって何?
https://qiita.com/KosukeSone/items/514dd24828b485c69a05
--------------------
gitを始める
--------------------
ユーザー設定
git config --global user.name 名前
git config --global user.email メールアドレス
git config --global core.quotepath false
git config --global sendpack.sideband false
リモートリポジトリを作成する
git init --bare --shared
ローカルリポジトリを作成する(作成したい場所に移動して)
git init
リポジトリを作成した場所のファイルを追加する場合
git add *
git commit -m 'initial commit'
リモートリポジトリに作成したローカルリポジトリを追加
git remote add origin パスとか
リモートリポジトリにローカルリポジトリをプッシュ
git push origin master
リモートリポジトリをCloneする
git clone パス
--------------------
ブランチ
--------------------
ブランチの一覧を見る
git branch -a
上流ブランチの設定を確認する
git branch -vv
[リモート名/ブランチ名]が表示されれば、紐づいている
(Cloneすれば基本的に大丈夫
ブランチを切り替える
git checkout hoge
ブランチを作成する(作成元ブランチにcheckoutしてから)
git checkout -b fuga
リモートからブランチを作成する
git checkout -b fuga origin/master
ブランチをリモートに登録する
git push -u origin fuga
ブランチを削除する(HEADにマージしたブランチ)
git branch --delete fuga
ブランチを削除する(マージしたか問わずに)
git branch -D fuga
リモートブランチの一覧を表示する
gut branch --remote
リモートブランチを削除する
git push --delete origin fuga
または
git push origin :fuga
リモートブランチの参照がおかしい(消えてるに出るとか)時
git remote prune orgin
余計な枝を掃う
--------------------
コミット
--------------------
変更をコミットする
git add -u
git commit -m 'コメント'
↑を1回でする
git commit .
新規ファイルも含めてコミットする
git add .
git commit
特定のファイルをコミットする
git commit ファイル名
間違ったコミットを取り消す(ローカルは変更しない)
git reset --soft
直前のコミットを消す(ローカルは変更しない)
git reset --soft HEAD^
間違ったコミットを取り消す(ローカルも変更する
git resert --hard
直前のコミットコメントを変更する)
git commit --amend
ログを10件見る
git log --oneline --graph -10
--------------------
プッシュ
--------------------
コミットをリモートに反映する
git push origin
→checkout中のブランチをプッシュ、上流ブランチが紐づいてないとエラー
git push origin ブランチ名
git push origin ローカルブランチ:リモートブランチ
※ローカルブランチ名を空にすることで削除と同じ
--------------------
プル
--------------------
リモートブランチの内容を取得し、ローカルブランチの値にマージする
git pull
git fetch
git merge
pullは↑コマンドを一気にやっている
チェックアウトしていないブランチの内容を取得する
git fetch origin ローカルブランチ:リモートブランチ
リモートで削除されたブランチを消す場合(fetchでも使える)
git pull --prune
--------------------
マージ※マージしたいbranchで行う
--------------------
マージ
git merge ブランチ名
必ずマージコミットを作ってマージ
git merge --no-ff ブランチ名
マージが競合した場合、対象を確認
git status
マージ解消用のグラフィカルツールの呼び出し(vimdiffがいけるが使い方わからない)
git mergetool
マージを途中でキャンセル(commitしなけれキャンセル可能)
git merge --abort
マージを解消したらgit add を実行して解決済みであることを通知
git add .
git commit
※ステージすると、Git はコンフリクトが解決されたと見なす
--------------------
リベース※先行しているbranchで行う
--------------------
file:///C:/Program%20Files/Git/mingw64/share/doc/git-doc/git-rebase.html
リベースマージする
git rebase ブランチ名
リベースキャンセル
git rebase --abort
競合が発生し解消した後に反映
git add .
git rebase --continue
※rebaseの場合、競合箇所を修正した後はコミットではなく、
rebaseコマンドに --continue オプションを指定して実行する
リベースをしてコミットをまとめる(例えばHEADから2つ目までを対象)
it rebase -i HEAD~2
----
コミットを指定するときに、~(チルダ)と^(キャレット)を使ってあるコミットからの
相対位置で指定することもできます。
この時に、よく使われるのがHEADです。~(チルダ)を後ろに付け加えることで
何世代前の親かを指定することができます。
^(キャレット)は、ブランチのマージで親が複数ある場合に、
何番目の親かを指定することができます。
--------------------
タグ※Gitfllowでは「master」にのみつける
--------------------
注釈つきタグをつける
git tag -a タグ -m 'タグのコメント'
注釈なしのタグ
git tag タグ
後からタグをつける
git -tag -a タグ -m 'コメント' コミットID
タグをリモートに反映
git push origin タグ名
→タグをつけたコミットを共有しているブランチすべてに反映されるみたい
なぜ?コミットのないしてタグをつけるから、ブランチは関係ないのか?
--------------------
stash
--------------------
一時退避
git stash save(省略可)
stashのリストを見る
git stash list
git stash list -p 変更内容を見れる
各変更の詳細を見る
git stash show stash名
stashを復活する
git stash apply stash@{0}
stashを消す
git stash drop stash@{0}
復活と削除
git stash pop stash@{0}
応用、復活したけどやっぱりやめる
git stash show <適用したstash名> -p | git apply -R
--------------------
log見る
--------------------
そこそこ見やすい
git log --oneline --graph --decorate
ファイル毎の削除、追加行数をログごとに表示
git log --numstat
変更したファイルをログごとに表示
git log --name-status
変更点を見る
git log -p
リモートリポジトリのログを見る
git log origin/master