2012-01-01 12 views
3

バックエンドでgitを使用するプロジェクト管理アプリケーションを考えてみましょう。プロジェクト全体を前のコミットに切り替える

新しいバージョンは常にgit add .とその後にgit commitを使用して作成されます。

評価目的のために、ディレクトリの内容が指定されたコミットに戻されるような方法で、古いバージョンのプロジェクトを保存する方法が必要です。また、評価後、内容を元に戻す必要があります最新バージョンへ。

これはどのように達成できますか?

追加情報(必要ない場合があります):php、リモートサーバー、およびネットワーク経由で実行される学術プロジェクトを格納するWebアプリケーションです。

+0

これは「Gitの元に戻す」とは全く関係ありません、実際にタグ付けされるべきではありません。 gitの 'revert'は、以前に適用されたコミットを元に戻すコミットを適用することを意味します。 –

答えて

8

gitの基本機能の1つ:git checkoutです。

$ git checkout branch_or_tag_name 

このブランチまたはタグに一致する作業ディレクトリを変更します。

$ git checkout commit_hash 

現在のディレクトリに、そのコミットが発生したときのリポジトリの状態が反映されます。 (これを行うと慎重に "分離ヘッド"モードになります。その状態のファイルは変更しないでください)

この「評価」専用のブランチを作成してチェックアウトすることもできます

$ git checkout -b evaluation commit_hash 

完了したら、以前に行ったブランチをチェックアウトするだけで、作業ディレクトリが更新されます。

$ git checkout master # or whatever your main branch is. 

(そしておそらくgit branch -d evaluationあなたはもうその必要がない場合。)

3

あなたが作業ディレクトリよりも別のディレクトリ内のファイルを持っているしたい場合は、別の解決策は、だろうが、git archiveを使用します。

まず、git branchであなたの参照を作成します(任意の支店がgitの中で実際に存在していない、彼らは参照文献と呼ばれ、ポイント、その背後にあるすべての歴史にコミットし、これまで):

git branch oldversion <refspec> 

参照してください。 refspecが何であるかについてはgit help branchです(SHA1、別のrefspecなどからの相対 "パス")。

git archive oldversion | tar xvf - -C /path/to/oldstuff 

例:私は、最新のLinuxカーネルのすべての時間を使用し

その後、あなたは古いファイルになりたいディレクトリを作成し、プロジェクトディレクトリからgitのアーカイブを使用する(のがそれ/path/to/oldstuffを呼びましょう) Git KHの安定したツリーを加えたgitリポジトリを持っています。私はそれをコンパイルするために、最新の安定ツリーの木を持っているしたい場合は、ここで私は(ここでは、安定版カーネル3.1.6のために)何をすべきかです:

$ cd /usr/src/linux-git 
$ su 
# git archive --prefix=linux-3.1.6/ v3.1.6 | tar xvf - -C ../ 
+0

は 'git archive'に+1しました。十分な愛を得ることができない偉大なgitコマンド – lhagemann

関連する問題