回滚一个git树,完全或部分(单个文件)如何?

时间:2011-01-05 04:44:57

标签: git

在给定的服务器上,我有一组守护进程,每个守护进程都有自己的配置文件。

我想使用git来管理配置文件的编辑,并始终可以选择回滚到所有文件或特定文件的“出厂默认值”。

例如,给定以下结构:

$ ls -l
total 0
-rw-r--r-- 1 tzury tzury 0 2011-01-05 06:36 bar.conf
-rw-r--r-- 1 tzury tzury 0 2011-01-05 06:36 baz.conf
-rw-r--r-- 1 tzury tzury 0 2011-01-05 06:36 foo.conf

假设所有这些.conf文件都存储在git存储库中,我希望能够将所有文件恢复为原始形状(这将是第一个git提交)。然而,我还希望能够将特定文件回滚到出厂默认值,而其他文件保持最新。

2 个答案:

答案 0 :(得分:1)

要从早期提交中获取单个文件,只需从该处检出该文件。

git checkout FACTORY_DEFAULT_COMMIT -- foobar.conf

答案 1 :(得分:0)

通常我所做的是将原型配置文件存储在Git中,但不被任何程序使用。签出原型后,然后复制它们,副本将成为实际的配置文件,可以针对特定的签出对其进行编辑和自定义。应保留的任何更改也将对原型进行并相应地进行。副本位于.gitignore中,永远不会受版本控制。

在Git中,你有文件foo.conf.in,bar.conf.in和baz.conf.in.检查完这些后,您可以复制到foo.conf,bar.conf和baz.conf。这些文件在.gitignore中被明确忽略(或者如果所有.conf文件都以相同的方式运行,则可以忽略它们)。如果要更新“出厂默认值”,则需要对foo.conf.in等进行更改,然后提交它们。否则,回滚是一个简单的问题,即通过.conf文件重新复制.conf.in文件。