自分用メモ。
ファイル単位でなく、変更した部分(=ハンク)単位でのステージング
(そもそも、こまめにadd→commitしなさい!って話ですが、、、)
git add -p
リモートにPUSHしてしまったコミットを、1つ前の状態に戻したい!
git push -f origin HEAD^:master
ローカルのコミット状態は変わらないので、必要に応じてgit reset
などをやる。
※ コマンドオプションの意味
-f : =「––force」。強制的に上書きする。
origin : PUSHするリポジトリの指定。「origin」はリモートリポジトリ。
HEAD^:master : ローカルのブランチ:リモートのブランチ。HEAD^は1つ前(HEADの1番目の親)の意味。
その応用で...↓
リモートのブランチを削除する!
git push -f origin :master
ローカルのブランチ指定がないので、空で上書き=削除される。
コンフリクトが起きたとき、どちらか一方を正とする
git checkout --ours/--theirs
git diffで文字化けしないようにする
git diff {比較するコミット1}..{比較するコミット2} | iconv -f shift_jis
※ただし、diffへの色付けは失われるので、結局見づらい。。。
追跡ブランチに設定する
git branch --set-upstream-to origin/{ブランチ名} {ローカルブランチ名}
または
git branch -u origin/{ブランチ名} {ローカルブランチ名}
追跡ブランチを確認
git branch -vv
releaseブランチをmasterにマージしてタグ付け
とりあえずfetch
git fetch --prune
Non-Fast-Forwardでマージ
git merge release --no-ff
masterをpush
git merge
そして、タグ付け
git tag -a v1.0 -m 'yyyymmdd released'
タグデータと関連づけられたコミットを確認
git show v1.0
既存のタグ一覧
git tag
タグのpush
git push origin v1.0
cloneするときにリモートリポジトリの名前を origin 以外にする
git clone -o <remote-name> <remote-repository-uri>
エイリアス設定
git log --oneline --graph
をさらにわかりやすく
git config --global alias.graph 'log --graph --pretty=format:"%C(yellow)%h%Creset%C(auto)%d%Creset %s %Cblue[%an]%Creset %ad" --all --date=iso'