开发者社区> 爆米花9958> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Git教程5——远程仓库

简介: 远程仓库 远程仓库是指托管在因特网或其他网络中的你的项目的版本库。 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写。
+关注继续查看
远程仓库
远程仓库是指托管在因特网或其他网络中的你的项目的版本库。 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写。 与他人协作涉及管理远程仓库以及根据需要推送或拉取数据。 管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等。我们就以知名的GitHub网站为例,使用GitHub只要注册一个GitHub账号,就可以免费获得Git远程仓库。

由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要进行一下设置:

第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件:


如果有的话,直接跳过此步,如果没有的话,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C"youremail@example.com"
然后一路回车,使用默认值即可,如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
第二步:登录github,打开” settings”中的SSH andGPG Keys页面,然后点击“New SSH Key”,填上任意title,在Key文本框里粘贴id_rsa.pub文件的内容。


点击 Add Key,你就应该可以看到已经添加的key。
GitHub需要SSH Key的目的就是因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。

添加远程库
现在的情景是我们已经在本地创建了一个Git仓库后,又想在github创建一个Git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。首先,登陆GitHub,右上角的“+”号和右边的绿色按钮“New repository”都可以创建一个新的仓库:


在Repository name填入mygit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

目前,在GitHub上的这个mygit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
现在,我们根据GitHub的提示,在本地的mygit仓库下运行命令:
$ git remote add origin https://github.com/xuemengrui12/mygit.git
添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:

从现在起,只要本地作了提交,就可以通过命令:

$ git push origin master
把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

从远程库克隆

上面我们已经了解了如何先有本地库,后有远程库时候再关联的过程。现在假如远程库有新的内容了,我想克隆到本地来,如何克隆呢?首先,登录github,创建一个新的仓库,例如testgit,我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件:


现在,远程库已经准备好了,下一步是使用命令git clone克隆一个本地库了,选好你要放置的目录位置


接着在我本地目录下生成testgit目录,如下所示:


你也许还注意到,GitHub给出的地址不止一个,实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https

查看远程仓库

如果想查看你已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出你指定的每一个远程服务器的简写。 如果你已经克隆了自己的仓库,那么至少应该能看到 origin - 这是 Git 给你克隆的仓库服务器的默认名字:


你也可以指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。

如果你的远程仓库不止一个,该命令会将它们全部列出。如果想要查看某一个远程仓库的更多信息,可以使用 git remote show [remote-name] 命令。 如果想以一个特定的缩写名运行这个命令,例如 origin,会得到像下面类似的信息:

从远程仓库中抓取与拉取
从远程仓库中获得数据,可以执行:
$ git fetch [remote-name]

这个命令会访问远程仓库,从中拉取所有你还没有的数据。执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

如果你使用 clone 命令克隆了一个仓库,该命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意 git fetch 命令会将数据拉取到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

如果你有一个分支设置为跟踪一个远程分支,可以使用 git pull 命令来自动的抓取然后合并远程分支到当前分支。 这对你来说可能是一个更简单或更舒服的工作流程;默认情况下,git clone 命令会自动设置本地 master 分支跟踪克隆的远程仓库的 master 分支(或不管是什么名字的默认分支)。 运行 git pull 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。


推送到远程仓库

当你想分享你的项目时,必须将其推送到上游。 这个命令很简单:git push [remote-name] [branch-name]。 当你想要将 master 分支推送到 origin 服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字),那么运行这个命令就可以将你所做的备份到服务器:

$ git push origin master

只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。


远程仓库的移除

如果因为一些原因想要移除一个远程仓库 - 你已经从服务器上搬走了或不再想使用某一个特定的镜像了,又或者某一个贡献者不再贡献了,可以使用 git remote rm 

$ git push origin master

由于个人水平有限,写作中难免有很多问题,忘大家不吝赐教,谢谢!

参考:


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Git 系列教程(8)- 远程仓库的使用
Git 系列教程(8)- 远程仓库的使用
0 0
Git教程3(远程仓库)
git是一个分布式版本控制系统,虽然远程仓库不是必须的,但是我们在开发过程中为了便于团队协同开发,所以我们还是会搭建一个远程仓库,本文我们将使用github作为我们的远程仓库来操作。GitHub是一个为git提供托管服务的服务器,我们只需要注册一个GitHub账号即可使用
0 0
Git创建----远程仓库操作(GitHub版)
git工具中粘贴是: shift + insert shift + insert shift + insert (★★)
0 0
Git远程仓库操作
引入 最近入手了一台arm架构的二合一笔记本,刷的是win11 on arm系统,打算又能当平板又能当电脑。但问题是其运行的是桌面端应用,像一些传统社交媒体和文件同步软件用不了,一旦在笔记本上登录就会把我台式机的账户挤下线,没法实现多端同步…… 但我们是谁?我们是程序员!
0 0
git 远程仓库操作
远程提交一个大一点的文件 用git远程提交的一个好处就是,相比较在github或者gitee直接提交文件显得更加活泛。然后的话在提交文件大小的限制上。用git提交的话,可以提交大一点的文件。而你如果直接拖动文件到库里面的话,会有文件大小的限制。如果对一个包进行拆分的话,会比较麻烦。
0 0
Git使用commit命令时报错“bad numeric config value ‘ture‘ for ‘color.ui‘: invalid unit”(已解决)
Git使用commit命令时报错“bad numeric config value ‘ture‘ for ‘color.ui‘: invalid unit”(已解决)
0 0
git从入门配置到常用基本命令,傻瓜式操作一步步命令总结
git从入门配置到常用基本命令,傻瓜式操作一步步命令总结
0 0
git各命令的原理和初级使用,顺手玩下git钩子
git各命令的原理和初级使用,顺手玩下git钩子
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
百度万人研发团队 Git 工具链建设的挑战与思考
立即下载
华为Git实践:工作模式创新,及多中心分布式架构
立即下载
百度万人研发团队Git工具链建设的挑战与思考
立即下载