0

特定のコミットでリポジトリから浅いクローンのすべてのファイルを抽出しようとしています。既存のリポジトリの HEAD に影響を与えずに、これらのファイルを別の場所に抽出したいと考えています。

これは、これらのファイルを取得するために実行しているコマンドです...

git --git-dir="C:\temp\repository" --work-tree="C:\temp\files" checkout -f "e2f4b8cf188c87db6a11c6f421b06f701dd6b07b"

上記のコマンドは、必要なファイルを抽出するために機能しますが、私の問題は、これによりリポジトリに切り離された HEAD が残ることです。

これらのファイルを抽出する最良の方法は何ですか?

重複の可能性:特定のコミットを深さ 1 で浅く複製する方法は?

明確化のための編集:

  • このリポジトリにコミットする自動プロセスがあります。(これがHEADを切り離したくない理由です)
  • 特定の時点からリポジトリからすべてのファイルを抽出したい。(私はコミットIDを知っています)
  • これらのファイルを別の場所に抽出したいと考えています。
4

2 に答える 2

2

私はあなたが何を望んでいるのかを正確に伝えるのに苦労しているので、コミット時またはコミット時にリポジトリの状態を取得するためのいくつかの方法があります。コミットが1234abcd

1)リポジトリの状態を表示する2つの方法1234abcd

git checkout 1234abcd ;# 'detached HEAD' state; just don't commit new work    
git reset --hard 1234abcd ;# fully reset to the commit, abandon uncommitted work

2)リポジトリの状態を次の場所で圧縮します。1234abcd

git archive -o myfile.zip 1234abcd ;# zip up into 'myfile.zip'

3)からメールパッチを作成します1234abcd

git format-patch -M 1 1233abcd

4)再利用できるようにgitパッチ形式を出力します(たとえばgit apply、の出力を読み取りgit diff、後者を前者にパイプできます)

git diff 1234abcd 1234abcd~1 | git apply ;# create and reapply the patch to the index
git diff 1234abcd 1234abcd~1 > outfile.txt ;# redirect it to an outfile
于 2012-09-12T12:47:27.213 に答える
0

他のレポからブランチをフェッチし (プルしないでください。つまり、ブランチをマージしないでください)、他のブランチからコミットをチェリーピックします。これにより、その特定の変更が現在のブランチに適用され、完全な履歴でコミットされます。

Git Cherry Pick の詳細: http://git-scm.com/docs/git-cherry-pick

于 2012-09-12T07:36:33.527 に答える