Git
やっておくべき設定
.gitignore_global
共通の.gitignore
を書く。
ここに書くのは.vscode/
や.idea/
など、環境依存のファイルを書く
~/.gitignore_global
.idea/
*.iml
空コミットで CI を起動する
git commit --allow-empty -m "empty commit"
git diff で日本語が文字化けしないようにする
git config --global core.pager "LESSCHARSET=utf-8 less"
Ref: https://maku77.github.io/git/settings/garbling.html
基本コマンド
ブランチ間の差分を見る
branchA
のほうが古いブランチとしてみる。
git diff [branchA] [branchB]
# ex) git diff master develop
リネームする
git mv [org] [dst]
git config
リポジトリごとで設定
git config --local user.name koya
git config --local user.email 4769754+hako1912@users.noreply.github.com
リポジトリごとの設定を強制
git config --global user.useConfigOnly true
リモートの全ブランチをフェッチ
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
フォルダ名の大文字小文字変更
エディタでディレクトリ名を変更したときに git の差分として認識されるようにする。
git config core.ignorecase false
=======
実行権限を付与
git update-index --add --chmod=+x [filename]
コミット前にフォーマット
ex) kotlin の場合
./gradlew ktlintFormat
for FILE in `git diff --name-only | grep .kt`; do
git add $FILE
done
派生元ブランチを調べる
https://qiita.com/upinetree/items/0b74b08b64442f0a89b9
git show-branch | grep '*' | grep -v "$(git rev-parse --abbrev-ref HEAD)" | head -1 | awk -F'[]~^[]' '{print $2}'
直前のコミットを取り消し
やっちまったときに。
git reset --soft HEAD^
リモートのブランチを新規 pull
# git pull origin [リモートブランチ名]:[ローカルブランチ名]
git pull origin dev:dev
ローカルをリモートで上書き
git fetch --all
git reset --hard origin/master
ブランチを指定して clone
git clone -b [ブランチ名] [リポジトリURL]
プロジェクト名(ディレクトリ名)を指定して clone
git clone [リポジトリURL] [ディレクトリ名]
git 管理外のファイルを削除
# 確認
git clean -n
# 実行
git clean -f
# ディレクトリも削除するときは-d
git clean -fd
便利コマンド
現在のブランチ名を表示
git rev-parse --abbrev-ref HEAD
Ref: (Git で今いるブランチを簡単に探す)[https://qiita.com/negito6/items/01e0eddb0bd281d85206]
Tips
マージ済みのローカルブランチを削除する
git branch --merged master | grep -v '^[ *]*master$' | xargs git branch -d