Gitブランチを独自のリポジトリに移動するにはどうすればよいですか?


180

別のGitリポジトリに移動したいブランチがあり、そのブランチの履歴をプロセスに理想的に保持します。これまで私はを見てきましたがgit filter-branch、自分のやりたいことがそれでできるかどうかわかりません。

Gitブランチを独自のリポジトリに抽出するにはどうすればよいですか?

回答:


280

ブランチを新しいリポジトリにプッシュするだけです。その歴史のすべてはそれで行くでしょう。次に、元のリポジトリからブランチを削除するかどうかを選択できます。

例えば

git push url://to/new/repository.git branch-to-move:new-branch-name

新しいリポジトリの場合、通常、new-branch-nameがマスターです。

新しい空のリポジトリを作成するには、を使用しgit initます。


15
誰かが不思議に思っている場合に備えて、私はURLをGitリポジトリディレクトリへのパスに置き換えましたが、それは完全に機能しました。
Aupajo

48
また、新しいリポジトリにブランチ名に名前を付けることができます: git push url://to/new/repository.git branch-to-move:new-branch-name
イヴ・ヴァンBroekhoven

4
イヴの上記のコメントは正しいです。そうでなければ、そこにマスターはいないので、クローン作成プロセスは終了しwarning: remote HEAD refers to nonexistent ref, unable to checkout.ます。すでにその段階にある場合は、そのままにしgit checkout -b branch-to-moveて安全であるか、単にgit checkout -b masterマスターブランチを持っているだけです:)
Ain Tohvri

git checkout -b master画面に表示されていた問題を解決しましたerror: src refspec master does not match any.(私がいた支店名が表示されなかったのはなぜかと思っただけです)。ありがとう
kangkyu

2
この回答があなたにとっても混乱を招く場合、私がそれを機能させるために私がそれを理解した方法は次のとおりです。1)端末で、新しいリポジトリに作成したいリポジトリとブランチを含むディレクトリにいる 2)urlgit@github.com:brianzelip / groceries.gitのようなgitのURLである必要があります。3)branch-to-move新しいレポにしたい現在のレポのブランチです。4)new-branch-nameは、作成される新しいリポジトリの新しいブランチに付ける名前ですmaster。つまり、です。
Brian Zelip 2018年

19

これはすべてのブランチの履歴を保持しますが、特に1つのブランチへのコピーポイントを作成します。

git clone -b newbranch CurrentRepo NewRepo

これは何も「移動」せず、コピーを作成するだけです。


2
それclone -bは新しいことに注目する価値があります。git> = 1.6.5(2009年10月リリース)が必要です。
CBベイリー

これを機能させるのに苦労しましたが、それはCharles Baileyからのメッセージを見る前でした。
Aupajo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.