作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经提交了一些文件并将其推送到远程功能分支并创建了一个 merge 请求。我用过
git commit -a -m "blah blah"
git push
所以它推送了所有修改过的文件。不应该推送其中一个文件(这是主文件中的现有文件)(例如可执行文件)。如何从 merge 请求中删除此文件,以便当 MR merge 到 master 时,不需要的文件不会被 merge (好像它从未在 MR 中存在)。我找到了 page提到以下命令
git rm {filename} --cached
git commit -m "[...]"
git push
我尝试了这些命令,但在 Gitlab 的 merge 请求中没有看到文件被删除。这是正确的做法吗?
更新1:
使用上面的命令,我可以看到在上面的提交中提到的文件 deleted
。但是当我将更新的 MR merge 到 master 时,该文件也会从 master 中删除。
更新2:
删除引起混淆的句子并更新标题
最佳答案
你使用的是什么版本的 Gitlab?
刚刚使用最新版本 (14.5.2) 进行了测试:
git checkout -b feature-123
git add package.json package-lock.json
git commit -m 'Commit with extra file.'
git push --set-upstream origin feature-123
创建 MR,显示两个文件已更改
现在,从同一个分支:
git rm --cached package-lock.json
git commit -m 'Removing extra file.'
git push
MR 现在只显示一个修改过的文件。
但如果这个 MR 在没有 squash 的情况下被接受,git 历史记录将包含添加和删除额外文件。
如果您提交了一个非常大的文件,最好让维护者在 merge 之前压缩您的更改。或者删除 MR 并通过一次提交创建一个新的。
关于git - 如何从 merge 请求中删除跟踪的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70277679/
我是一名优秀的程序员,十分优秀!