【发布时间】:2013-08-22 09:57:07
【问题描述】:
我遇到了一个 git 问题,答案应该在 stackoverflow 上的某个地方,但我找不到。
想象一个团队正在使用 sass 或其他构建文件处理某个项目。多个开发人员构建文件,我们希望对构建的文件进行版本控制,以防非开发人员想要克隆并签出项目而无需先构建。
但是在项目中包含构建的文件总是会产生合并冲突。
我们可以忽略本地更改,只让首席开发人员不时检查他的版本。
可以使用用户定义的 .gitignore 文件或使用以下方法来完成忽略:
$ git update-index --assume-unchanged path-to-file.css
但这在拉动时会产生问题。
$ git pull
remote: Counting objects: 30, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 16 (delta 11), reused 16 (delta 11)
Unpacking objects: 100% (16/16), done.
From github.com:User/MyProject
4e1s389..a231344 development -> origin/master
Updating 63sdf04..a231344
error: Your local changes to 'path-to-file.css' would be overwritten by merge.
Aborting.
Please, commit your changes or stash them before you can merge.
解决方法是一直检出文件,例如使用别名:
git config --global alias.cobuilded 'checkout path-to-file.css'
然后经过一些工作和建设:
git cobuilded
git commit -am "work done"
git pull
git push
但是对于这个问题应该有某种更简单的解决方案吧?
git ignore-this-file-and-always-merge-theirs-from-origin path-to-file.css
我已经找到了this 问题和一个可能的解决方案来始终合并他们的问题。但在我的情况下,合并之前的拉动已经失败......
【问题讨论】:
-
如何更改策略以在您的主分支上完全不提交 css 文件?您仍然可以通过让您的首席开发人员、自动构建服务器工具或 post-commit-hook 在单独的分支上编译 scss->css 来保持能够克隆完整工作存储库(包括 css)的理想。这个单独的分支永远不会合并回 master,但会不断地将您的 master 分支合并到其中,sass 对其运行,然后提交生成的 css。
-
听起来不错。当某些最终用户或测试人员需要完整的工作副本时,他们可以克隆该 repo 而不是 master!有没有可能用某种推钩来做这个服务器端?