私は少し実験しました、そしてこれは前方にナビゲートするトリックをするようです(編集:マージコミットなしの線形履歴がある場合にのみうまく機能します):
git checkout $(git rev-list --topo-order HEAD..towards | tail -1)
どこ towards
コミットのSHA1またはタグです。
説明:
- 内部のコマンド
$()
は、現在HEAD
とコミットの間のすべてのコミットを取得しtowards
(を除くHEAD
)、優先順位でソートしgit log
ます(デフォルトの場合と同様-奇妙なことにのデフォルトである年代順ではなくrev-list
)、最後のコミットを取得します(tail
)、つまり、行きたいもの。
- これはサブシェルで評価され、
git checkout
チェックアウトを実行するために渡されます。
.profile
特定のコミットに向けてナビゲートするために、ファイル内のパラメーター期待エイリアスとしてアクセス可能な関数を定義できます。
# Go forward in Git commit hierarchy, towards particular commit
# Usage:
# gofwd v1.2.7
# Does nothing when the parameter is not specified.
gofwd() {
git checkout $(git rev-list --topo-order HEAD.."$*" | tail -1)
}
# Go back in Git commit hierarchy
# Usage:
# goback
alias goback='git checkout HEAD~'