>

#### 本地目录与远程库的区别 --- 如果已经在本地建好了一个目录,比如 myproj,同时,在 github.com 上也已经建了一个项目 `proj_test`,那么想把这个 `proj_test` 里的内容**拉下来**放到本地的 myproj 目录中, 同时本地的 myproj 目录中原有的文件还继续能存在,并且 myproj 目录成为 proj_test 这个目录在本地的 clone 的话,如下设置即可:
$ git remote add origin http://github.com/myproj.git
$ git pull origin master

上面 origin 的意思其实就是作为 http://github.com/myproj.git 的一个别名(相当于 origin=http://github.com/myproj.git),master 则是本地分支名

$ git push origin master

语句的含义就是: 把本地 master 分支中的内容提交到 origin 中。(对应远程的 origin 中的也是 master 分支)


#### 创建远程分支 ---- 从远程分支克隆出的本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程分支有直接联系的本地分支。 比如:在跟踪分支里输入 git push,git 会自行推断应该向哪个服务器的哪个分支推送数据。 反过来,在这些分支里运行 git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来.
$ git remote add origin ssh://git@github.com/juniway.git
$ git push origin master
$ git push ssh://git@github.com/juniway.git master          // 把本地仓库提交到远程仓库的master分支中

我从 master 分支创建了一个 issue5560 分支,做了一些修改后,使用 git push origin master 提交,但是显示的结果却是’Everything up-to-date’,
发生问题的原因是 git push origin master 会默认的把本地 master 分支中的内容提交到 remote repo 中的 master 分支(因为本地的 master 分支默认指向了origin master 分支),
而不是把新建的 那个 issue5560 分支 提交。

如果想实现把本地 issue5560 分支提交到远程的 master 分支,可以这样:
使用 git push origin issue5560
这样就可以把本地 issue5560 分支推送到远程的 master 分支了(远程的 origin 默认是 master 分支)。

这时候可以通过切换到本地 master 分支上 执行 git pull 拉取下来,如果还有其他同事也在 master 分支上进行了其他提交工作,那么需要 merge。
当然,也可以先把 issue5560 merge 到本地 master 再提交到远程库。

如果想把本地的某个分支 test 提交到远程仓库,并作为远程仓库的 master 分支,或者作为另外一个名叫 test 的分支,那么可以这么做:

$ git push origin test:master         // 提交本地 test 分支作为远程的 master 分支
$ git push origin test:test           // 提交本地 test 分支作为远程的 test 分支

如果想删除远程的分支呢?类似于上面,如果冒号 : 左边的分支为空,那么将删除冒号 : 右边的远程的分支。

$ git push origin :test               // 刚提交到远程的 test 将被删除,但是本地还会保存的,不用担心

###### 补充: ---

添加远端 repo:

$ git remote add upstream git://github.com/pjhyett/github-services.git

重命名远端 repo:

$ git://github.com/pjhyett/github-services.git 为 “upstream”




##### Reference https://gitshell.com/help/#faq http://www.cnblogs.com/wangkangluo1/archive/2011/09/02/2164313.html