gitコマンドからフォークを行いたい!
GitHubではFork機能があるので同じサイト内ではフォークし易い。
ただGitHubからGitLab等では恐らくそうはいかないと考え、コマンドで対応する方法を調べた。(というかたまたまこちらのサイトで知ったのでメモしたかった。)
# フォーク元リポジトリをClone.
git clone <old_repository>
# Cloneしたディレクトリへ移動
cd <clone_dir>
# 現在のリポジトリ情報を確認(ここで出力された'origin'を後に'upstream'に置換える)
git remote -v
# フォーク先の(新しく用意した)リポジトリに設定
git remote set-url origin <new_repository>
# フォーク元のリポジトリを追加
git remote add upstream <old_repository>
# 設定したリポジトリ(origin/upstream)が適用されているか確認
git remote -v
# フォーク先のリポジトリへPush
git push -u origin master
# 'origin/master'になっているか確認(必要ないと思う)
git branch -vvv
フォーク元の更新をフォーク先でも適用したい!
当然フォークしたからには設定やコードを改めることになるでしょう。ただ同様に本家もフォーク元のリポジトリを更新していくことになります。
そうなると当然フォーク元の更新をフォーク先に適用したくなるでしょう。そんな時に使えるコマンドは以下の通りです。
# フォーク元(upstream)で発生した更新をローカル(フォーク先)にマージ
git pull --no-commit upstream master
# マージで発生したコンフリクトを解決した後、以下のコマンドでコミット
git merge --continue