说我的gerrit中的当前日志如下所示:
我的目标是创建一个新标记(v1.73.0),它应该包含commit8和commit9并将其推送到origin.我被告知要根据最新的稳定标签创建一个新的本地分支,并挑选必要的提交并对其进行标记.但是,我有一些问题将标签推送到主人.
这就是我所做的:
...现在,我如何推动v1.73.0掌握?
结果:
tor*_*rek 55
在git中,每个标记都被称为"指向"(一个,单个)提交.事实上,分支也是如此:分支名称也只指向一个提交.
这项工作的原因有两个:
因此,分支和标签之间的主要区别在于标签不移动.
要了解其工作原理,请考虑一个只有三次提交的简单git存储库.让我们来标注这些提交A,B和C.第一个commit(A)指向什么,因为它是第一个提交,而分支master指向A:
A <-- master
Run Code Online (Sandbox Code Playgroud)
当你进行第二次提交时,git会创建B指向A,并将分支名称前进到指向B:
A <- B <-- master
Run Code Online (Sandbox Code Playgroud)
然后,当你进行第三次提交时,git再次使其指向其父提交,并推进分支:
A <- B <- C <-- master
Run Code Online (Sandbox Code Playgroud)
如果您现在制作标签,默认情况下该标签将指向提交C:
A <- B <- C <-- master
^
|
tag: sometag
Run Code Online (Sandbox Code Playgroud)
如果你然后进行新的提交D,git会提升分支,但不会提升标记:
A <- B <- C <- D <-- master
^
|
tag: sometag
Run Code Online (Sandbox Code Playgroud)
您可以随时创建或删除任何指向任何特定提交的标记:
$ git tag -d sometag
Run Code Online (Sandbox Code Playgroud)
将删除标签sometag,之后:
$ git tag sometag master~2
Run Code Online (Sandbox Code Playgroud)
将添加sometag指向提交B.1
(我们刚刚证明,一个标签可以移动的真正区别是标签不.预计移动,而分支;和Git不会自动移动的标签.2个 分行的普遍预期,"向前"的方向移动,即,如果master用于指向提交C,现在指向提交D,C通常应该通过开始D和向后工作找到提交.任何时候移动分支以便违反此规则,您将"重写历史记录";请参阅其他这篇文章很好,当它引起人们的麻烦时.)
当你使用时git push,你真正在做的是指示其他一些git存储库接受你没有的任何新提交,然后设置一些名称 - 通常是分支和/或标记 - 指向一些提交(最终各一个)产生的集合.3 这些名称(分支,标签等)通常称为"引用",但我们现在只使用"branch"和"tag".
将git push存储库命名后的参数(通常通过"远程"名称origin)来推送.如果你把它留下来,git会尝试找出一个,但如果你想添加一个分支或标签名称,你需要明确地包括它,因为这里的第一个单词被假定为远程名称.(也就是说,git push master尝试使用master远程名称而不是分支名称.)
要推送所有标签,只需添加--tags到您的git push命令:
git push --tags origin
Run Code Online (Sandbox Code Playgroud)
要推送特定标签,您可以为其命名:
git push origin sometag
Run Code Online (Sandbox Code Playgroud)
正如你可以推动一个特定的分支:
git push origin master
Run Code Online (Sandbox Code Playgroud)
(事实上,第四个参数是一对名称,如master:master或sometag:sometag,但在大多数情况下默认使用两侧相同的名称.4)
origin如果你不需要它来制作所有的参数,你可以省略名称,例如,git push --tags相同git push --tags origin(假设所有的推动都去origin了).
要在遥控器中设置标签,请先在本地设置标签.使用您喜欢的任何查看器以确保正确设置.然后推动它,用或者.git tag name commit-identifiergit push origin namegit push --tags
1的master~2语法指示GIT中开始在提交经由发现master,然后备份两个步骤.您可以B在此处编写用于提交的原始SHA-1 .
2旧版本的git(pre 1.8.4)在推送时意外地将分支规则应用于标签(在远程端,即如果它是"快进"则让标签移动).
3在某些情况下,您可以将名称指向"带注释的标签",并且没有任何东西阻止名称指向"树"或"blob"对象,但这不是正常的设置.
4实际上,分支的默认dst refspec很复杂:它取决于您的push.default配置,是否有设置,是否配置了上游,等等.对于标签,规则更简单,因为没有"上游"这样的东西.remote.repository.push
qed*_*qed 24
这是一个具体的例子:
git add .
git commit -m "some description"
git tag v0.1.9 # or any other text
git push origin master # push the commit
git push --tags origin # push the tags
Run Code Online (Sandbox Code Playgroud)
这就是你想要的
git add .
git commit -m "commit10"
git tag -a v1.73.0 -m "Latest release (or some message)"
git push origin master
git push origin v1.73.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34023 次 |
| 最近记录: |