uso

雑記いろいろ
★書いてある内容に保証は一切ありません。
 ご自身で判断をしてください。

Git

2019-08-15 17:02:33 | util
◆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

最新の画像もっと見る