masterおよびnew-projectブランチがあります。そして今、私は新しいプロジェクトブランチに基づいたマスターで真新しいリポジトリを作成したいと思います。
背景:3つの独立したアプリケーションを含む1つのリポジトリがあります。このようには始まっていませんでした。元々、レポには1つのアプリしかありませんでした。しかし、時間の経過とともに、ビジネスニーズは変化しました。 1つのアプリが2つになりました(レガシーバージョンと書き換え)。Webサービスが追加されました。 3つのプロジェクトを含めるために、別々のブランチが使用されました。ただし、コードを共有しません。したがって、それらを独自のリポジトリに分割する方が簡単です。
@ user292677のアイデアから始め、問題を解決するためにそれを改良しました。
$ git Push https://github.com/accountname/new-repo.git +new-project:master
新しいGithubリポジトリが完成しました。結果は次のとおりです。
master
は、古いレポのnew-projectに対応します。実際、この方法を使用することで、選択したブランチを選択して新しいリポジトリを作成し、必要に応じて名前を変更できることがわかりました。
$ git Push [email protected]:accountname/new_repo +new-project:master +site3a:Rails3
その結果、既存のsite3aブランチも新しいリポジトリに移動され、Railsとして表示されます。これは非常にうまく機能します。ネットワークダイアグラムは、新しいmasterおよびRailsを完全な履歴とともに、相互に正しい関係で示しています。
更新2013-12-07:これを別のプロジェクトで使用し、このレシピが引き続き機能することを確認しました。
2018-01-11の更新:ステップ3を更新し、httpsプロトコルにGitHub推奨を使用しました。レシピはまだ機能します。
更新:
old_branchおよび以下を含むローカルリポジトリにcdします。
$ git Push https://github.com/accountname/new_repo.git +old_branch:master
git clone -b new-project /path/to/repo /new/repo/path
編集:GitHub内で、リポジトリを「フォーク」し、クローンの[管理]タブに移動できます。 「リポジトリ名」と「可視性」の下には「ブランチのデフォルト」とドロップダウンメニューがあります。 new-project
を選択します。
再編集:設定したいmaster
ブランチであり、「デフォルト」ブランチではないことに気付きました。そう…
them/repo
をyou/repo
に複製します。git clone [email protected]:you/repo.git
を実行しますgitk
を開始します。old-master
ブランチを作成して、古いコミットが失われないようにすることができます。]new-project
ブランチで最新のコミットを見つけ、コミットメッセージを右クリックして、[ここにマスターブランチをリセットする]を選択します。 (コマンドラインでgit-reset
を使用してこれを行うこともできますが、正しい呼び出しがわかりません。)次のGitHubリポジトリへのプッシュアップは、--force
オプションを使用して行う必要がありますが、それ以外の場合は完了です。
自分のリポジトリの1つである場合、これを行うのは…
git clone [email protected]:you/orig.git
を実行しますgit clone orig copy
を実行しますcopy
リポジトリ内から、master
ブランチを目的の場所にリセットします。you/copy
を作成します。 GitHubの指示に従って、そのプロジェクトをcopy
のローカルバージョンのリモートとしてセットアップし、master
をプッシュすれば完了です。そして、それがすべてです。 (注:gitの履歴は保持されます)
上記の答えを試してみましたが、+ master:masterが指定されていなかったため、具体的ではないことがわかりました。うまくいきます。
ソース(githubでsshの問題を回避するために私の変更を加えたもの):Mauricio Aiello、元Javaシニア開発者、 https://www.quora.com/How-do-I-create-a -new-GitHub-repository-from-a-branch-in-an-ex-existing-repository
単に新しいレポを作成すると、古いレポへの参照が失われ、新しいレポに同期された元のプロジェクトの更新を維持するのが難しくなることを思い出してください。おそらく、レポをフォークする方が良いのではないでしょうか?
これが良い方法かどうかはわかりませんが、とにかく簡単です:
git clone -b new-project [email protected]:User/YourProject.git newProjcet
次に、githubで新しいリポジトリを作成し、プッシュします。
正解への少しの追加:
$ git Push [email protected]:accountname/new_repo + old_branch:master
「[email protected]:accountname/new_repo」=> githubから取得「クローンまたはダウンロード」プルダウンメニュー