将本地已有仓库推送到github上新建的空仓库(git remote add ...)
场景:
在github上或者其他,新建一个仓库,打算将已经存在的仓库的一些/全部分支推送到新仓库中。
方法:
1) 在github上新建empty仓库;假设地址为 git@git.github.xxx.git
2) 进入到你本地的repo文件夹, 执行
git remote add repo_addr git@git.github.xxx.git
作用是增加远程仓库的地址,该地址用repo_addr 来表示; 默认情况下,你从远端git clone下来的仓库里面有一个默认的地址,以origin表示。执行git remote -v 可以看到所有的地址符号。
之所以在一个repo内存多个远程仓库的地址,是因为有时候需要跟不同的仓库打交道, 本例就是一个场景;
3) 假设你想将你本地repo的branch3分支推送到repo_addr对应的仓库,则执行:
git push repo_addr branch3
Note: git push -u repo_addr branch3 会导致你的这个本地的branch3分支的upstream变成repo_addr里面的branch3, 即当你在本地的branch3下执行git pull, git push时,会自动与repo_addr做同 步,所以如果你只是向将你本地branch3推送到repo_addr,不想让它的上游branchrepo_addr的branch3则不要用-u。
-u相当于--set-upstream,之前写的”在本地新建一个分支后推送到远端“就是这样的呢: https://www.cnblogs.com/butterflybay/p/11294473.html
执行git push -u repo_addr branch3后,查看你本地的.git/config会相应变化:remote = xxx
Note:曾遇到 ”error: src refspec master does not match any“ --- github上默认的主分支叫做main了,fuck!
https://itsmycode.com/git-error-src-refspec-master-does-not-match-any/
4)总结:
本质上就是不同仓库之间的交互操作。 关于git remote 的综合详细介绍,请直接参考官方文档:
https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
常用的git remote:
1) git remote
It lists the shortnames of each remote handle you’ve specified. If you’ve cloned your repository, you should at least see origin
— that is the default name Git gives to the server you cloned from。
$ git remote
origin
2) git remote -v
You can also specify -v
, which shows you the URLs that Git has stored for the shortname to be used when reading and writing to that remote:
$ git remote -v origin https://github.com/schacon/ticgit (fetch) origin https://github.com/schacon/ticgit (push)
3) git remote add xxx addr, 上例已经用过。
其他连想:
git branch 指令:
git branch :
list all the branches that in you local repo;
git branch -r :
list all the branches that in the remote. If you locally define origin, and repo_addr, just as the example above, this command can list all the branchs in the remote repos :
origin/xxx, repo_addr/xxxx