您要做的就是创建另一个克隆。除非您有充分的理由不这样做,否则它将复制所有历史记录(不用担心,它通常小于 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 -
创建一个模拟的同事 repo:
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
和merge
是同时完成的pull
。所以你可以这样做
git pull origin master
所以标签被获取。当你意识到 pull 是 fetch 和 merge (或者如果你想变基)放在一起时,这是暗示的。