完全な履歴を保持して Git リポジトリを別のプロジェクトに移動する

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022

Git ロゴ

複数の Azure DevOps プロジェクトを 1 つに統合する場合は、すべてのリポジトリで何をすべきか疑問に思うでしょう。

  • プロジェクトを移動するか、マージする必要がありますか?
  • 履歴を保持するか、最新のプロジェクトだけを保持する必要がありますか?

[前提条件]

カテゴリ Requirements
プロジェクトへのアクセス権 プロジェクトのメンバー。
アクセス許可 - プライベート プロジェクトのコードを表示する: 少なくとも Basic アクセス。
- プライベート プロジェクトのコードを複製または投稿する: 共同作成者セキュリティ グループのメンバー、またはプロジェクト内の対応するアクセス許可。
- ブランチまたはリポジトリのアクセス許可を設定する: 管理アクセス許可 は、ブランチまたはリポジトリのアクセス許可です。
- 既定のブランチを変更する: 編集ポリシー はリポジトリのアクセス許可です。
- リポジトリをインポートする: プロジェクト管理者 セキュリティ グループのメンバーまたは Git プロジェクト レベルの [リポジトリ の作成 ] アクセス許可が [許可] に設定されています。 詳細については、「 Git リポジトリのアクセス許可を設定する」を参照してください。
サービス リポジトリが有効になっています
ツール Optional. az reposコマンドを使用する: Azure DevOps CLI

パブリック プロジェクトでは、 利害関係者 アクセス権を持つユーザーは、コードの表示、複製、投稿など、Azure Repos へのフル アクセス権を持ちます。

カテゴリ Requirements
プロジェクトへのアクセス権 プロジェクトのメンバー。
アクセス許可 - コードの表示: 基本 アクセスが最低限必要です。
- コードの複製または投稿: 共同作成者 セキュリティ グループのメンバー、またはプロジェクト内の対応するアクセス許可。
サービス リポジトリが有効になっています

シナリオは何ですか?

次に示すように、 MigrationDemo リポジトリを FabrikamOld から新しい Fabrikam チーム プロジェクトに移動する必要があります。

移動リポジトリのシナリオを示すスクリーンショット。

移動方法

移動には、次の 2 つのオプションがあります。 インポート機能は簡単ですが、Azure DevOps Services と Team Foundation Server 2017 Update 1 以降でのみ使用できます。

Git リポジトリのインポート機能を使用する

リポジトリのインポート機能を使用すると、Team Foundation Server、Azure Repos、または GitHub などの他の Git ソース コード プロバイダーから、Git リポジトリをチーム プロジェクトにインポートできます。 詳細については、「 Git リポジトリをプロジェクトにインポートする」を参照してください。

Git リポジトリを手動で移行する

空の Git リポジトリを作成する

CODE エクスプローラーで、リポジトリ名を選択します。 一覧から [新しいリポジトリ ] を選択し、種類として [Git ] を選択し、名前を付けます。

新しいリポジトリの作成を示すスクリーンショット。

リポジトリが作成されると、開始に役立つ詳細な手順が表示されます。 複製 URL をクリップボードにコピーします。

新しいリポジトリ情報を追加するペインを示すスクリーンショット。

Important

別のプロジェクト コレクションまたは外部の Git リポジトリからインポートする予定の場合は、[ コミット コメント] オプションに記載されている作業項目のリンクを自動的に作成 するオプションをオフにします。 それ以外の場合、Azure DevOps は、コミットをチーム プロジェクト コレクション内の関連のないチーム プロジェクトの既存の作業項目に関連付けます。

新しいリポジトリ オプションを示すスクリーンショット。

リポジトリをミラー化する

開発者コマンド プロンプトに切り替え、MigrationDemoFabrikamOld リポジトリのローカル (ソース) リポジトリへのパスを指定します。 複製 URL を使用して git clone --mirror コマンドを実行します。 コマンド ラインが git clone --mirror https://demo-fabrikam.visualstudio.com/DefaultCollection/Fabrikam/_git/MigrationDemo

リモート リポジトリがベアであるため、この場合、 clone --mirror コマンドは冗長です。 これは、リモートを設定するための安全で簡単な方法としてここで使用されます。

Git クローン コマンドが完了したことを示すスクリーンショット。

リポジトリをプッシュする

git push コマンドを実行して、ローカルの変更をリモート (ターゲット) リポジトリにプッシュします。

Git プッシュ コマンドが完了したことを示すスクリーンショット。

--mirror オプションは、複製コマンドとプッシュ コマンドの両方で使用されます。 このオプションを使用すると、すべてのブランチとその他の属性が新しいリポジトリにレプリケートされます。

新しいリポジトリを検証する

Azure DevOps Web ポータルに切り替え、新しいリポジトリと CODE ハブの履歴を検証します。

CODE Explorer でのリポジトリの検証を示すスクリーンショット。

すべてのブランチが新しいリポジトリに移動されたことを確認します。

新しいリポジトリを構成する

新しいリポジトリに対してアクセス許可とポリシーが正しく構成されていることを確認します。 空の Git リポジトリを作成した後、またはこの段階でセキュリティを構成できます。 新しいリポジトリに接続するようにビルドを再構成します。 最後に、Visual Studio でリモートを更新するか、 git remote set-url origin コマンドを実行して、元のリポジトリをユーザーに通知します。

> git remote set-url origin https://demo-fabrikam.visualstudio.com/DefaultCollection/Fabrikam/_git/MigrationDemo

Important

リポジトリを削除するか (元に戻さないように注意してください)、または誰も誤って更新し続けないようにブランチをロックして、元のプロジェクトをクリーンアップすることを忘れないでください。

チーム プロジェクト コレクションとチーム プロジェクトの計画の詳細については、「 TFS の計画、ディザスター 回避と回復、および Azure IaaS ガイドの TFS」を参照してください。