当前位置:   article > 正文

GIt学习及命令的使用(六)——多人协作_squash and merge

squash and merge

一、github部分

  1. 主账号中创建一个仓库,名为 work,在创建仓库中:
    在这里插入图片描述
    紫色框中
    1、左边的忽略文件下拉框:我们在写代码时,总会出现一些不需要上传到仓库的垃圾文件、缓存文件、备份文件、环境文件等等,可以创建一个忽略文件将这些不需要被上传到远程仓库的文件忽略掉。忽略文件的名字是 .gitignore,它被放置在仓库主目录下,将不需上传的文件的名字写入其中,Git 就会自动忽略它们。比如这个仓库是用来 Windows 开发的,就在下拉框中选择 Windows,如果这是一个保存 Java 项目的仓库,就选择 Java。这样,在仓库创建成功后,忽略文件就自动出现了,这个忽略文件中有对应的语言或工具中绝大部分通用的忽略规则。当然了,你也可以自己手动增删改。
    如果在创建仓库时忘记了选择忽略文件,几个提交后突然想起来,怎么办?GitHub 上有人把忽略文件都做好了,打开链接github / gitignore ,这个仓库里有很多忽略文件,选择你需要的放到自己的仓库即可。

2、右边的开源许可下拉框:关于开源许可证


主账号创建项目如下:
在这里插入图片描述

  1. 在主账号中增加该仓库的合作者,也就是组员:
    在这里插入图片描述
  2. 组员接收邀请,点击接受链接后跳转到主账号仓库中,点击fork将项目克隆到自己仓库;
  3. 切换到组长的 GitHub 页面,在仓库中添加一些项目任务或待解决问题,这些任务就是 issue
  4. 写好任务标题后,可以在右侧指派一位或多位项目参与者来完成,同样 GitHub 也会给被指派者发邮件的(可以在自己的 GitHub 账号上设置拒收哪类邮件):
    在这里插入图片描述
    注意:组长仓库里的 issue 不会出现在组员仓库中。

二、Git部分

  1. 克隆仓库到本地(从自己账号上克隆)
  2. 现在我们要完成组长仓库的一个 issue,注意每个 issue 在创建后都会生成一个编号,我们首先完成 1 号 issue
    在这里插入图片描述
  3. 组员完成issue后,注意在执行 commit 命令时,备注信息里有个 “fix #1”,这是必要的,当备注信息中含有此字样的 commit 出现在组长仓库,仓库中编号为 #1 的 issue 就会自动关闭。
    在这里插入图片描述

完成以上操作,组员的 GitHub 仓库会发生变化,新增一个版本的提交。

  1. 接下来,把修改从组员的仓库添加到组长的仓库:

使用pull request 方法:
创建一个 PR 就是从甲分支向乙分支提一个请求,该请求中有一个或多个提交,对方觉得可以、没问题,就合并(merge) 这个请求,也就是把请求中所有提交的修改增加到乙分支上,整个过程简称 “提 PR”、“检查合并 PR”。提 PR 既可以在仓库内,也可以跨用户跨仓库。


如下图所示,仔细检查紫色框中的内容是否正确,再看绿色椭圆形框中的绿色字样 “Able to merge.”,说明这个 PR 中的修改跟目标分支没有冲突在这里插入图片描述


完成后,页面自动跳转到组长的 work 仓库 PR 的合并页面:
在这里插入图片描述
该页面只有参与项目协作的成员有权限进入,当前 GitHub 的登录用户是组员,所以可见,且对这个仓库有完全的管理权限,除了删除仓库。当然了,检查合并 PR 的权限也是有的。重要的一点:提了 PR 之后,一定要求参与项目的其他成员来检查合并,不要自己来,尽管自己有权限。


合并 PR 的方法有三种:
1. Create a merge commit :这种方式会在组长仓库的 master 分支上生成一个新的提交,且保留 PR 中的所有提交信息。这是一种常规操作,用得最多。
2.Squash and merge :压缩合并,它会把 PR 中的全部提交压缩成一个。此方法的优点就是让提交列表特别整洁。一个 PR 里有很多提交,每个提交都是很细小的改动,保留这些提交没什么意义,这种情况就使用此方法合并 PR。
3.Rebase and merge :这种方法不会生成新的提交,例如 PR 中有 6 个提交,用此方法合并后,组长仓库也会新增 6 个提交。注意,这些提交的版本号与组员的提交不同,此外完全一样。


需要注意的一点:从 A 向 B 提 PR 后,在 PR 合并或关闭前,A 上所有新增的提交都会出现在 PR 里。


  1. 同步主仓库
    主账号的 master 分支新增了一个提交,所以需要让组员的仓库同步主账号的仓库,使它们的提交版本一致。作为组员,要时刻保持自己的 master 分支与主账号的一致,以避免在下次提 PR 时出现冲突,该操作叫做 “同步主仓库”,主账号的仓库就是主仓库。

同步主仓库是要用 Git 操作的:
首先,使用 remote 系列命令来增加一个关联主机,执行 git remote add [主机名] [主仓库的地址],注意,主仓库的地址使用 https 开头的。
在这里插入图片描述
(如上图所示,主机名是随意定义的,只要不是 origin 就可以,因为自己的仓库地址对应的主机名是 origin,主仓库的主机名通常定义为 up 或 upstream,这个主机名其实就是一个变量,它的值就是仓库地址)
(此时可以使用fetch命令检查关联主机有没有)


接下来,有两种方法同步主仓库:
一是git pull --rebase [主机名] [需要同步的远程分支名],此命令需联网;
二是git rebase up/master,此命令不联网,因为前面已经执行了 git fetch up 这个需要联网的命令,本地已经有了最新的主仓库 master 分支信息,所以可以这么操作。

三、多人协作的第二种方式

还有一种常用的方式,就是不用 Fork,直接克隆组长的仓库到本地,然后各自创建自己的分支,在自己的分支上进行修改提交,最后从自己的分支向 master 分支提 PR。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/824983
推荐阅读
相关标签
  

闽ICP备14008679号