git clone --bare http://git.rcrtm.com/git/dianli.gitgit
git clone --mirror https://git.oschina.net/candoo/dianli.gitgithub
git push --mirror https://git.oschina.net/candoo/CanDoo.HuanTian.Mui.gitshell
用法1:Git clone <repository> <directory>ssh
将<repository>指向的版本库建立一个克隆到<directory>目录。目录<directory>至关于克隆版本库的工做区,文件都会检出,版本库位于工做区的.git目录中svn
用法2:git clone --bare <repository> <directory.git>工具
用法3:git clone --mirror <repository> <directory.git>fetch
用法2和用法3建立的克隆版本库都不包含工做区,直接就是版本库的内容,这样的版本库称为裸版本库。通常约定俗成裸版本库的目录名以.git作后缀,因此上面示例中将克隆出来的裸版本库目录名写做<directory.git>。区别在于用法3克隆出来的裸版本对上游版本库进行了注册,这样能够在裸版本库中使用git fetch命令和上游版本库进行持续同步。ui
不使用--bare或--mirror建立出来的克隆包含工做区,这样就会产生两个包含工做区的版本库,这两个版本库对等。这两个工做区本质上没有区别,每每提交在一个版本A中进行,另外一个B做为备份。只能从B执行git pull命令从A中拉回新的提交实现版本库同步,而不能从版本库A向版本库B执行git push推送操做google
还能够经过git init的方式建立裸版本库,须要加--bare参数。spa
当执行git push命令时,若是没有设定推送的分支,并且当前分支也没有注册到远程的某个分支,将检查远程分支是否有和本地相同的分支名(如master),若是有,则推送,不然报错。
针对最近有不少网友提问,如何导入外部代码仓库(Github、bitbucket、Google Code等等)到Git@OSC,给出以下解决方案:
方案1:
git clone --bare https://github.com/bartaz/impress.js.git (例子)
cd impress.js.git git push --mirror git@git.oschina.net:username/impress-js.git
方案2:
此方案,手头已经有了项目的完成仓库,则无需再从第三方代码托管平台上clone下来。
nothing to commit, working directory clean
若是状态不是这样,则须要经过提交、暂存等操做,使项目当前状态为clean。
git remote add git-osc git@git.oschina.net:username/translate4j.git
git push git-osc --all
git push git-osc --tags
方案3:
此方案针对导入已有的SVN仓库
git svn clone http://translate4j.googlecode.com/svn/trunk/ translate4j
git remote add git-osc git@git.oschina.net:username/impress.js.git
git push git-osc --all
git push git-osc --tags
有关Git的使用,可查阅 git reference手册、中文版ProGit。有关Git@OSC ,可查看 帮助、网友教程、FAQ。