git远程仓库
远程仓库
Git是分布式版本控制系统,同一个仓库可以分布到不同机器上
可用git remote
查看远程仓库信息,使用-v
显示更详细的信息
克隆远程仓库
git clone git@github.com:username/gitrepo.git
git支持多种协议,如https等,但通过ssh支持的原生git协议速度最快
SSH授权
Git本地仓库与GitHub仓库间传输是通过SSH加密的
- 创建SSH Key
ssh-keygen -t ed25519 -C "ssh key"
创建ssh key,创建后可在用户目录下找到.ssh
文件夹,~/.ssh/id_rsa
是私钥,~/.ssh/id_rsa.pub
是公钥
- 登录GitHub
打开页面中 settings 的 ssh keys 中添加 title 并粘贴 id_rsa.pub 文件内容
将本地库与远程库关联
在GitHub中新建一个空的仓库repo
git remote add origin git@github.com:username/repo.git
将本地仓库与远程仓库关联,origin
是 git 远程仓库名的默认叫法
若想同时关联gitee,可另起一个别名git remote add gitee git@gitee.com:username/repo.git
远程分支管理
推送本地分支到远端
将本地分支推送到远端
git push -u origin master
若是第一次推送master
分支,由于远程库是空的,使用-u
参数,git不但会将master
内容推送到远程新的master
分支,还会将本地master
分支和远程master
分支关联,简化后面推送或拉取操作
从现在起,每次修改只需要使用git push origin master
直接推送即可,也可新建分支,如果远程仓库没有这个分支,那么也会新建
当然,也可以指定提交到远程仓库的某个分支上,如将dev
提交到master
分支上
git push origin dev:master
推送新分支到远程
git push --set-upstream origin branchname
删除远程分支
git push origin -d branchname
拉取远程分支到本地
如果本地当前是在dev
分支上面,此时想把远程仓库的master
与dev
分支合并(merge)
git pull origin dev:master
如果使用如下指令,含义是将远程仓库的master分支合并下来
git pull master
如果本地没有master分支,那么本地就新建一个master分支,如果有这个分支就是 fetch + merge 操作
多人协同开发
你和小伙伴一起在dev分支上开发,此时你想推送修改,但在此之前,小伙伴已经推送了他的提交,并修改了同样的文件,则会推送失败
git提示先git pull
最新的提交,在本地合并后再推送
若pull失败,提示no tracking information未指定本地dev和origin/dev链接
git branch --set-upstream dev origin/dev
这时pull成功,但提示有冲突,需手动解决冲突,解决方法前面介绍过
查看远程库和本地库的不同
git diff dev origin/dev
将远程库与本地库合并
git merge origin/dev
手动解决冲突后,再提交后推送到远程库