Khr*_*riz 161 git deployment git-tag
我正在为我的git项目开发一个部署脚本,我刚开始使用标签.我添加了一个名为的新标签v2.0
:
git tag -a v2.0 -m "Launching version 2.0"
Run Code Online (Sandbox Code Playgroud)
我已将此标记推送到远程存储库
git push --tags
Run Code Online (Sandbox Code Playgroud)
当我尝试执行部署脚本并签出v2.0
标记时,我收到以下消息:
你处于"独立的HEAD"状态.您可以环顾四周,进行实验性更改并提交它们,并且您可以放弃在此状态下进行的任何提交,而不会通过执行另一次检出来影响任何分支.如果要创建新分支以保留您创建的提交,可以再次使用-b和checkout命令(现在或以后).示例:git checkout -b new_branch_name HEAD现在位于
这是正常的吗?存储库处于不确定状态,因为如果我这样做:
git branch
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
* (no branch)
master
Run Code Online (Sandbox Code Playgroud)
对不起,如果这是显而易见的,但我无法理解.
Nou*_*him 417
好的,首先几个术语略显过分简化.
在git
,tag
(像许多其他的东西)是所谓的树木.这是一种指代项目历史中的一个点的方式.Treeishes可以是标记,提交,日期说明符,序数说明符或许多其他内容.
现在a branch
就像一个标签,但是可以移动.当您"在"分支上并进行提交时,分支将移动到您所做的新提交,指示它的当前位置.
你HEAD
是指向被认为是"当前"的分支的指针.通常在克隆存储库时,HEAD
将指向master
哪个将指向提交.然后git checkout experimental
,当您执行类似操作时,将切换HEAD
到指向experimental
可能指向不同提交的分支.
现在解释.
执行a时git checkout v2.0
,您将切换到a未指向的提交branch
.现在HEAD
是"分离的"而不指向分支.如果您决定立即进行提交(如您所愿),则没有要更新的分支指针来跟踪此提交.切换回另一个提交将使您失去您所做的新提交.这就是消息告诉你的.
通常,你能做的就是说git checkout -b v2.0-fixes v2.0
.这将在treeish指向的提交v2.0
(在这种情况下为标记)中创建一个新的分支指针,然后将您转移HEAD
到指向该指针.现在,如果你进行提交,就可以跟踪它们(使用v2.0-fixes
分支),你可以像往常一样工作.如果您只想查看v2.0
代码,那么您所做的事情并没有"错误" .但是,如果您要在其中进行任何想要跟踪的更改,则需要一个分支.
你应该花一些时间来理解整个GAG的DAG模型.它非常简单,所有命令都非常清晰.
归档时间: |
|
查看次数: |
115669 次 |
最近记录: |