(List (= scope= flags=0 words=[] bindings=[('USAGE', {[SQ ] [ [--] ...]">]})]) (= scope= flags=0 words=[] bindings=[('SUBDIRECTORY_OK', {[LIT_CHARS Yes]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-setup]}) (Com {[LIT_CHARS set_reflog_action]} {[DQ [LIT_CHARS "reset "][VarSub *]]}) (Com {[LIT_CHARS require_work_tree]}) (= scope= flags=0 words=[] bindings=[('update', {[SQ ]}), ('reset_type', {[LIT_CHARS --mixed]})]) (Com {[LIT_CHARS unset]} {[LIT_CHARS rev]}) (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]}) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS --mixed]}, {[LIT_CHARS --soft]}, {[LIT_CHARS --hard]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('reset_type', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS break]}) (Com {[LIT_CHARS usage]}) (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('rev', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub 1]]})]})]) (Com {[LIT_CHARS exit]}) ) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS break]}) ) ) (Com {[LIT_CHARS shift]}) ) ) (Com {[LIT_OTHER ":"]} {[VarSub rev test_op=VS_TEST_EQUALS {[LIT_CHARS HEAD]}]}) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('rev', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[VarSub rev] [LIT_OTHER "^"] [LIT_CHARS 0]})]})]) (Com {[LIT_CHARS exit]}) ) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS --]}]] (Com {[LIT_CHARS shift]}) ) (If (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]}) (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub reset_type]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS --mixed]]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Cannot do partial "][VarSub reset_type][LIT_CHARS " reset."]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS diff-index]} {[LIT_CHARS --cached]} {[VarSub rev]} {[LIT_CHARS --]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --add]} {[LIT_CHARS --remove]} {[LIT_CHARS --index-info]}) ) (Com {[LIT_CHARS exit]}) ) (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --refresh]}) (Com {[LIT_CHARS exit]}) ) ) (Com {[LIT_CHARS cd_to_toplevel]}) (If (Com {[LIT_CHARS test]} {[DQ [VarSub reset_type]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS --hard]]}) (= scope= flags=0 words=[] bindings=[('update', {[LIT_CHARS -u]})]) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub reset_type]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS --soft]]}) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /MERGE_HEAD]]}) (Com {[LIT_CHARS test]} {[DQ ]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS ls-files]} {[LIT_CHARS --unmerged]})]]}) ) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Cannot do a soft reset in the middle of a merge."]]}) ) (ElseTrue) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS read-tree]} {[LIT_CHARS -v]} {[LIT_CHARS --reset]} {[VarSub update]} {[DQ [VarSub rev]]}) (Com {[LIT_CHARS exit]}) ) ) (If (= scope= flags=0 words=[] bindings=[('orig', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]})]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub orig]]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR][LIT_CHARS /ORIG_HEAD]]} "> 1), > ) (ElseTrue) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /ORIG_HEAD]]}) ) (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS -m]} {[DQ [VarSub GIT_REFLOG_ACTION]]} {[LIT_CHARS HEAD]} {[DQ [VarSub rev]]}) (= scope= flags=0 words=[] bindings=[('update_ref_status', {[VarSub ?]})]) (Case to_match={[DQ [VarSub reset_type]]}, pat_word_list=[[{[LIT_CHARS --hard]}], [{[LIT_CHARS --soft]}], [{[LIT_CHARS --mixed]}]] (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub update_ref_status]} {[LIT_OTHER "="]} {[LIT_CHARS 0]}) (List (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "HEAD is now at "]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS --max-count] [LIT_OTHER "="] [LIT_CHARS 1]} {[LIT_CHARS --pretty] [LIT_OTHER "="] [LIT_CHARS oneline]} {[LIT_CHARS --abbrev-commit]} {[LIT_CHARS HEAD]} more_env=[('GIT_PAGER', {[SQ ]})] ) ) ) (ElseTrue) (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --refresh]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /MERGE_HEAD]]} {[DQ [VarSub GIT_DIR][LIT_CHARS /rr-cache/MERGE_RR]]} {[DQ [VarSub GIT_DIR][LIT_CHARS /SQUASH_MSG]]} {[DQ [VarSub GIT_DIR][LIT_CHARS /MERGE_MSG]]}) (Com {[LIT_CHARS exit]} {[VarSub update_ref_status]}) )