他のGitサーバからリポジトリをインポートする方法

本記事では、Gitリポジトリを他のサーバにインポートする方法を解説します。
Windowsの場合、コマンドラインの操作はサーバ側・クライアント側共に全てGit Bashで行います。

既存のリポジトリからベアリポジトリを作成する

まず、既存のリポジトリからベアリポジトリを作成(クローン)します。

ローカルにあるリポジトリからベアリポジトリを作成する

この場合、リモートにプッシュしていないコミットもクローンに含まれます。

git clone --bare <リポジトリ名> <新しいリポジトリ名>.git

# 例
git clone --bare localrepo localrepo.git

<新しいリポジトリ名>.gitを省略した場合は<リポジトリ名>.gitとなります。

外部リポジトリからベアリポジトリを作成する

  • Local プロトコルから作成
    git clone --bare //repos/<リポジトリ名> <新しいリポジトリ名>.git
    
    # 例
    git clone --bare //repos/repo.git repo.git
    
  • HTTP プロトコルから作成
    git clone --bare <リモートURL> <新しいリポジトリ名>.git
    
    # 例
    git clone --bare http://git-server/repo.git repo.git
    

<新しいリポジトリ名>.gitを省略した場合は<リポジトリ名>がそのまま使われます。

作成したベアリポジトリをインポートする

直接サーバのディレクトリに配置する場合

  1. クローンしたベアリポジトリをGitサーバにコピーする
  2. コピーしたディレクトリ内で次のコマンドを実行する
    git config http.receivepack true
    

ローカルからクローンしたリポジトリをプッシュする場合

  1. Gitサーバに新しいリポジトリ(ベアリポジトリ)を作成する
    (ここではnew-repository.gitとする)
    $ mkdir new-repository.git
    $ cd new-repository.git
    $ git init --bare --shared
    
    Local プロトコルの場合はクライアントから次のようなコマンドで作成できる
    $ mkdir //repos/new-repository.git
    $ cd //repos/new-repository.git
    $ git init --bare --shared
    
  2. クローンしたベアリポジトリのディレクトリから、次のコマンドを実行する
    • Local プロトコル
      git push --mirror //repos/new-repository.git
      
    • HTTP プロトコル
      git push --mirror <リモートURL>
      
      # 例
      git push --mirror http://git-server:8022/new-repository.git
      
    ここで403エラーが発生した場合は、Gitサーバ上のディレクトリで次のコマンドを実行するとうまくいきました。
    git config http.receivepack true
  3. 最後にローカルに作成していたベアリポジトリを削除する
    rm -rf <新しいリポジトリ名>.git
    
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

スポンサードリンク

関連コンテンツ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です