Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
完全或部分(单个文件)回滚git树如何?_Git - Fatal编程技术网

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

完全或部分(单个文件)回滚git树如何?,git,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-0

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

我想使用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提交)。但是,我也希望能够将特定文件回滚到出厂默认值,而其他文件保持最新状态。

要从早期提交中获取单个文件,只需从那里签出该文件即可

git checkout FACTORY_DEFAULT_COMMIT -- foobar.conf

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


在Git中,有foo.conf.In、bar.conf.In和baz.conf.In文件。签出这些文件后,就可以复制到foo.conf、bar.conf和baz.conf。这些文件在.gitignore中被显式忽略(或者,如果所有.conf文件都以相同的方式运行,则可以忽略所有的.conf文件)。如果您想更新“工厂默认值”,您需要对foo.conf.in等进行更改,然后提交它们。否则,回滚只需在.conf文件上重新压缩.conf.in文件。

@Tzury:它可以是任何类型的引用:分支、标记或提交。