【问题标题】:Git merge remote pull requests on local cloneGit 在本地克隆上合并远程拉取请求
【发布时间】:2018-07-06 22:38:53
【问题描述】:

我正在尝试对以拉取请求的形式提交到 git 存储库的作业进行评分。每个拉取请求都是一个学生的提交。此 repo 中只有一个分支包含分配提示。 (我没有此 repo 的写入权限。)

我将如何在本地机器上测试每个拉取请求?我尝试过类似以下的方法:

  • 我使用 github.com 上的 GUI 克隆了 master 分支
  • 我尝试了this article 中的说明,在 gitbash 终端中输入以下内容:

    $ git checkout -b [student-alias]    
    $ git fetch origin pull/1/head:[student-alias] --update-head-ok
    
  • 获取:

    $ git fetch origin pull/1/head:[student-alias] --update-head-ok
    

给我以下错误:

远程: 计数对象:61,完成。
远程:压缩对象:100% (4/4),完成。
远程:总共 61 个(增量 21),重复使用 20 个(增量 20), 打包重用 37
解包对象:100% (61/61),完成。
来自 https://github.com/repo-name
! [拒绝]
refs/pull/1/head -> [学生别名](非快进)

【问题讨论】:

  • 你永远不应该使用--update-head-ok,这也不在github.com上的说明中。
  • @dudeguypal 与您声称遵循的教程相比,您为什么要切换命令顺序?

标签: git github


【解决方案1】:

如果你只想测试每个分支而不是

git fetch origin [student-alias]
git checkout origin/[student-alias]

将允许您将工作目录设置为每个分支的当前状态[student-alias]

如果您想检查拉取请求的状态(通常在 github 上与它所来自的分支的最新版本没有区别,除非合并),那么我建议按照您链接的教程进行操作(没有 not提到--update-head-ok,然后去

git fetch origin pull/[pull-request-id]/head:[student-alias]
git checkout [student-alias]

这两者的区别在于,前者在分支上工作,而后者在拉取请求上工作(这是一个 github 功能)。

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 1970-01-01
    • 2013-02-03
    • 2016-10-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多