2010-07-23 11 views
10

Przeprowadzamy migrację z Perforce do GIT. Zasadniczo w repozytorium znajdowało się kilka plików, które nie powinny być regularnie sprawdzane przez poszczególnych programistów. Rzeczy takie jak pliki projektu zaćmienia. Każdy programista może pobrać początkowy plik .project, ale następnie dostosować go do swojego środowiska.Oznaczyć plik w repozytorium GIT jako tymczasowo zignorowany

Z P4, mógłbym wziąć te pliki, umieścić je w osobnej liście zmian i zapomnieć o nich. Synchronizacja nie zastąpi ich i nie zostaną zatwierdzeni, gdy zaakceptuję domyślną listę zmian.

Czy można zrobić coś podobnego z GIT?

chciałbym nadal być w stanie "git commit -a"

+0

możliwy duplikat [Plików konfiguracji specyficznych dla maszyny] (http://stackoverflow.com/questions/1396617/committing-machine-specific-configuration-files) – Senseful

+0

Możliwy duplikat [Can I 'git commit' pliku i zignoruj ​​jego zmiany zawartości?] (https://stackoverflow.com/questions/3319479/can-i-git-commit-a-file-and-ignore-its-content-chang es) –

+0

* Chciałbym nadal móc "git commit -a" * - to jest właśnie twój problem, właśnie tutaj. Używając 'git', na ogół nie zatwierdzasz wszystkiego, sprawdzasz, co zmieniło się z' git status' i 'git diff', decydujesz co dodać (lub do' .gitignore'), a następnie zatwierdzasz dokładnie to, czego potrzebujesz . Ten przepływ pracy zapewnia, że ​​twoje zatwierdzenia nie zawierają żadnych elementów typu cruft, takich jak przypadkowo sprawdzone obiekty lub pliki tymczasowe, itd. Zobacz, tworzenie historii "git" opowiada historię, a im lepiej ją opiszesz, tym bardziej będzie ona przydatna. Lepiej nie rozmazuj go bezmyślnym popełnianiem-mój-stos-śmieci. – cmaster

Odpowiedz

5

Jeśli potrzebujesz wspólną podstawę dla tych (.project, .classpath ...), można:

  • wersja szablonu z tych plików (.project_tpl, .classpath_tpl ...)
  • użyć filter driver wygenerować, na kasie, rzeczywistych plików (które nie będzie wersji, a jedynie lokalnie zmodyfikowane przez twórców)

alt text

(etap 'clean' podczas popełnić coś dla tych szablonów nie robić.
Tylko krok „smudge” używany jest tutaj, aby wygenerować prywatnych plików)

Uwaga: jest to niewielki „mis-use” z kierowcą filtra, który ma przetwarzać tylko zawartość pliku, aby nie generować nowe.
Ale może to pomóc w scenariuszu (pod swoją „smudge” skrypt nie nadpisać ślepo pliki eclipse jeśli zdarzy się już tu być.)

+1

Mogłabym więc stworzyć dość głupią rutynę, która usunie .tmpl z czegokolwiek z rozszerzeniem .tmpl. Mogę wtedy dodać .project.tmpl lub configuration.xml.tmpl do git i kiedy ludzie je wyciągną, dostaną .project lub configuration.xml Myślę, że mógłbym również dodać te wygenerowane pliki do .gitignore i być złotym. –

+0

@Marc: taki jest pomysł :) – VonC

10

Prawdopodobnie szuka

git update-index --assume-unchanged .project

+0

Czy jest jakiś sposób, aby włączyć tę opcję, gdy użytkownik klonuje repozytorium, zamiast polegać na nich pamiętając o jego wykonaniu? – Programster

+0

Nie jestem tego świadomy. –

Powiązane problemy