如何導入外部Git倉庫到中國源代碼託管平臺(Git@OSC)

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:

  • 從原始地址clone一份bare倉庫
git clone --bare https://github.com/bartaz/impress.js.git (例子)
  • 在Git@OSC上建立一個項目(http://git.oschina.net/projects/new),這裏注意,不要勾選使用Readme初始化項目,不要選擇項目的受權協議和.gitignore 文件,由於這些會致使項目有第一個提交。
  • 記下新建項目後的地址,推薦使用http或者ssh方式皆可,大項目推薦ssh方式。
cd impress.js.git git push --mirror git@git.oschina.net:username/impress-js.git
  • 此命令執行完成後即完成導入,刪除 impress.js.git 文件夾便可。

方案2:

此方案,手頭已經有了項目的完成倉庫,則無需再從第三方代碼託管平臺上clone下來。

  • 到Git@OSC上建立項目,一樣不要選擇以上所說的三項。
  • 命令行進入項目目錄,git status 確保項目狀態爲:
nothing to commit, working directory clean

    若是狀態不是這樣,則須要經過提交、暫存等操做,使項目當前狀態爲clean。

  • 添加Git@OSC的remote
git remote add git-osc git@git.oschina.net:username/translate4j.git
  • 推送全部分支和tags

 

git push git-osc --all
git push git-osc --tags
  • 以上兩條命令執行完畢,即完成導入。

方案3:

此方案針對導入已有的SVN倉庫

  • 同上,先新建項目,不要選擇以上所說的三項
  • 使用git-svn工具clone svn倉庫,git-svn 已是Git的默認組建,若是你安裝的是較新版本的Git客戶端的話,則不須要再單獨下載這個組件
git svn clone http://translate4j.googlecode.com/svn/trunk/ translate4j
  • 一樣,進入項目目錄,添加remote
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

相關文章
相關標籤/搜索