远程Git仓库,可以这样理解:不在本地的Git仓库,这不是废话嘛?!
本地仓库内容可以和多个远程仓库同步,本地仓库出问题或者远程仓库其中一个有问题,那么剩余的仓库还是可以使用的,这就是分布式管理的魅力所在 ! O(∩_∩)O~
说了那么多废话,下面我们开始具体的操作:
Eg: cd到当前AS项目目录下,执行git init
$ cd /f/AndroidStudioWks/newelderly_bj
$ git init
执行完git init后 会在当前目录产生 .git 文件夹(如果之前有执行过git init 就会有.git文件夹,那就不必执行git init,git init 命令执行一次就可以,注意不要重复执行)
$ git remote -v
如果本地仓库是刚创建的是,执行命令后是没有任何结果的。
如果是通过git clone的方式创建的,那么此时就会显示 origin
执行git命令时当前目录必须在 git 仓库目录(除了git init命令外)之内,否则会提示:
Fatal:Not a git repository (or any of the parent diretories): .git
要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,执行命令
$ git remote add [shortname] [url]
Eg:
git remote add pb git@bitbucket.org:paul/newelderly_bj.git
(此url是ssh协议的,本来bitbucket默认是https,这里之前配置ssh访问,所以可以直接写成git@…..
Git支持许多数据传输协议: git://协议,http(s)://协议或ssh协议
Eg:
git://github.com/paulboone/ticgit.git
https://username@bitbucket.org/username/xxx.git
ssh://git@bitbucket.org/username/xxxx.git (git@bitbucket.org:username/xxxxx.git )
$ git remote
可以加上 -v 选项(译注:此为 –verbose 的简写,取首字母),显示对应的克隆地址
如果有多个远程仓库,此命令将全部列出。
比如在 Grit 项目中,可以看到:
$ cd grit
$ git remote -v
bakkdoor git://github.com/bakkdoor/grit.git
cho45 git://github.com/cho45/grit.git
defunkt git://github.com/defunkt/grit.git
koke git://github.com/koke/grit.git
origin git@github.com:mojombo/grit.git
只有 origin 用的是 SSH URL 链接,所以也只有这个仓库我能推送数据上去,其它的需要密码的。
在纳入版本管理之前,有些文件不需要纳入,那么需要提前在 .gitignore文件指明忽略的文件或文件夹(如果没有此文件则新建)
$ git add
$ git commit -m 'create project'
$ git push [remote-name] [branch-name]
remote-name 是之前添加远程仓库指定的shortname,而branch-name 默认是master
如果不知道当前的最新的branch-name, 可以执行 git status 查看
Eg:
$git status
On branch master
Eg:
$ git push pb master
如果出现
fatal: Could not read from remote repository
可能是添加的时候,[url]路径有问题,或者[remote-name]不存在,
我们可以先
$ git remote rm [shortname]
然后重新
$ git remote add [shortname] [url]
$ git remote -v
$ git push [remote-name] [branch-name]
然后就是慢慢上传过程,上传速度不同,需要的时间不一样
参考: http://blog.csdn.net/steven6977/article/details/11268675
只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,
这条命令(git push)才会如期完成任务。如果在你推数据前,已经有其他人推送了若干更新,那你的推送操作就会被驳回。
你必须先把他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。
参考http://blog.sina.com.cn/s/blog_6163bdeb010181mf.html
$ git fetch [remote-name]
fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前分支
$ git remote show [remote-name]
会显示出: 远程分支有哪些分支没同步到本地; 本地仓库缺省推送的分支是什么
远程仓库重命名
$ git remote rename [old_remote-name] [new_remote-name]
Eg:
$ git remote rename pb paul
重命名后远程分支名会发生变化 Eg:pb/master -> paul/master
远程仓库的删除
$ git remote rm [remote-name]
一般一个项目一个仓库,整个项目工程目录名可以命名称仓库名
在bigbucket.org 可以创建多个仓库, 然后可以对每个项目进行克隆:(以下是ssh协议)
$ git clone git@bitbucket.org:username/projectA.git
$ git clone git@bitbucket.org:username/projectB.git