8

「フォーク」の機能はgithubに固有ですか?または、親から更新をプルできる「コピーされた」子リポジトリを作成するための純粋なgitプロセスはありますか?もしそうなら、どのように?

編集:私はその時何をするかについて混乱しなければなりませんgit clone。、、、およびからgit clone変更を加えるためにリポジトリのローカルコピーを取得するために、自分のマシンで行うことは私の理解でした。現在、gitosisを使用してリポジトリをホストしています。したがって、「フォーク」を実行したい場合は、リポジトリをgitosisサーバー自体(オリジン)に複製しますか?それは新しいgitアドレスを作成しますか?commitpush

4

4 に答える 4

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

# cd into created folder
cd ORIGINAL_REPOSITORY

# rename `origin` remote (original repo url) to `upstream`
git remote rename origin upstream

# add your remote repository as `origin`
git remote add origin https://github.com/my_user/my_repository.git
    
# when want to pull from upstream just
git pull upstream main

# 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 git@github.com:my_user/my_repository.git
于 2016-10-05T09:38:36.090 に答える
7

Githubでのフォークは単純なものと同等ですがgit clone、フォークの場合はより似ていgit clone --mirrorます。

于 2011-01-18T20:04:42.623 に答える
7

あなたはおそらく実際にこれをしたくないでしょう。gitのブランチは非常に素晴らしく軽量であり、現在のリポジトリにブランチを作成するだけではいけない理由はありません。gitosisリポジトリでこれを行うことができる唯一の理由は、継続的デプロイなど、1つのgitosisリポジトリからプルするものがあり、同じコードへのコミットアクセスを許可したいが、アクセス制御を面白くするためです。デプロイされたものに書き込めるようにしたくありません。他のすべての用途では、でブランチを作成し、そのブランチでgit branchすべての作業を行う必要があります。または、githubリポジトリのクローンを作成してから、中央のgitosisアーキテクチャ内でチームで作業することもできます。

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

次に、リポジトリのクローンを作成します。git clone gitosis@server:repo1.gitこれにより、リポジトリの完全なコピーがに配置され./repo1ます。ローカルバージョンからフォークされたリポジトリにコピーするには、を実行できますgit push gitosis@server:repo-fork.git --mirror

于 2011-01-18T20:53:17.207 に答える
4

git cloneリポジトリを作成するときはいつでも、効果的にフォークを作成できます。GitHubのフォーク機能が行う唯一のことは、クローンをGitHubリポジトリにすることです。これには、Webページ、グラフ、統計、その他すべての優れた機能が含まれます。

また、リポジトリのクローンを作成すると、Gitは自動的に元のリポジトリをデフォルトの「アップストリーム」リポジトリ(リモートと呼ばれるorigin)にします。したがって、箱から出して、git pull引数なしで元のファイルから直接プルする必要があります。

于 2011-01-18T20:09:56.550 に答える