GIT,不要合并特定文件。

4
我有这样的情况。我有两个分支,主干和开发分支。
在开发分支上,我有一些文件,比如说tools.js。如果我需要更改此文件,则提交并将其推送到Github开发分支。
完成所有操作后,我将合并开发分支到主干。主干分支上没有tools.js文件,我希望保持这种状态。
那么,在合并过程中如何跳过某些文件?

2
你不能这样做,除非付出大量的工作。幸运的是,这很可能是一个XY问题。你能否向我们解释一下这个文件是什么,为什么它在develop分支中,以及为什么你不想将其合并到master分支中?然后我们可以想出更好的方法来处理这个问题。 - Schwern
2
这些是构建工件吗?它们是否应该被提交?也许它们需要在你的.gitignore文件中。 - Schwern
2
我明白了。我认为这很不寻常。通常情况下,你让Heroku执行构建。我认为你的Heroku部署存在问题。你应该询问相关人员。 - Schwern
我不喜欢Heroku进行构建,所有的Webpack打包、压缩和gzip等都已经在本地自动化,我只需要将捆绑好的文件推送到Heroku上完成即可。这样我可以拥有更多的控制权。这个捆绑文件在主分支上并不是必需的。如果有人需要,可以轻松运行脚本 "yarn run build"。 - Igor-Vuk
2
我认为你应该询问关于部署偏好和如何与Heroku和Git配合使用的问题。有一些事情可以做,以排除某些文件的合并,但它们并不愉快,也不应该成为你常规工作流程的一部分。肯定有更好的解决方案适合你,但我不是Heroku专家。 - Schwern
显示剩余6条评论
2个回答

2

由于你只将devlop分支合并到master分支(不是反过来),因此你可以在master分支中添加.gitignore文件以忽略tools.js。以下是详细步骤:

1. 在主分支上添加.gitignore文件以忽略tools.js

git checkout master
touch .gitignore
echo 'tools.js' > .gitignore
git add .gitignore
git commit -m 'ignore tool.js in master branch'

注意:如果您已经在主分支中提交了tools.js文件,则使用以下命令来忽略HEAD版本中的该文件:

git rm tools.js --cached
git add .
git commit -m 'remove tools.js in HEAD version on master branch'

2. 在将develop分支合并到master分支时删除tools.js文件

在忽略master分支中的tools.js文件后,您可以将develop分支合并到master分支。在合并过程中,文件tools.js会发生合并冲突。您可以使用以下命令来解决合并冲突:

git rm tools.js
# modify and save other conflict files if there has
git add .
git commit -m 'merge develop branch into master branch'

0

根据您的描述,tools.js是一个构建产物,因此它根本不应该出现在您的Git仓库中。您需要在部署过程中的某个地方进行构建 - 如果不是在Heroku上,则可以在Pipelines中进行构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接