仓库
Git 远程仓库为多人协作开发提供了极大的便捷,前面的 Git 操作都是在本地仓库上进行的,远程仓库是托管在因特网的或者自己搭建的 Git 服务,一个本地可以跟踪多个远程仓库,远程有读写权限,在 GitHub(最流行代码托管网站)上直接克隆的远程仓库没有写的权限,Fork 到自己帐户,则有读写权限。
$ git remote
这个命令是管理远程仓库的,几个常用命令和选项
- git remote 列出当前的远程仓库
- git remote -v 列出所有远程仓库和URL
- git remote add
添加远程仓库 - git remote remove
删除远程仓库 - git remote rename
远程仓库改名
克隆的仓库会有默认的远程仓库叫 origin, 并会创建默认 master 分支,跟踪远程仓库的默认分支 origin/master,远程仓库的分支要加上远程仓库名,以区分本地分支。
本地仓库添加远程仓库后需要先拉取远程仓库的提交,才可以向远程仓库推送
$ git fetch
从远程仓库拉取数据,可以用 checkout 签出分支,也可以用 merge 合并到本地分支
$ git pull
从远程仓库拉取数据,并合并到默认分支
$ git push
本地修改提交后,用这个命令推送到远程仓库,其他人就可以看到你的提交和修改了
这三个命令都可以在后面加上远程仓库名拉取、推送到指定的远程仓库
分支
远程仓库也有多个分支,使用 git branch -a 列出所有分支
$ git branch -a
* master
remotes/m/master
remotes/origin/master
显示完整路径的是远程分支,中间的是远程仓库名,后面为远程分支名
选项 -vv 显示本地分支跟踪的远程分支
$ git branch -vv
* master c4ffc28 [origin/master] new
本地分支可以自由切换跟踪的远程分支
- git checkout --track origin/master 本地新建 master 分支,并跟踪远程分支 origin/master
- git checkout -b new origin/master 本地新建 new 分支,跟踪远程分支 origin/master
- git branch -u origin/master 设置当前分支跟踪的远程分支
$ git branch -u m/master
Branch master set up to track remote branch master from m.
$ git branch -vv
* master c4ffc28 [m/master: ahead 2] new
如果本地分支设置了远程分支,查看跟踪的远程分支时有 behind 则需要先 pull 拉取更新,才能向远程分支推送提交
$ git branch -vv
* master 2b3f489 [origin/master: ahead 7, behind 8] Merge branch 'dev'
远程分支新建、删除
在远程新建分支:git push <远程仓库><本地分支>:<远程分支>
$ git push m master:new
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 663 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To git@github.com:Pythians/bbs-catch.git
* [new branch] master -> new
删除远程仓库分支: git push <远程仓库> --delete <远程分支>
$ git push m --delete new
To git@github.com:Pythians/bbs-catch.git
- [deleted] new
当然也可以在托管的网站上新建、删除、修改默认远程分支,具体操作的托管的网站来。
远程分支一般用来和其他人合作开发,难免有同时修改的情况,合并就需要处理可能的冲突,总之在合并前,沟通好可以减少不必要的麻烦。