目录

Git团队协作与Github操作

Git 团队协作与Github操作

学习目标

  • 如何使用Git进行团队内协作
  • 如何使用Git进行跨团队协作
  • Github操作

团队内协作流程

../../../images/image-20230404191225914.png

团队协作的机制在于是否有一个代码托管中心,通俗来讲,所谓代码托管中心就是远程的代码托管服务器,整个团队内协作流程如下:

  1. 程序员A推送(push)了自己的写的本地库到程序员A的代码托管中心
  2. 程序员B从代码托管中心中复制(clone)下了代码,成为自己的本地库。
  3. 程序员B修改了代码,并且程序员A邀请程序员B加入组织,程序员B再推送(push)修改后的代码到代码托管中心。
  4. 程序员A拉取(pull)修改后的代码更新程序员A自己的本地库代码。

跨团队协作流程

../../../images/image-20230404191413514.png

所谓跨团队就是指远程库在代码托管中心上根据不同的用户进行不同的改变,跨团队协作流程如下:

  1. 程序员C程序员A的代码托管中心中复制(fork)了一份程序员A的代码,放到程序员C的代码托管中心
  2. 程序员C复制(clone)自己代码托管中心的代码到本地。
  3. 程序员C修改了代码并且推送(push)到程序员C的代码托管中心
  4. 程序员C开始向程序员A的代码托管中心发送了一个拉取请求(pull request),告诉对方可以拉取修改好的代码。
  5. 程序员A审核代码后,把对方修改好的代码合并(merge)到自己的代码。
  6. 程序员A程序员B都可以拉取修改后的代码。

Github操作

首先需要访问Github官网并且注册账号登陆,然后点击右上角的new repository创建一个代码仓库,然后进行复制下这个仓库的clone链接。以下是远程仓库的操作命令。

命令 说明
git remote -v 查看当前所有的远程地址别名
git remote add 别名 远程地址 给远程仓库起一个别名
git push 别名 分支 推送本地分支上的内容到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支名 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并

先查看一下当前的远程地址别名:

1
git remote -v

../../../images/image-20230405111120738.png

可以看到当前没有设置远程仓库,我们设置一下远程仓库。

../../../images/image-20230405112154799.png

将分支推送到远程库

推送的最小单位是分支,将本地main分支推送到别名为origin的远程库,其语法如下:

1
git push origin main

../../../images/image-20230405112547365.png

使用密码推送会报错(2021.04.13已更新为凭据推送,需要github上申请token),我们申请一个token后再进行推送。

../../../images/image-20230405112735228.png

申请保存token后推送成功。

../../../images/image-20230405113537386.png

在远程仓库可以看到推送后的结果。

../../../images/image-20230405113856556.png

克隆远程库中的仓库

假设我们删除了本地的仓库,将远程库的仓库内容整个克隆到本地,需要使用git clone命令。

../../../images/image-20230405114537097.png

就会得到一个和远程库一样的仓库。

  • git clone命令相当于做了3件事:1. 创建本地库。2. 初始化本地库。3.修改别名。

  • git clone命令使用不需要登陆账号,公共库的读权限是开放的,任何人都可以克隆该远程库。

拉取远程库中的代码

假设我们在远程库中修改了这个代码,需要拉取远程库中的修改后的代码到本地库,则需要使用git pull命令拉取,首先我们修改远程库的代码。

../../../images/image-20230405114701159.png

提交修改后,然后我们再使用命令拉取在远程库修改后的代码。

../../../images/image-20230405114910128.png

../../../images/image-20230405115057792.png

  • git pull命令必须在一个已有的仓库中使用,拉取已有仓库设置的远程库的代码。

  • git pull该动作会同步修改本地库的代码。

Github团队内协作

  • 首先程序员B用git clone克隆了程序员A的代码库。
  • 程序员B对代码库中的代码进行了修改,使用git add命令添加暂存区,并使用git commit提交了一个修改后的版本。
  • 为了让程序员A来看到修改后的代码,程序员B使用git push 程序员A库的远程连接 本地分支来推送修改后的分支,结果报错没有权限。
  • 程序员A登陆github并且找到这个代码库,在Settings里面点击Manage Access选项,点击invite,邀请获得连接之后发送个程序员B。
  • 程序员B点开链接后需要接受或者是拒绝,程序员B点击了同意。
  • 程序员B使用git push 程序员A库的远程连接 本地分支来再次推送修改后的分支,结果成功。
  • 程序员A可以用git pull拉取程序员B修改推送到远程库的里的代码。

Github跨团队协作

  • 程序员C在github上fork了程序员A的代码库。并使用git clone克隆了自己复制的程序员A的代码库到本地,并且修改了其中的代码,git add将修改的文件添加到缓存区,使用git commit提交了修改后的版本,并且使用git remote设置了别名,并且用git push向远程库推送了修改的分支。
  • 程序员C为了让程序员A看到修改,于是向程序员A发送了一个pull request请求。
  • 程序员A看到了请求,并merge pull request合并了自己的远程库代码。
  • 于是程序员A和程序员B都可以看到并拉取程序员C修改的代码了。

Github SSH免密登陆

  • 在用户目录下使用ssh-keygen -t rsa 需要免密的邮箱命令生成非对称加密密钥。
  • 在.ssh目录下有一个公钥和私钥文件,把公钥的内容复制下来,点击github中的setting,选择SSH and GPG keys选项,输入SSH keys添加粘贴好公钥内容。
  • 使用pull和push命令时就可以免密登陆了。

总结