Git – 在合并期间忽略文件

我在远程beanstalk服务器上有一个叫做myrepobeanstalk

我克隆到我的本地机器。 创build了另外两个分支: stagingdev 。 推动这些分支也远程。

现在:

  local remote server -------------------------------------------------------- master ==> Pushes to `master` ==> deployed to `prod` staging ==> Pushes to `staging` ==> deployed to `staging` dev ==> Pushes to `dev` ==> deployed to `dev` 

我有一个名为config.xml的文件,每个分支上都有所不同。

我只想在合并时忽略这个文件。 但是我希望在签出或提交回执分支时包含此内容。

我想这样做的原因是,我们有一个部署脚本,用于提取(签出)特定的分支,并部署在各自的服务器上。 所以我们需要将这个特定分支的config.xml文件部署到上面指定的特定服务器。

我猜.gitignore不会工作。 还有什么其他的select? 请注意,忽略的文件应该是checkout和commit的一部分,这很重要。 只有在合并时才应该被忽略。

谢谢!

我通过使用git merge命令和'–no-commit'选项解决了这个问题,然后明确地删除了staged文件,并忽略了文件的更改。 例如:说我想忽略对myfile.txt的任何更改我按照以下步骤操作:

 git merge --no-commit <merge-branch> git reset HEAD myfile.txt git checkout -- myfile.txt git commit -m "merged <merge-branch>" 

如果您有要跳过的文件列表,可以将语句2和3放在for循环中。

我最终发现了git的attributes 。 尝试一下。 工作到目前为止。 没有检查所有场景。 但它应该是解决scheme。

合并策略 – Git属性

你可以通过使用git merge --no-commit来开始,然后编辑合并,不pipe你喜欢,即通过取消configurationconfig.xml或其他文件,然后提交。 我怀疑你会想在使用钩子之后进一步自动化,但是我认为至less应该手动进行一次。

您可以使用.gitignoreconfig.xml保存在存储库中,然后使用post commit钩子将相应的config.xmlfile upload到服务器。

这里git-update-index – 将工作树中的文件内容注册到索引。

 git update-index --assume-unchanged <PATH_OF_THE_FILE> 

例:-

git update-index --assume-unchanged somelocation/pom.xml