2010-09-30 10 views
17

Mam puste repozytorium i dwie kopie robocze - jedną na moim komputerze, drugą na serwerze.
Okazało się, że mam do .gitignore pewien plik, który musi być specyficzny dla każdej maszyny. Nazwijmy to "settings.py". Ten plik jest już zatwierdzony.Jak mogę .zgłosić i usunąć już zatwierdzony plik bez wpływu na inne kopie robocze?

Złożyłem "settings.py" w .gitignore, aby go zignorować. Kiedy teraz zmienić plik na mój status git maszyna nadal mówi mi

modified: settings.py 

Pomyślałem, że muszę usunąć settings.py tak:

git rm --cached settings.py 

Następnie git add ., a następnie git commit.

Ale kiedy teraz pcham to do gołego repo i wyciągam do kopii roboczej na serwerze, settings.py jest tam usuwany - co jest złe, ponieważ muszę zachować ten konkretny settings.py.

Pomyślałem, że mogę po prostu skopiować settings.py i umieścić go z powrotem po usunięciu, ale mam wrażenie, że musi być lepszy sposób na zrobienie tego.

Odpowiedz

8

Możesz powiedzieć git, aby całkowicie ignorował zmiany śledzonych plików bez konieczności ich usuwania. Użyj tego polecenia:

git update-index --assume-unchanged [FILENAME] 

Następnie, jeśli chcesz śledzić plik nowszym:

git update-index --no-assume-unchanged [FILENAME] 
7

Czy wolisz zachować settings.py usunięty na stałe (zarówno lokalnie, jak i na pilocie), oraz:

  • wersja pliku setting_remote dla zdalnej
  • wersja pliku setting_local dla lokalnej stronie (tj z lokalnymi określonymi ustawieniami)
  • dodać filter driver w stanie odbudować odpowiedni plik settings.py przy kasie.

alt text

ten sposób settings.py utrzymywana jest "prywatny" (non-wersjami). Jednak określone wartości dla każdego środowiska są wersjonowane, każdy ustawiony w osobnym pliku, bez żadnego problemu z łączeniem.

Powiązane problemy