十八、Git 远程仓库 ( Github )

十八、Git 远程仓库 ( Github )
云少十八、Git 远程仓库 ( Github )
之前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享代码或者与其它开发人员合作
那么就需要将数据放到一台其他开发人员能够连接的服务器上
本章节,我们将使用 GitHub 作为远程仓库,演示如何操作远程仓库
如果你还没有 Github 账号,可以在官网 https://github.com/ 注册
配置
由于我们的本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,所以我们需要配置验证信息
1、 使用以下命令生成 SSH Key
1 | ssh-keygen -t rsa -C "your_email@youremail.com" |
2、 然后会出现下面的提示要求确认路径
1 | Enter file in which to save the key (~/.ssh/id_rsa): |
我们建议将路径改成 ~/.ssh/github
也就是最后会保存为 github
而不是 id_rsa
这样可以避免主要的 SSH 被覆盖
3、 按回车之后,会出现下面的提示要求输入密码,我们这使用默认的一路回车就行
1 | Enter passphrase (empty for no passphrase): |
为什么不设置呢? 因为有些 Git 客户端软件没有设置密码的地方,省的以后每次输入密码麻烦
4、 成功的话会在 ~/.ssh
创建文件 github
和 github.pub
5、 打开 ~/.ssh/github.pub
文件,复制里面的内容
6、 回到 github 上,进入 Account => Settings(账户配置)
7、 左边选择 SSH and GPG keys ,然后点击 New SSH key 按钮
8、 进入 SSH 添加界面,title 设置标题,可以随便填,粘贴在你电脑上生成的 key
虽然 title 可以随便填写,但我建议填入邮箱
9、 点击 Add SSH Key 按钮,添加成功后界面如下所示
10、 为了验证是否成功,输入ssh -T git@github.com
1 | 如果出现下面的内容,则表示成功 |
Github 官方上添加仓库
1、 登录到 Github.com 官方后,点击右上角的 +
号
2、 然后点击 New repository
会弹出如下所示
- 在 Repository name 输入你想创建的仓库的英文名,比如
souyunku-git-tutorial
- 其它保持默认即可,不过你也可以做一些更改
3、 填写完成后点击 “Create repository” 按钮,就成功地创建了一个新的 Git 仓库
上面这段信息告诉我们:既可以从这个仓库克隆出新的仓库,也可以把本地仓库的内容推送到 GitHub 仓库
创建本地相对应的仓库
刚刚我们在 Github.com 上新建了一个仓库 test
那么我们要如何在本地创建对应的仓库呢?
有三种方式:从远程仓库 clone 、本地新建 和 本地已经存在
1、 从远程仓库 clone
可以使用下面的命令将远程的 test
仓库 clone 到本地
1 | git clone git@github.com:xxx/test.git |
输入如下信息
1 | Cloning into 'test'... |
然后使用 cd test
进入 test
目录
最后做一些配置
1 | git config user.name username |
可以使用命令 git config --list
检查下配置是否正确
2、 本地新建仓库
1 | $ mkdir test # 创建目录 |
3、 如果之前本地仓库已经存在,那么就更好办了,直接使用下面的命令添加 Github 仓库
1 | $ git remote add origin git@github.com:xxx/test.git |
然后我们回到 Github 上创建的仓库,就可以看到我们刚刚添加的文件 README.md
查看当前的远程库
要查看当前配置有哪些远程仓库,可以用命令
1 | git remote |
范例
1 | $ git remote |
如果要查看每个别名的实际链接地址,可以添加参数 -v
1 | $ git remote -v |
拉取远程仓库
如果远程仓库他人做了更改,那么就需要从远程仓库拉取更改,合并到本地仓库
Git 有两个命令用来拉取远程仓库的更新
1、 从远程仓库下载新分支与数据
git fetch
: 该命令执行完后需要执行 git merge
远程分支到本地所在的分支
2、 将远程仓库拉取的更新尝试合并到当前分支
git merge
: 该命令就是在执行 git fetch 之后紧接着执行 git merge 远程分支到你所在的任意分支
假设配置好了一个远程仓库,并且你想要提取更新的数据
你可以首先执行 git fetch [alias] 告诉 Git 去获取它有你没有的数据
然后你可以执行 git merge [alias]/[branch] 以将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支
范例
我们先在 Github 上点击 “README.md” 并在线修改它
然后我们就可以使用下面的命令拉取远程的修改更新
1 | $ git fetch origin |
信息 9c81d29..84a307e master -> origin/master
说明 master 分支已被更新
我们可以使用以下命令将更新同步到本地
1 | $ git merge origin/master |
查看 README.md 文件内容
1 | $ cat README.md |
推送到远程仓库
本地修改的更新,经过自己测试成功后,就可以推送到远端的仓库里
推送新分支与数据到某个远端仓库命令
1 | git push [alias] [branch] |
上面的命令会将 [branch] 分支推送成为 [alias] 远程仓库上的 [branch]
范例
1 | $ touch demo.md # 添加文件 |
点开我们在 Github 的仓库,可以看到文件 demo.md
已经成功提交到远程仓库上了
删除远程仓库
删除远程仓库可以使用命令
1 | git remote rm [别名] |
范例
1、 先查看有多少远程仓库
1 | $ git remote -v |
2、 添加分支 origin2
1 | $ git remote add origin2 git@github.com:xxx/test.git |
3、 再次查看远程仓库有多少分支
1 | $ git remote -v |
4、 删除分支 origin2
1 | $ git remote rm origin2 |