X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=branch.c;h=d62cc0132cbff6de04b69864279d6c92f9e95e0a;hb=fb630e048c6efabe4d46b1b125fe7348062d38e6;hp=93dc866f8c09a2da2308c4fd677178b043f2d4d5;hpb=2d83abd4b2d12584391cda288a17461a9ae4ba5f;p=git.git diff --git a/branch.c b/branch.c index 93dc866f8..d62cc0132 100644 --- a/branch.c +++ b/branch.c @@ -175,9 +175,14 @@ void create_branch(const char *head, die("Cannot setup tracking information; starting point is not a branch."); break; case 1: - /* Unique completion -- good, only if it is a real ref */ - if (explicit_tracking && !strcmp(real_ref, "HEAD")) - die("Cannot setup tracking information; starting point is not a branch."); + /* Unique completion -- good, only if it is a real branch */ + if (prefixcmp(real_ref, "refs/heads/") && + prefixcmp(real_ref, "refs/remotes/")) { + if (explicit_tracking) + die("Cannot setup tracking information; starting point is not a branch."); + else + real_ref = NULL; + } break; default: die("Ambiguous object name: '%s'.", start_name); @@ -205,7 +210,7 @@ void create_branch(const char *head, start_name); if (real_ref && track) - setup_tracking(name, real_ref, track); + setup_tracking(ref.buf+11, real_ref, track); if (!dont_change_ref) if (write_ref_sha1(lock, sha1, msg) < 0) @@ -217,6 +222,7 @@ void create_branch(const char *head, void remove_branch_state(void) { + unlink(git_path("CHERRY_PICK_HEAD")); unlink(git_path("MERGE_HEAD")); unlink(git_path("MERGE_RR")); unlink(git_path("MERGE_MSG"));