このgitための配管コマンドは次のとおりです。
git symbolic-ref HEAD refs/heads/existing_branch
デタッチされたヘッド状態になることはできません (SHA ではなく ref が必要です)。ただし、存在しない参照 (別名、未知のブランチ) に切り替えることはできます。それを防ぐには、おそらく次を使用しますgit alias。
git config --global alias.switch '!f() { git show-ref --heads --verify "refs/heads/$1" && git symbolic-ref -m "switch to branch $1 not touching workdir" HEAD "refs/heads/$1"; }; f'
その後、のように使用できますgit switch existing_branch。-mでエントリを表示するオプションが必要であることに注意してくださいgit reflog。これは通常、必要なものです。
ノート:
git reflog HEADの参照ログを示しますHEAD(オプションで指定されたコメントが-m再び表示されます)。完全なファイル (失われたコミットを見つけたい場合に備えて、前後の SHA を含む) は$(git rev-parse --git-dir)/logs/HEAD(for HEAD)に保存されます。
git show-ref --headsRHS で使用できるすべての参照を一覧表示します。に示すように、引数が適切な (既存の) ref (別名ブランチ) であるかどうかを確認するaliasために使用できます。--verify
- 注意:パックされた ref のような、またはパックされた ref 内
git symbolic-refの他の ref を指すことができます。これはおそらくあなたが望むものではないので、エイリアスはこれを に制限します。refs/tags/refs/remotes/refs/heads/