在git中,保存不同版本快照的最佳方法是什么?

时间:2011-12-23 06:41:01

标签: git version-control

使用git存储库,有分支v1.0到v1.6。

喜欢将每个版本的最新版本保存在自己的目录中:

/dev
  /.git
/good-stuff
  /v1.0
  ...
  /v1.6

这样做的最佳方式是什么?

有没有办法在提交分支时重新创建快照?

linux服务器。考虑一个shell脚本,调用git checkout后跟rsync来移动文件。但我认为必须有更好的方法。

注意:当应该说“分支”时使用“tag” - mea culpa

2 个答案:

答案 0 :(得分:3)

你要求的是Subversion中的惯用语,而不是Git。在Git中,您的树可能如此:

dev/
  good-stuff/

dev /下还有一个.git /目录,但它实际上是存储库本身,而不是项目的一部分。

您可以执行一些更改,提交它们并将它们标记为v1.0,然后提交进一步的更改并将其标记为v1.6。但在任何时候,您的树都会反映项目的状态,而不是标签的集合。例如:

$ git add one.o
$ git commit -m"one point oh"
$ git tag v1.0
$ git rm one.o
$ git add hex
$ git ci -m"new version coming up"
$ git tag v1.6

现在,v1.0看起来像这样:

dev/
  good-stuff/
  one.o

和v1.6看起来像这样:

dev/
  good-stuff/
  hex

要恢复标记为v1.0的快照,请查看代码:

$ git checkout v1.0

答案 1 :(得分:2)

标签真的不应该更新。它们应该是历史上的固定点。如果你要进行不断的更改,你应该使用一个分支。如果你这样做,就没有必要把文件夹放在git之外了(如果你考虑的话,有点会破坏vcs的目的)。

如果您必须拥有这些文件夹,则可以设置一个post commit hook来执行此操作。由于您没有列出有关您的平台的任何信息,因此我无法进一步了解详情。