git总结 -- 远程仓库篇
接着上一篇文章 《git 总结 -- 本地操作篇》,这里继续总结一下git 远程操作。
git 总结 -- 本地操作篇 http://blog.csdn.net/u012480384/article/details/50830820
git总结 -- 配置文件 http://blog.csdn.net/u012480384/article/details/50830881
首先,你要有个远程仓库,免费的有github,你的公司也可能有自己的仓库,也可以自己建一个仓库。
github : https://github.com/
参考
http://www.oschina.net/translate/git-fetch-and-merge?cmp
http://blog.jobbole.com/71091/
http://www.yiibai.com/git/git_clone.html
http://blog.jobbole.com/71091/
git remote
# 查看远程仓库git remote -v
# 添加远程仓库
git remote add <远程仓库别名, 一般都设为 origin> <url>
可以添加多个远程仓库
# 删除远程仓库
git remote rm <远程仓库别名>
# 修改远程仓库url
$ git remote set-url --push [name] [newUrl]
# 修改远程仓库别名
git remote rename <原主机名> <新主机名>
git push
# 将本地分支推送到远程分支git push <远程仓库别名> <本地分支名>[:<远程分支名>]
如果没有 "[:<远程分支名>]" 那么会自动默认远程分支名和本地分支名相同。
!! 这里注意 -- ':'前后都不要有空格,下同。
并不是每次push都会成功,当远程仓库的版本更加新时,此时push会有冲突。
如果失败,则需要把远程仓库的内容pull到本地然后merge解决冲突后,再push。
还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用 --all 选项。
参数
git push -u 会将远程分支和本地分支绑定。每次git status时,都会提示当前本地分支和远程分支之间commit的区别。
a. 直接删除
git push <远程仓库别名> --delete <远程分支名>
git push <远程仓库别名> :<远程分支名>
git fetch
git fetch <远程主机名> [<远程分支名>:<本地分支名>]如果没有 "[<远程分支名>:<本地分支名>]",则将远程库的所有分支取回。
FETCH_HEAD 会指向fetch下来的分支。
如果有 ":<本地分支名>",则把fetch下来的分支放到本地指定的不存在分支上。
相当于:
git fetch origin yy1
git checkout -b new1 origin/yy
git pull
# git pull = git fetch + git merge FETCH_HEAD
注意, 这里merge是无参数,即fast-forward。
上述过程其实可以用以下更清晰的方式来进行:
git fetch origin master:tmp
git diff tmp
git merge tmp
推荐git fetch + git merge | git rebase,因为这样我们可以看到分支的变化后,决定是否merge或rebase。
http://www.oschina.net/translate/git-fetch-and-merge?cmp
如果合并需要采用rebase模式,可以使用–rebase选项。
$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
git clone
# 克隆的方式获得远程分支git clone <版本库的网址>
有 git, ssh, https不同方式的网址,一般你的远程仓库都会有相应的复制按钮,登陆进入到相应的repository就会看到。