ハマったこと、あんまり使わないけどあとあと使いたいものなどをざっくりとメモ。
なので随時更新です。
log
のformat
オプション
$ git log --pretty=format:"[%ad] %h %an : %s"
オプション | 出力される内容 |
---|---|
%H | コミットのハッシュ |
%h | コミットのハッシュ (短縮版) |
%T | ツリーのハッシュ |
%t | ツリーのハッシュ (短縮版) |
%P | 親のハッシュ |
%p | 親のハッシュ (短縮版) |
%an | Author の名前 |
%ae | Author のメールアドレス |
%ad | Author の日付 (--date= オプションに従った形式) |
%ar | Author の相対日付 |
%cn | Committer の名前 |
%ce | Committer のメールアドレス |
%cd | Committer の日付 |
%cr | Committer の相対日付 |
%s | 件名 |
%x09 | タブ文字 |
ログを桁あわせする
%<(10)%h
などのように%<(n)
を指定すると、続く内容を指定した数字で桁あわせしてくれる。
$ g log -2 --pretty=format:"[%h](%<(10)%an) %s"
[2733c5d](edom18 ) コード整理
[8f2545f](otherMember ) コメントを整理
みたいな感じになる
過去の変更から、特定の文字列を含んだものを検索する
-S
オプションを使います。
$ git log -p -S hoge
こうすると、hoge
という文字列を含んだ変更を列挙してくれます。
branchの派生を視覚的に表示する
$ git log --graph --branches --pretty=format:"%d [%h] \"%s\""
branchの派生元確認
[追記]
コメントで教えてもらいましたが、以下のようにするとダイレクトに派生元のコミットのハッシュが得られるので便利です。
$ git merge-base develop feature/hoge
$ git show-branch --sha1-name develop feature/hoge | tail -1
とすることで、feature/hoge
がdevelop
のどこから派生したかのコミットを表示してくれる。
リポジトリから最新の履歴だけを取得する
$ git clone —-depth 1 https://github.com/***
patchを作ってマージできるかチェックする
手順は、パッチ作成→パッチ適用テスト、な感じ。
まず、パッチを「当てる元」のブランチに移動。(例えばmasterにマージする予定のtopicブランチに移動)
その後、以下のコマンドでパッチファイルを作成
$ git format-patch <BRANCH-NAME> — stdout > <PATCH-FILE-NAME>
$ git co master
$ git apply <PATCH-FILE-NAME> —check
とあるコミットから変更のあったファイルだけを一覧表示
$ git diff --name-only HEAD <any commit>
コミットした内容がどこにいってしまったか分からないときは(reflog (レフログ))
$ git log -g --oneline HEAD
競合解決がされていないファイルのチェック
$ git ls-files -u
差分ファイルの適用
$ git diff hoge > pending.diff
$ ….
$ git apply pending.diff
差分ファイルの作成と適用 (make diff file(s) and apply)
$ git diff HEAD^..HEAD hoge.js > foo.patch
$ patch --dry-run -p1 < foo.patch
$ patch -p1 < foo.patch
※gitのrootで差分作成・適用をやること。
※-p1はパスを1階層無視。
※-dry-runは適用後どうなるかのチェック
Refer to: http://d.hatena.ne.jp/zariganitosh/20080325/1206435474
ファイルを消しちゃった場合にもとに戻す
$ git rm hoge.png //しちゃった場合は↓でいけました
$ git reset HEAD hoge.png
$ git checkout hoge.png