やりたいことは、別のクローンを作成することだけです。実行しない正当な理由がない限り、すべての履歴が複製されます (心配しないでください。通常、svn リポジトリのサイズの 10% 未満であり、圧縮のために作業ディレクトリよりも小さいことがよくあります)。
最初のレポを作成します。
mkdir myrepo
cd !$
git init
echo one > one.txt
git add -A
git commit "my first commit"
git tag v1.0
echo two > two.txt
git add -A
git commit "my second commit"
git tag v2.0
シミュレートされた中央リポジトリを作成します。
cd ..
mkdir centralrepo
cd !$
git init --bare # don't want to have a working directory here
cd -
シミュレートされた同僚レポを作成します。
mkdir coworkerrepo
cd !$
git init
中央レポの場所をレポに伝える
cd ../myrepo
git remote add origin ../centralrepo
中央レポの場所を同僚のレポに伝える
cd ../coworkerrepo
git remote add origin ../centralrepo
作業を中央リポジトリに公開します。
cd - # useful shortcut for flipping between two dirs (works for git checkout and branches too)
git push origin master
マスター参照とコミットを配置しますが、タグは配置しません。タグの場合は、次のようにします。
git push origin v1.0
git push origin v2.0
または、リポジトリ内のすべてのタグを押し上げるだけです
git push origin --tags
リモートにこれらのタグと参照があることを確認できるようになりました
git remote -v show origin
同僚のリポジトリに切り替えて、それらの変更を取得します。
cd -
git fetch # will update tracking branches and tags
git merge origin/master # fast-forward master branch to what the remote tracking branch is pointing to
fetch
との 2 つの操作merge
は で同時に行われpull
ます。したがって、代わりにこれを行うこともできました
git pull origin master
したがって、タグが取得されます。これは、プルがフェッチとマージ (または必要に応じてリベース) を組み合わせたものであることに気付いたときに暗示されます。