设置了公钥,就能上传和下载了

  • 通过 git pull && git push && git clone

1. 两行命令

第0步 准备工作

  1. 新建GitHub Repo(Repositories),任意Repository name
  2. 在快速设置中,默认SSH(勿选HTTPS,坑,每次要输密码,不方便,骂死你)
  3. 复制页面里的代码(关掉翻译) 「复制SSH 地址(注意是以git开头的而不是HTTPS地址)」

已有本地仓库

1
git remote add origin git@github.com:yourName/yourRepoName.git
  • 告诉本地仓库,对应到远程仓库的地址,仓库名是origin

第1步 第一次上传:

1
git push -u origin master
  • -u upstream 第一次上传时,记下本次匹配,推到origin仓库的master分支
  • -u origin master只有第一次需要写,以后直接git push就好了
  • master(本地)->master(GitHub)
  • 刷新远程仓库页面就可以看到上传的内容了

没有本地仓库,完全新建时

1
2
3
4
5
6
echo "# RepoName" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:yourName/yourRepo Name.git
git push -u origin master
  • git push 上传的是本地仓库提交过的一个分支,并不是当前看到的代码

  • 可以提交多个分支:

1
2
3
4
5
6
git branch x
git checkout x
## ... change sth ...
git add .
git commit -am "log"
git push -u origin x

注意要加-u,因为是第一次上传此分支* [new branch]

  • x(本地)->x(GitHub)

  • 类似我要查看分支:git branch,我要查看远程仓库:git remote

小结

  1. 关联你新建的远程仓库
1
git remote add origin git@xxxx
  • 在本地添加远程仓库的地址
  • origin是远程仓库的默认名字,可以换,不建议换
  • 勿使用https://地址,每次要输密码烦
  1. 初始提交到远程仓库
1
git push -u origin master
  • 推送本地master分支到远程origin的master分支
  • 如果由于手贱,在创建远程仓库时加了README.md等原因,导致远程仓和你本地仓文件不一致,提示你应该git pull…,就git pull一下
  • git pull是先把远程分支合并到本地对应的分支
  • 如果远程分支没有(被其他人)更新过,才可以省略git pull
  • -u origin master 的意思是设置上游分支
  • 之后就可以不用设置直接git pull;git push

eg. 比如有个repo2仓库

1
2
git remote add repo2 gti@github.com:yourName/git-demo-02.git
git push -u repo2 master

不可直接git pull,默认去origin仓库;被![reject],这时需要将repo2仓库的master分支复制到当前的master 分支:

1
2
git checkout master
git pull repo2 master:master

master -> repo2/master

1
git push -u repo2 master

被拒绝合并,因为没有关联,可以谨慎使用强制合并:

1
git push -u repo2 master -f

小心同事打你

  1. 如何上传其他分支
  • 方法一:
1
git push origin x:x

git push 仓库名 分支名(源头:本地x):分支名(目标:远程x)

  • 方法二:
1
2
git checkout x
git push -u origin x
  • git push 仓库名 分支名

  • GitHub远程仓库是本地仓库(分支)的一个拷贝而已(备份.git/)

  • 本地仓库在硬盘里的位置(相对路径)不影响远程仓库

  • 远程的Repo(Repositories)相当于在GitHub上的一个文件夹,git clone 下来的文件夹名就是Repo的名称

  • 类似我要查看分支:git branch,我要查看远程仓库:git remote

  • 区分origin和远程仓库的名称:

  • GitHub 里面的 origin 到底代表啥意思




参考文章

相关文章


  • 作者: Joel
  • 文章链接:
  • 版权声明
  • 非自由转载-非商用-非衍生-保持署名