我有约20次提交的git存储库。我知道如何克隆与实际承诺git clone,
- 但是我如何“克隆”旧的提交?
- 是否有一个非常好的git-GUI(imho
qgit不是一个好的GUI)? - “分支机构”到底是什么?
- 当我想发布0.1、0.2等时,在git中标记这些提交的最佳方法是什么?
- svn和有什么不一样?
Answers:
git存储库始终包含所有历史记录。
因此,当您克隆存储库时,将使用其完整的历史记录对其进行克隆,然后,您可以从所需的任何提交中进行分支:
$ git checkout -b aNewBranch SHA1
SHA1代表您要继续执行的提交ID。
Git中的分支只是一种跟踪DAG(有向非循环图)的路径的方法,该DAG是表示Git存储库历史的一组提交。
它只是您分配给其中一个提交的指针,并且它将随着每个新的提交而移动。

有关更多信息,请参见Pro Git书。
您可以使用标记来标记特定的提交,该标记就像分支一样,仅仅是一个指针,但是是一个不变的指针(当您进行新的提交时,它不会移动)。
您最好使用带注释的标签,这些标签将作为完整对象存储在Git数据库中。它们是校验和;包含标记名称,电子邮件和日期;带有标记消息;并可以使用GNU Privacy Guard(GPG)进行签名和验证。
Git Wiki上InterfacesFrontendsAndTools页面的“图形界面”部分列出了当前Git的各种GUI。
您将看到许多有关Git和SVN区别的问题:例如,请参阅我的答案(或该答案)。
关于Git和SVN之间的根本区别,我最完整的答案是:
“两者中哪个更好:git或SVN”。
git checkout SHA1,以及以后如果您决定保留它:git checkout -b aNewBranch
这篇文章中有几个问题,这是我对一些答案的看法:
首先,要“克隆”先前的提交,您可以执行以下操作:
git clone REPO_URL
git checkout HEAD~1 // checks out the last commit's first parent
使用~1访问最后一次提交的第一父,并增加数量来获得父母的父母等。有关波浪号和插入符号的更多信息。
上面的两个命令将使您处于分离的HEAD状态,根据上下文,该状态可能不重要。例如,克隆是作为部署脚本的一部分,而您关心的只是访问先前的提交(例如,作为回滚策略的一部分),这并不重要。
如果您需要从历史的这一点开始工作,可以运行
git checkout -b NEW_BRANCH_NAME
好的git GUI?对我来说SourceTree是最好的。
什么是分支机构?用我自己的话说,分支只是枢纽的一种非常简单的方法。假设您正在一个分支上工作,master并且想尝试一个实验。简单,公正git checkout -b experiment,您很快就可以安全地摔碎东西。
git和svn有什么区别?
git是一个分布式版本控制系统。svn不是。同样,分支(如上所述)在git中更容易。
对于标记,我不知道是否存在“一种真实的方式”(有没有?),而只是探索git tag命令。git的一大优点是,在本地计算机(或任何位置)上克隆仓库的副本并进行所需的操作,看看会发生什么是多么容易。如果您搞砸了,只需删除目录即可。因此,您可以git tag在一些测试目录中进行试验,看看自己喜欢什么。