2011-02-14 47 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