2011-01-05 3 views
0

特定のサーバーでは、それぞれ独自の構成ファイルを持つ一連のデーモンがあります。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コミット)。それでも、特定のファイルを工場出荷時のデフォルトにロールバックすることができますが、最新のものは残しておくことができます。

答えて

1

前のコミットから1つのファイルを取得するには、そこからファイルをチェックアウトするだけです。

git checkout FACTORY_DEFAULT_COMMIT -- foobar.conf 
+0

FACTORY_DEFAULT_COMMITはブランチです。 –

+1

@ Tzury:参照のタイプは、ブランチ、タグ、コミットのいずれのタイプでもかまいません。 –

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ファイルを再コピーするだけで簡単にロールバックできます。

関連する問題