2011-02-14 44 views
5

我有一个本地开发的主分支和一个heroku分支来部署到heroku。我有一个conf文件,我忽略并且不检查master,因为它是私有的,但是它在heroku分支中并没有被忽略,并且它已被添加到repo中,因为heroku服务器需要它工作。防止Git删除被忽略的文件

问题:我注意到当我从master到heroku做git checkout时,它从master中删除了我的conf文件。 heroku conf文件一定会自动覆盖master上的同一个文件,并且由于该文件被忽略,git没有警告我,我有没有提交的更改,我做了什么... shucks ...

How do我阻止这种事情发生?有没有办法得到关于它的警告,或者我应该调整我管理事物的方式。

回答

1

如果你愿意改变你的工作流程,听起来好像你应该在本地检查配置文件。我有类似的需求,和我做同样的事情:

Workflow: 
Master -> Work -> Heroku 

在这种情况下,你会检查配置文件为Work,与任何其他私人文件一起。要提交,您需要将所有未提交的提交移至主用户和用户cherry-pick。我用的是不NOCOMMIT:启动并构建成剧本我称之为pull-work.sh

这样所有的提交,你不打破DVCS与配置文件从分离还不如进行版本控制模型远程存储库。

这是pull-work.sh。这是由另一个SO用户在我的一个类似的问题上开发的,尽管它们的问题不尽相同。

#!/bin/sh 

BRANCH=`git branch | grep ^\\* | cut -d' ' -f2` 
if [ $BRANCH != "master" ]; then 
    echo "$0: Current branch is not master" 
    exit 1 
fi 

git log --pretty=oneline work...master | grep -v -E '(NOCOMMIT|DEBUG):' | cut -d' ' -f1 | tac | xargs -l git cherry-pick 
+0

+1但链接回到你提到的问题将是很好的 – 2011-02-18 10:33:19