使用git存储库,有分支v1.0到v1.6。
喜欢将每个版本的最新版本保存在自己的目录中:
/dev
/.git
/good-stuff
/v1.0
...
/v1.6
这样做的最佳方式是什么?
有没有办法在提交分支时重新创建快照?
linux服务器。考虑一个shell脚本,调用git checkout
后跟rsync
来移动文件。但我认为必须有更好的方法。
注意:当应该说“分支”时使用“tag” - mea culpa
答案 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来执行此操作。由于您没有列出有关您的平台的任何信息,因此我无法进一步了解详情。