当我在 GitHub 上执行拉取请求(针对 master 分支)时,我们可以忽略一些文件更改,例如
您无法有选择地忽略拉取请求中的某些文件。 有两种解决方法: -
首先-
第二个-
任何一种方法都可以。哪一个更容易取决于要包含/排除的文件数量。
如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 dev src/
这只会合并src/文件夹
中更改的文件注意:您也可以有选择地为每个文件执行此操作。
然后推送到远程仓库
git push origin staging
但只有当要排除的文件很小时,此解决方案才有用。
使用您同意的最后一次提交创建分支:
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
。
我的场景是:我在 AWS 中使用 CI/CD,管道从
buildspec.yml
读取。在开发管道中,我需要一个用 buildspec.yml
编写的特定 Cloudfront id,并且在主管道中 Cloudfront id 发生变化。我防止在 Github PR 中更改此文件的步骤是:
buildspec.yml
文件buildspec.yml
文件中添加.gitignore
文件buildspec.yml
。设置每个分支(dev 和 main)对应的值这样
.gitignore
就会忽略 dev 和 main 中 buildspec.yml
的不同版本。在每个 PR 中,我都会获取所有文件的更改,但 buildspec.yml
不会出现。值得一提的是,如果我在 buildspec.yml
文件中进行更改,git 将识别该更改并使其可提交(我不确定为什么)。
我希望这对任何人都有帮助:)