Git:简单的部署,我怎么能避免'因为你有未合并的文件而拉不可能'

时间:2012-04-14 12:07:48

标签: git deployment

我得到的是一个本地存储库和2个远程存储库(一个名为bare的bare和一个名为dev的非裸名称。

我想要实现的是一个简单的部署,这样当我推送到裸存储库时,dev存储库会提取更改。

我在裸存储库上使用了一个post-receive hook,它只是: -

cd (path-to-dev-repo)
unset GIT_DIR
git reset --hard HEAD # This is my failed attempt at stopping the merge conflicts
git pull origin master

当我对我的本地存储库进行更改并将它们推送到裸机时,开发人员会将其拉出来给我提供以下内容: -

CONFLICT (add/add): Merge conflict in application/01_sql_schema.sql

然而,我所做的唯一文件更改是本地文件 - 我不明白为什么更改只能在一个地方更改时无法自动合并。

非常感谢任何帮助。

编辑:替代可能的解决方案

拥有2个裸存储库并将开发一个从钩子中检出到所需的文件夹会不会更好?

2 个答案:

答案 0 :(得分:1)

为什么要为部署版本使用repo?

只需使用GIT_DIR=path/to/app git checkout -f检查从裸仓库到应用位置的文件,并避免出现类似问题。

答案 1 :(得分:0)

尝试存储更改,然后再将其弹出:

cd (path-to-dev-repo)
unset GIT_DIR
git stash
git pull origin master
git stash pop