既存のgitプロジェクトをGitLabにインポートしますか?


147

リポジトリ「ffki-startseite」を作成したGitlabインストールのアカウントを持っています

次にgit://freifunk.in-kiel.de/ffki-startseite.git、すべてのコミットとブランチを使用してリポジトリをそのリポジトリに複製し、自分のスコープで作業を開始できるようにします。

どうすればインポートできますか?


3
gitlabの新機能。プロジェクトを作成し、プロジェクトページに移動します。ここでは、基本的な手順が表示されます。
Martijn van Wezel 2017年


基本的な手順はGitlabの新しいバージョンではなくなっていますが、コピーした人はここにコピーできますか?
jdevora

回答:


156

コンピューターでローカルに実行する次のコマンドを使用して、すべてのコミット、ブランチ、タグとともにプロジェクトをgitlab に完全にエクスポートできました。

私の例を説明するために、私はgitlabにインポートするソースリポジトリとしてhttps://github.com/raveren/kintを使用します。私は事前にgitlabでKint(名前空間の下にraveren)という名前の空のプロジェクトを作成し、新しく作成されたプロジェクトのhttp git urlがhttp://gitlab.example.com/raveren/kint.gitであると教えてくれました

コマンドはOSに依存しません。

新しいディレクトリ:

git clone --mirror https://github.com/raveren/kint
cd kint.git
git remote add gitlab http://gitlab.example.com/raveren/kint.git
git push gitlab --mirror

ここで、新しいリモートで引き続き使用したいローカルに複製されたリポジトリがある場合は、次のコマンドを実行します*。

git remote remove origin
git remote add origin http://gitlab.example.com/raveren/kint.git
git fetch --all

*これは、リモートマスターの名前をから変更していないことを前提としていますorigin。それ以外の場合は、最初の2行を変更して反映させます。


1
それは私にエラーを与えます:リモート:GitLab:このプロジェクトの保護されたブランチにコードを強制的にプッシュすることは許可されていません。10.0.100.89:8496/project/james-project.git ![リモート拒否]マスター->マスター(事前受信フックは拒否されました)
James Hirschorn

4
これを機能させるには、設定->リポジトリで保護されたブランチをオフにする必要がありました。
James Hirschorn、

--mirror
Martijn van Wezel

108

新しいgitlabリモートを既存のリポジトリに追加してプッシュします。

git remote add gitlab url-to-gitlab-repo
git push gitlab master

私は力でそれをプッシュしなければなりませんでした、なぜなら私はすでにgitLabをいじっていたからです:git push gitlab master -f。今私は新しいGitLabですべてのコミットを含むリポジトリ全体を持っています;)ありがとう
rubo77

19
あなたは鏡を作る必要はないでしょうか?マスター以外のブランチがある場合はどうなりますか?
slhck 2014年

7
はい、OPが提案するように実行すると、すべてのブランチ(マスターを除く)とタグ
raveren

Gitlabプロジェクトのインポートは、プロジェクトを作成するときに、URLからリモートリポジトリを読み込みます。SVNリポジトリをインポートするための手順が含まれています。
rickfoosusa 2015

1
git remote add gitlab url-to-gitlab-repo git push gitlab master --mirror
Saurabh

23

すべてのタグとブランチを保持するには

単にこのコマンドを existing Git repository

cd existing_repo
git remote rename origin previous-hosts
git remote add gitlab git@git.hutber.com:hutber/kindred.com.git
git push -u gitlab --all
git push -u gitlab --tags

すべてのブランチをコピーしない
Martijn van Wezel

19

Gitlabが提供する手順は次のとおりです。

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.example.com/rmishra/demoapp.git
git push -u origin --all
git push -u origin --tags

これはマスターのみをプッシュし、他のブランチはプッシュしません
アルケナン

18

これは、1つのリポジトリを新しい場所に移動する基本的な方法です。私はいつもこのシーケンスを使います。--bare 何のソースファイルが見られないことでしょう。

Git Bashを開きます。
リポジトリのベアクローンを作成します。

git clone --bare https://github.com/exampleuser/old-repository.git

新しいリポジトリにミラープッシュします。

cd old-repository.git

git push --mirror https://github.com/exampleuser/new-repository.git

手順1で作成した一時的なローカルリポジトリを削除します。

cd ../
rm -rf old-repository.git

なぜ鏡?gitのドキュメントを参照してください:https : //git-scm.com/docs/git-push

--allすべてのブランチをプッシュします(つまり、refs / heads /の下のrefs)。他では使用できません。

--mirrorプッシュする各参照に名前を付ける代わりに、refs /(refs / heads /、refs / remotes /、およびrefs / tags /を含むがこれらに限定されない)の下のすべての参照をリモートリポジトリにミラーリングすることを指定します。新しく作成されたローカル参照はリモートエンドにプッシュされ、ローカルで更新された参照はリモートエンドで強制的に更新され、削除された参照はリモートエンドから削除されます。これは、設定オプションremote..mirrorが設定されている場合のデフォルトです。


gitlabでも動作します!
タオル

12

rake gitlab:import:reposは大量インポートに適した方法です:

  • repos_path/home/git/repositories/group/repo.git)にある裸のリポジトリをコピーします。ディレクトリ名は、末尾が.gitグループまたはユーザーのネームスペースである必要があります。
  • 走る bundle exec rake gitlab:import:repos

所有者が最初の管理者になり、まだ存在しない場合はグループが作成されます。

参照:既存の裸のgitリポジトリをGitlabにインポートする方法?


混乱するかもしれませんが、ベアリポジトリは通常、集中管理された場所(githubなど)に配置されたリポジトリであり、リポジトリのルートに.gitフォルダーが含まれていません。これは、ベアリポジトリが保存されているサーバーにアクセスできる場合にのみ便利なオプションです。それ以外の場合は、@ Raverenによる回答が最適です。
TinkerTenorSoftwareGuy

4
git clone --mirror git@github.com:username/repo-name.git

git remote add gitlab ssh://git@servername.com/username/repo.git

git push -f --tags gitlab refs/heads/*:refs/heads/*

ssh経由で実行することをお勧めします。httpsが機能しない場合があります


「httpsが機能しない可能性があります」これは通常問題ではありません
Martijn van Wezel

これは実際にはHTTP接続が無効になっている可能性があるためです。答えてくれてありがとう。
ミカ

2

問題、プルリクエストWiki、マイルストーン、ラベル、リリースノート、コメントを含むGitHubからGitLabへのプロジェクトの移動

GitLab Docsには完全な指示があります:

https://docs.gitlab.com/ee/user/project/import/github.html

tl; dr

  • GitLabユーザーにマップするGitHubユーザーが次のいずれかを持っていることを確認します。

    • GitHubアイコンを使用してログインしたGitLabアカウント-または-
    • GitHubユーザーのパブリックメールアドレスと一致するメールアドレスを持つGitLabアカウント
  • 上部のナビゲーションバーで[+]をクリックし、[新しいプロジェクト]を選択します。

  • [プロジェクトのインポート]タブを選択してから、[GitHub]を選択します。
  • 最初のボタンを選択して、GitHubリポジトリを一覧表示します。GitLabアプリケーションを認証するためにgithub.comのページにリダイレクトされます。
  • gitlabhqを承認をクリックします。GitLabのインポートページにリダイレクトされ、すべてのGitHubリポジトリが一覧表示されます。
  • インポートするリポジトリの選択に進みます。

しかし、詳細とフックについてはGitLab Docsページを読んでください!

(あまりない)


1

Gitlabはこの機能に少しバグがあります。プロジェクトが大規模である場合、トラブルシューティングを行うために多くの時間を失う可能性があります。

最善の解決策は、作成/インポートツールを使用することです。ユーザー名とパスワードを入力することを忘れないでください。そうしないと、何もインポートされません。

スクリーンショットをたどる

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.