2011-01-18 9 views
7

githubに固有の "フォーク"の機能はありますか?親からの更新を引き出すことができる "コピーされた"子リポジトリを作成するための純粋なgitプロセスがありますか?もしそうなら、どうですか?Git - ギブスなしのフォーク

EDIT:git cloneは、それでは混乱しなければなりません。 git cloneは私のマシン上でリポジトリのローカルコピーを取得してcommitpushから変更するものです。現在、gitosisでレポジトリを開催しています。だから、もし私が 'フォーク'を伴奏したいのであれば、gitosisサーバー自体のリポジトリを(原点に)クローンしますか?それは新しいgitアドレスを作成するでしょうか?

+2

そのローカルコピーは元のデータの完全なレプリカです。これとより正式なフォークの間には技術的な区別はありません。 github forkボタンは、レポをクローンしてDBに何かを保存するので、彼らがそれをしたことを思い出すことができます。 – Dustin

答えて

7

おそらく実際にこれをしたくないでしょう。 gitのブランチは非常に素晴らしく、軽量であり、現時点でリポジトリにブランチを作るだけではいけない理由はありません。私がgitosisリポジトリを使ってこれを行うと考えることができる唯一の理由は、継続的なデプロイメントや、あるgitosisリポジトリから取得し、同じコードへのコミットアクセスを与えたいが、何もしない場合、アクセス制御を面白くするためですそれらが配備されているものに書き込めるようにします。他のすべての用途では、ブランチをgit branchで作成し、ブランチですべての作業を行うだけです。代わりに、githubリポジトリをクローンし、中央のgitosisアーキテクチャ内でチームに作業させたいかもしれません。

この警告を前提として、説明する方法で「フォーク」を作成する最も簡単な方法は、gitosisサーバー上に別のリポジトリを作成することです。したがって別のリポジトリを別の名前で設定します。たとえば、元のリポジトリが[email protected]:repo1.gitの場合、別のリポジトリを[email protected]:repo1-fork.gitに設定します。アクセスしたいユーザーを追加します。

次に、./repo1にリポジトリの完全コピーを入れるgit clone [email protected]:repo1.gitというリポジトリをクローンします。ローカルバージョンからフォークされたリポジトリにコピーするには、git push [email protected]:repo-fork.git --mirrorを実行します。

6

Forking on Githubは単純なgit cloneに相当しますが、フォークの場合はgit clone --mirrorのようになります。

+0

更新/編集された質問。 – jondavidjohn

+3

'git clone --mirror'が何であるか疑問に思っている人のために:http://stackoverflow.com/questions/3959924 – Xavi

4

いつでもgit cloneリポジトリを使用すると、効果的にフォークを作成できます。 GitHubのフォーク機能が果たす唯一のことは、クローンをGitHubリポジトリにして、Webページ、グラフ、統計情報、そしてそのすべての良いものを持つことです。

また、リポジトリをクローンすると、Gitは自動的に元のリポジトリをデフォルトの "上流"リポジトリ(originというリモート)にします。だから、ボックスの外に、引数なしのgit pullは、元のものからまっすぐに引かなければなりません。

+0

updated/edited question。 – jondavidjohn

2
# clone wanted repo 
git clone https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git 

# cd into created folder 
cd ORIGINAL_REPOSITORY 

# add your remote repository as origin 
git remote add origin https://github.com/my_user/my_repository.git 

# add original repository as upstream 
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git 

# when want to pull from upstream just 
git pull upstream master 

# when want to create upstream pull-request just 
# https://git-scm.com/docs/git-request-pull 
# commit-hash - from where to start pull request 
git request-pull commit-hash [email protected]:my_user/my_repository.git 
関連する問題