git
https://gyazo.com/0eb10bf44fe7e07176aef513a39cabb6
メモ
originはリモートリポジトリ(clone元)
upstreamはfork元リポジトリ
↑は慣習
作業スペース
ワーキングツリー(作業ディレクトリ)
作業している最中のスペース
インデックス(ステージングエリア)
コミットするファイルを登録するためのスペース
ステージング(add)はワーキングツリーの変更をインデックスに入れる動作
ワーキングツリ→インデックス→先頭コミット→.....
コマンド
$ git branch -r
リモートブランチ一覧
$ git branch --merged
$ git branch --no-merged
マージ済み、未マージのブランチ一覧
ブランチ名のリネーム
$ git branch --show-current | pbcopy
現在のブランチ名をコピる
$ git push origin --delete <branch_name>
$ git push origin :<branch_name>
リモートリポジトリのブランチを削除
後者は古いバージョンでの書き方
$ git checkout -b newbranch
-b: 「ブランチの新規作成」+「ブランチへのチェックアウト」を同時にやってくれる
$ git checkout -b branch_name origin/branch_name
リモートブランチをローカルに持ってきてチェックアウト
「-b」 +「リモートのブランチを作成したブランチに反映させる」
addしていない変更を取り消す
git checkout .
git checkout filename
上流ブランチを指定してpush
$ git push -u origin hoge
リベース(--onto)
$ git rebase --onto どこへ どこから どのブランチを
あるブランチがどこから生えているかを変更できる
例: (まちがって master から切ってしまった feature/hoge ブランチを develop に移動する)
$ git rebase --onto develop master feature/hoge
アメンド
$ git commit --amend --no-edit
直前のコミットに付け足せる(コミットメッセージ変更しない)
アメンドの修正はコミットメッセージorファイル付けたしのみ
直前のコミットからファイルを削除はできない
2つ前以前のコミットの修正をする場合はgit rebase -i
diff
https://gyazo.com/ccb54b731c34d5a497d6209d75441376
$ git diff staging...@
$ git diff staging...HEAD
現在featureブランチにいるとするとPRの差分を表示できる
@は現在のブランチ
/icons/point.icon...3つじゃないとマージベースとの比較にならないので意図した表示にならない
$ git diff HEAD~5..HEAD
直近5つのコミットの差分
$ git merge --abort
マージを中断
$ git log -p | delta
修正の履歴を見やすくする
$ git log --author="hiroki1117"
特定の作者のコミット一覧
$ git log --author="hiroki1117" --pretty=oneline | wc -l
ある作者のコミット数
$ git log -- targetfilepath
ある特定のファイルの変更履歴を見る
hiroki.iconめちゃ便利。blame以上にどういった感じで修正されてきたのか調査するのに役立つ
$ git checkout .
ディレクトリ配下の変更を全部戻せる
stash
$ git stash -m "スタッシュ名"
$ git stash push --keep-index
ワーキングディレクトリの変更のみをstashする
$ git stash list
$ git stash show -p stash@{0}
p付けるとファイル変更まで確認できる
設定
$ git config --global alias.s status
$ git s
で呼び出せる
$ git config --global alias.c commit
$ git c
$ git config --global alias.b branch
$ git config --global alias.push-f "push --force-with-lease"
$ git config --global alias.l "log --graph --pretty=format:'%x09%C(auto) %h %Cgreen %ar %Creset%x09by\"%C(cyan ul)%an%Creset\" %x09%C(auto)%s %d'"
$ git config --global alias.fix "reset --soft HEAD^"
$ git fix
直前のコミットメッセージを修正したい時
hiroki.iconコミットしたら戻すのめんどいみたいな心理的ハードルがあると修正だるいから簡単にコミット、インデックスを移動できるようにしておく→git reset $ git config --global alias.d diff
$ git config --global alias.ds "diff --staged"
シュッと差分確認
$ git config --global core.quotepath false
日本語ファイル名をそのまま表示できるようにする