|  | #ifndef RESET_H | 
|  | #define RESET_H | 
|  |  | 
|  | #include "hash.h" | 
|  | #include "repository.h" | 
|  |  | 
|  | #define GIT_REFLOG_ACTION_ENVIRONMENT "GIT_REFLOG_ACTION" | 
|  |  | 
|  | /* Request a detached checkout */ | 
|  | #define RESET_HEAD_DETACH (1<<0) | 
|  | /* Request a reset rather than a checkout */ | 
|  | #define RESET_HEAD_HARD (1<<1) | 
|  | /* Run the post-checkout hook */ | 
|  | #define RESET_HEAD_RUN_POST_CHECKOUT_HOOK (1<<2) | 
|  | /* Only update refs, do not touch the worktree */ | 
|  | #define RESET_HEAD_REFS_ONLY (1<<3) | 
|  | /* Update ORIG_HEAD as well as HEAD */ | 
|  | #define RESET_ORIG_HEAD (1<<4) | 
|  |  | 
|  | struct reset_head_opts { | 
|  | /* | 
|  | * The commit to checkout/reset to. Defaults to HEAD. | 
|  | */ | 
|  | const struct object_id *oid; | 
|  | /* | 
|  | * Optional value to set ORIG_HEAD. Defaults to HEAD. | 
|  | */ | 
|  | const struct object_id *orig_head; | 
|  | /* | 
|  | * Optional branch to switch to. | 
|  | */ | 
|  | const char *branch; | 
|  | /* | 
|  | * Flags defined above. | 
|  | */ | 
|  | unsigned flags; | 
|  | /* | 
|  | * Optional reflog message for branch, defaults to head_msg. | 
|  | */ | 
|  | const char *branch_msg; | 
|  | /* | 
|  | * Optional reflog message for HEAD, if this omitted but oid or branch | 
|  | * are given then default_reflog_action must be given. | 
|  | */ | 
|  | const char *head_msg; | 
|  | /* | 
|  | * Optional reflog message for ORIG_HEAD, if this omitted and flags | 
|  | * contains RESET_ORIG_HEAD then default_reflog_action must be given. | 
|  | */ | 
|  | const char *orig_head_msg; | 
|  | /* | 
|  | * Action to use in default reflog messages, only required if a ref is | 
|  | * being updated and the reflog messages above are omitted. | 
|  | */ | 
|  | const char *default_reflog_action; | 
|  | }; | 
|  |  | 
|  | int reset_head(struct repository *r, const struct reset_head_opts *opts); | 
|  |  | 
|  | #endif |