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。