Pull Request,忽略一些文件更改

问题描述 投票:0回答:4

当我在 GitHub 上执行拉取请求(针对 master 分支)时,我们可以忽略一些文件更改,例如

  • 我们在分支“release”中有一个名为“fileA”的文件,并且在“master”中有相同的文件,但我们在分支“release”中的“fileA”中做了一些更改
  • 当我们进行 Pull Request 时,有什么方法可以忽略 'fileA' 中的更改,不要让它合并到 'master' 中。
git github pull-request
4个回答
43
投票

您无法有选择地忽略拉取请求中的某些文件。 有两种解决方法: -

首先-

  • 从“release”创建一个新分支
  • 替换“master”中不需要的文件
  • 从这个新分支创建拉取请求

第二个-

  • 从“master”创建一个新分支
  • 将所需文件的更改从“发布”中放入
  • 从这个新分支创建拉取请求

任何一种方法都可以。哪一个更容易取决于要包含/排除的文件数量。


16
投票

https://stackoverflow.com/a/28703636/12138397中所述,不可能在 Pull-Request 中排除文件,并且已提出的替代方案也可以工作。

但是有一个更简单的解决方案。在这里,我考虑将staging作为我的目标,将dev作为我的来源

root
|-- src
|   -- app.py
|-- .gitignore
|-- settings.py
|-- requirements.txt

比方说,我想忽略 settings.py 文件被合并

  • 首先移动到目标分支 (要合并的分支) 变化)
    git checkout staging
    
  • 然后你可以使用 git checkout 命令选择性地选择你想要的文件 合并
    git checkout dev src/
    
  • 这只会合并src/文件夹

    中更改的文件

    注意:您也可以有选择地为每个文件执行此操作。

  • 然后推送到远程仓库

    git push origin staging
    

但只有当要排除的文件很小时,此解决方案才有用。


2
投票

使用您同意的最后一次提交创建分支:

git branch my-branch <sha>
git checkout my-branch

选择您想要拉取请求的提交作为补丁

git format-patch -10 <sha> --stdout > 0001-last-10-commits.patch

应用补丁:

git am < 0001-last-10-commits.patch

您的提交将保持原样。您可以立即

git push -u origin my-branch


0
投票

我的场景是:我在 AWS 中使用 CI/CD,管道从

buildspec.yml
读取。在开发管道中,我需要一个用
buildspec.yml
编写的特定 Cloudfront id,并且在主管道中 Cloudfront id 发生变化。我防止在 Github PR 中更改此文件的步骤是:

  1. 将文件内容备份到另一个外部文件中
  2. 删除
    buildspec.yml
    文件
  3. buildspec.yml
    文件中添加
    .gitignore
    文件
  4. 推动这些改变
  5. 直接从 Github UI 创建一个新的
    buildspec.yml
    。设置每个分支(dev 和 main)对应的值

这样

.gitignore
就会忽略 dev 和 main 中
buildspec.yml
的不同版本。在每个 PR 中,我都会获取所有文件的更改,但
buildspec.yml
不会出现。值得一提的是,如果我在
buildspec.yml
文件中进行更改,git 将识别该更改并使其可提交(我不确定为什么)。

我希望这对任何人都有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.