如果你看看git的代碼(下面的鏈接),我們可以看到,推它正在檢查關鍵字標籤期間。
https://github.com/tnachen/git/blob/master/builtin/push.c
答案很簡單:給標籤一個有意義的名稱,不使用git關鍵字
static void set_refspecs(const char **refs, int nr)
{
int i;
for (i = 0; i < nr; i++) {
const char *ref = refs[i];
if (!strcmp("tag", ref)) {
char *tag;
int len;
if (nr <= ++i)
die("tag shorthand without <tag>");
len = strlen(refs[i]) + 11;
if (deleterefs) {
tag = xmalloc(len+1);
strcpy(tag, ":refs/tags/");
} else {
tag = xmalloc(len);
strcpy(tag, "refs/tags/");
}
strcat(tag, refs[i]);
ref = tag;
} else if (deleterefs && !strchr(ref, ':')) {
char *delref;
int len = strlen(ref)+1;
delref = xmalloc(len+1);
strcpy(delref, ":");
strcat(delref, ref);
ref = delref;
} else if (deleterefs)
die("--delete only accepts plain target ref names");
add_refspec(ref);
}
}
如果你混帳推的文檔中查找(即做'混帳推--help'。並搜索標籤)。你會看到'git push'有一個特定的關鍵字,你可以用它明確指定你可以用來推送標籤。這個關鍵字就是'tag'(驚喜!)。所以,理論上你可以做'git push tag tag',第一個'tag'是關鍵字,第二個'tag'是標籤名。但是,我同意下面的答案:命名標籤'tag'是不可取的。 – Alderath
我只嘗試過「git push -tag tag」和「git push --tag tag」。 謝謝! :) – forestgril