我已经在Subversion(我猜通用存储库)讨论中看到了很多这样的话.在过去的几年里,我一直在为我的项目使用SVN,但我从未掌握过这些目录的完整概念.
他们的意思是什么?
当我签出远程git标签时使用这样的命令:
git checkout -b local_branch_name origin/remote_tag_name
Run Code Online (Sandbox Code Playgroud)
我得到这样的错误:
error: pathspec `origin/remote_tag_name` did not match any file(s) known to git.
Run Code Online (Sandbox Code Playgroud)
当我使用git tag命令时,我可以找到remote_tag_name.
哪个是存储源代码版本的系统的正确名称,如SVN或TFS?
我一直称它为源代码控制,但像维基百科这样的地方称它为版本控制?
为了使像这样的更复杂的网站有两个标签?
我有一个只有一个分支(master)的存储库.我是我的回购的唯一贡献者.
我最近添加了一个tag,本地和推送到GitHub.在做了我最后一次必要的提交后,但现在我意识到我应该再做一次更改/提交.
所以我拥有的是:
commit 124
commit 125
commit 126 <-- tag v1.0
commit 127
Run Code Online (Sandbox Code Playgroud)
我想将v1.0标记移动到下一个提交,即:127,本地和GitHub.
我怎样才能做到这一点?
说我做以下事情:
Xt(分支X)X标签会发生什么t?它刚刚漂浮在那里吗?它被认为是垃圾吗?
在删除分支本身之前,是否应该删除指向分支的所有标记?
Git使用两种主要类型的标签:轻量级和注释.轻量级标记非常类似于不会更改的分支 - 它只是指向特定提交的指针.
据我所知,术语"分支"(用Git的说法)可能指的是相关但不同的东西:
但是,我已经看到这个术语过去常常是指三种可能的用法以外的东西(下面有更多细节).在Git上下文中,我的列表中缺少的"分支"一词是否还有其他有效和明确的用法?
使用Git大约一年后,我正在为CS学生准备一个简短的教程.我真的想要确定Git术语,以避免任何混淆.
当然,我现在已经使用Git分支了一段时间; 我很习惯使用它们并且发现Git分支模型很棒.但是,我仍然发现术语"分支"有问题且含糊不清,因为它似乎至少引用了两个不同的东西,具体取决于它所使用的上下文...有时甚至在同一个教程/手册中.
Pro Git书(3.1中 - 分支是什么),在显示下图后,

继续将分支定义为
只是一个指向其中一个提交的轻量级可移动指针.
据我所知,这也是Git手册页中"分支"的含义.
我对这个定义非常满意.我认为分支只是指向DAG中特定提交的引用,而分支的"提示提交"是该引用指向的提交.到现在为止还挺好.可是等等...
该Atlassian的Git的教程介绍分支如下:
分支代表独立的发展路线.
我猜他们的意思是一串提交.让我改进一下这个想法......唯一对我有意义的解释是术语"分支"也可以指存储库的提交DAG的子图,该提交DAG由所考虑的提示提交可到达的所有提交组成.
但是,Pro Git书籍也包含以下图表(参见3.4 - 分支工作流程),

这似乎与我的解释相矛盾,因为它似乎暗示只有提交C2- C5(不C1)属于develop分支,并且只提交C6- C7(不是C1- C5)属于topic分支.
我发现这种用法含糊不清,因为如果我在那个阶段绘制DAG,而不知道分支引用在过去指向的位置,并且没有任何假设三个分支之间的任何层次结构,我会得到的是

我还发现其他Git学习资源中的一些图表令人困惑.特别考虑以下内容(取自Lynda.com的介绍视频- Git Essential Training):

这里,尖端master是实际 534de(和HEAD指向master),但图中的"主"标签的位置是非常误导.在这种情况下,该标签应该描述的是我不清楚的......
编辑:我已经 …
可能重复:
git中标记和分支之间有什么区别?
我想做的是为我的代码的不同版本创建检查点.所以,一旦我做了一堆提交,我想说,"好的,在代码的这一点,这是完成版本0.1".然后我可以做更多的提交并再次做,并说,"好的,这一点是0.2完成".
我知道如何制作一个分支和一个标签......我只是不明白其中的区别,哪一个会做我想要的;)
谢谢
我从https://github.com/eclipse/mosquitto克隆了mosquitto repo .它包含一个标签v1.4.9.然而,它看起来不像是在一个分支上.
怎么会发生这种情况?作者是否真的在自己的仓库中保留了一个分支,但只将标签从该分支推送到github?或者他只是提交标签?
我把标签变成了一个本地分支:
$ git checkout -b work149 v1.4.9
Run Code Online (Sandbox Code Playgroud)
并查看了分支上的最后一次提交:
$ git log -1
commit 91bfd82491f90e24b6fe9c036f0b04a1f5c14a89
Merge: bf959ef 2d0af73
Author: Roger A. Light <roger@atchoo.org>
Date: Thu Jun 2 22:05:34 2016 +0100
Merge branch 'fixes'
Run Code Online (Sandbox Code Playgroud)
此提交不仅仅是fixes分支.
或者git log --graph我可以看到同一分支上的早期提交(不是fixes分支,而是我试图理解的分支):
* | commit bf959ef9b0ae0e4d74bf80158ffb0b7c69da533d
|\ \ Merge: 646e0a0 5cca6b4
| |/ Author: Roger A. Light <roger@atchoo.org>
| | Date: Sun Feb 14 14:38:42 2016 +0000
| |
| | Merge …Run Code Online (Sandbox Code Playgroud) 我是Git hub的新手,我对标签和分支的概念感到困惑(这里解释)我想从git hub获得一个稳定版的PhantomJS(版本2.1.0).但我不明白我是否应该这样做:
git checkout master
git remote add upstream https://github.com/ariya/phantomjs.git
git fetch upstream
git rebase --onto tags/2.1.0 upstream/master master
Run Code Online (Sandbox Code Playgroud)
要么
git init
git remote add -t 2.1 -f origin https://github.com/ariya/phantomjs.git
git checkout 2.1
Run Code Online (Sandbox Code Playgroud)
你能解释一下,为什么?
对于rails模板,我想在新的rails应用程序中添加特定标签的子模块.为了保持这个简单,我想避免进入子目录并在那里运行git命令.
git submodule add --branch v1.3.37 git@example.com:foo.git vendor/foo
是我想要使用的,但它不接受--branch参数的标签:
fatal: 'origin/v1.3.37' is not a commit and a branch 'v1.3.37 cannot be created from it Unable to checkout submodule 'vendor/foo'
有没有一种简单的方法在特定标签上添加git子模块?
我有几个git存储库.
对于每个项目,我需要其中的一些(标签或分支).
项目完成后,我从上次提交创建一个分支.
因为下一个项目可能会有根本性的变化,所以它们可能不再相互兼容.
但是,最好先标记提交,然后在需要之后创建一个分支(错误修复等)吗?
它甚至重要吗?
git ×9
git-branch ×4
git-tag ×4
branch ×3
github ×3
tags ×3
commit ×1
git-checkout ×1
glossary ×1
naming ×1
svn ×1
terminology ×1
trunk ×1
version ×1
versioning ×1