Переключение веток в GIT с незафиксированными, автоматически генерируемыми изменениями - PullRequest
3 голосов
/ 24 января 2012

Я пытаюсь переключать локальные ветви в GIT, но некоторые автоматически сгенерированные, игнорируемые и незафиксированные файлы мешают этому. Есть ли способ, чтобы эти файлы не мешали мне переключать ветки?

У меня общий рабочий процесс. У меня есть ветка разработки, в которой есть несколько файлов .class, которые я генерирую локально из исходного кода. Файлы .class отсутствуют в репозитории и игнорируются. Когда я обновляю свою локальную ветку разработки, я генерирую все файлы классов. Все хорошо.

Когда я пытаюсь переключить ветки, меня предупреждают обо всех моих незафиксированных изменениях в этих файлах классов. Я могу обойти это, переключая ветки из командной строки с помощью переключателя силы, но это кажется глупым. Есть ли какой-нибудь способ сообщить GIT, что на самом деле это не должно касаться этих файлов / папок?

Моя команда использует Eclipse и EGit. Любая помощь будет оценена.

Спасибо, Дэвид Р

Ответы [ 3 ]

3 голосов
/ 24 января 2012

В вашей другой ветке, вероятно, есть те, кто совершил, и они столкнутся с тем, что у вас есть в вашей рабочей директории.Вы можете сделать одну из 2 вещей:

git clean -xdf # to get rid of the untracked files and then you can switch

или

git clone this-repo # to another place
git checkout -t origin/other-branch 
# clean up the files that should be ignored
git add -A && git commit -m "fixed ignored files" && git push -f
# go back to the original repo
git checkout other-branch # should work now
0 голосов
/ 28 июня 2012

Обратите внимание, что эти незафиксированные файлы все еще являются проблемой, недавний EGit2.0 сейчас поддерживает stash .

Egit stash

И в диалоге результатов ветвления есть новая опция хранения .
Это позволяет быстро спрятать любые конфликтующие изменения, которые препятствуют извлечению ветви ,

0 голосов
/ 24 января 2012

Если вы действительно не хотите фиксировать эти файлы, добавьте их в локальный файл .gitignore.

В проекте на python мой .gitignore выглядит следующим образом:

.*~
*~
*.py[co]

# Unit test / coverage reports
.coverage
.tox

#Translations
*.mo

Существует также дерево мерзавцев популярных файлов .gitignore для различных языков программирования и сред.

Если вы хотите сохранить свою работу, но можете перейти в другую ветку, возможно,быстро выпустите исправление ошибок, git stash - ваш друг.

git stash save "meaningful message"

спасет тайник и позволит вам переключать ветви

git stash list

перечислит различные тайники

git shash pop <stash id>

восстановит тайник

...