2012-01-04 8 views
1

私はこれを行う可能性のあるクローン機能を認識していますが、プッシュされたすべてのものをリポジトリにクローンすることに注意しています。すでにローカルリポジトリにあるローカルファイルからリモートリポジトリを作成

私たちが必要とするのは、リポジトリテンプレート内のいくつかのファイルを変更し、これらのファイル(プロジェクトに依存するファイル)をテンプレートにコミットせずに新しいリポジトリを作成して元の状態に保つことです。

これは可能ですか? "git add"、 "git commit"、そして "git push"をリモートリポジトリとなる余分なパラメータで使用しますか?

基本的に、私はファイルではなく、リポジトリを必要としています。

+0

あなたは 'git remote add'を使用して、その新しいリモートにプッシュすることができます。 – Philippe

+0

それは悪い考えではありませんが、テンプレートからファイルを修正すると、テンプレートから派生したすべてのプロジェクトにプッシュされてしまいます。 – NaturalBornCamper

+0

新しいリポジトリと元のリポジトリとの関係は何ですか?私。元のリポジトリへの変更(共有ファイル上)を新しいものに反映する必要がありますか?それとも単なるコピーですか? – Philippe

答えて

2

メインリポジトリ(メイン)と継承しているリポジトリ(child1、child2)について考えてみましょう。私が開始するだろうがメインリポジトリに子供一人当たりのブランチを作成するには、次のようになります。今

main$ git checkout -b child1 
... edit/commit for child1 ... 
main$ git checkout master 
main$ git checkout -b child2 
... edit/commit for child2 ... 

、あなたが行うことができます:

main$ git push [email protected]:repositories/child1.git child1:master 
main$ git push [email protected]:repositories/child2.git child2:master 

これは、リポジトリchild1ののマスターに分岐child1のをプッシュします。この方法でメインマスターをきれいに保つことができます。これがプッシュオフの場合は、後でブランチを削除することができます。早送りできない場合は、子リポジトリにマージを強制する必要があります(see the refspec for the push)。

+0

それはうまくいくかもしれませんが、私は試してみましょう – NaturalBornCamper

+0

これは完璧に感謝しました!マージを強制する必要はありません! – NaturalBornCamper

0

最も簡単なのは、リモートにプッシュする前に変更を適用できるローカルクローンを使用することです。次の操作を実行できます。

  1. テンプレートリポジトリのコピーを作成します。

    git clone --no-hardlinks templaterepo newrepo

  2. 古いリポジトリから保つためにしたくないファイルをフィルタリング。

    cd newrepo

    git filter-branch --tree-filter "rm -f sensitive/file1.txt file2.txt" HEAD

  3. あなたは通常、Gitの中でそうであるように、他の変更を行います。

    git add ...

    git commit ...

  4. リモートを追加します。

    git remote add origin [email protected]

  5. プッシュ

    git push origin master

これは、あなたが、あなたが実際に気にすべてのファイルの履歴を保存することを確認し、もののために歴史を一掃します気にしないでください(潜在的に機密データが含まれている可能性があります)。

ステップ1の後。newrepoは、templaterepoとは本質的に何も関係がありません。共有履歴(--no-hardlinksは同じファイルシステムからクローンを作成していることを前提としており、余分な速度のためのものです)ですので、後でtemplaterepoで何をしても、 newrepo(またはそのリモート)の内容。

git help filter-branchを参照してください。

関連する問題