1

git リビジョンニング用のプロジェクトをセットアップする必要があります。プロジェクト チームは、現在 200 以上の番号付きビルドのうち約 40 のバックアップ スナップショットを保持しています。それを新しいgitレポに持ち込む最も効率的な方法は何ですか?

私の考えは明らかです。最も古いバックアップを使用してレポを初期化し、40 個のスナップショットを 1 つずつ見ていきます。

  • リポジトリよりも新しいスナップショット内のファイルを見つける
  • それらのファイルを改訂中のプロジェクトに移動します
  • 変更をコミットする

もっと賢いものはありますか?

FWIW、これは Xcode 3 を使用した C++ Mac プロジェクトであり、後の段階で Visual Studio 2008 を使用して Windows バージョンを追加しました。すべてのソース コードは、Mac バージョンと PC バージョンの間で同期が保たれています。

4

3 に答える 3

2

Git は (事実上) すべてのリビジョンの完全なソース ツリーを保存します。コミット間に違いがある場合、それらの完全なコピーからそれを把握します。作業コピーの特定の操作には依存しません。

他の人がすでに書いているように、作業コピーを吹き飛ばし、次のスナップショットをそこに展開して、git add -A && git commit. それ以上複雑なことをする必要はありません。


ヒント: bash で作業コピーを吹き飛ばす:

( shopt -s extglob dotglob ; rm -r !(.git*) )
于 2010-06-20T14:58:37.057 に答える
1

バックアップに連続番号を付けることができれば、非常に簡単になります。それらをループし、コミットし、バージョンでタグ付けするスクリプトを作成します。VCS がセットアップされていない、引き継いだプロジェクトに対してこれを行いました。

于 2010-06-20T14:08:10.167 に答える
0

コメントで述べたように、あるディレクトリを別のディレクトリに置き換えて、結合することができます。git -A

  • " git add ." は、作業ツリーを見て、ステージングされた変更が変更されているか、新しくて無視されていない場合、それらすべてのパスを追加しますが、'rm' アクションはステージングしません。
  • 「git add -u」は、現在追跡されているすべてのファイルを調べ、それらのファイルが異なるか削除されている場合は、それらのファイルへの変更をステージングします。新しいファイルを追加するのではなく、既に追跡されているファイルへの変更をステージングするだけです。

実際には、40 の異なるディレクトリがある場合、GIT_DIRおよびGIT_WORK_TREE環境変数を指定すると、それぞれのディレクトリでそのコマンドを実行できます。
コマンドラインで直接指定できることを除いて( GIT_WORK_TREE40回変更されるため、より便利です)

必要な場所 (/path/to/my/repo) で git リポジトリを初期化し、次のように 40 git add を作成します。

git add -A --git-dir=/path/to/my/repo --work-tree=.
于 2010-06-20T13:40:18.917 に答える