2012-03-20 4 views
2

Первое сообщение на SO так, пожалуйста, простите меня, если я пропущу что-то.Тонны git совершают после вытаскивания удаленной ветки

Я новичок в git и люблю его. Вещи были в основном идет гладко, за исключением этого ..

разработчиков я работаю с толкаемом новой ветви к нашему GitHub, назовем его «» devbranch

Я хотел рушить «devbranch» на мой Eclipse (который в настоящее время имеет только мастер). После некоторых команд на блоге и на Pro Git, я использовал в Eclipse «Pull» (ПРЕДПОЛОЖИТЕЛЬНО исполнение «GIT тянуть»), а затем в терминале выполняется git checkout -b devbranch origin/devbranch как на http://progit.org/book/ch3-5.html

Который (я думаю) именно то, что я сделал на нашем сервере, который, казалось, работал. В Eclipse это установило мою рабочую копию в «devbranch», и все файлы были там, как и должно быть.

Как ни странно, хотя, при выполнении git status или когда собирается совершить проект в Eclipse (который показывает, какие файлы должны быть привержены), есть тонны файлов, которые кажутся в измененном состоянии? Может ли кто-нибудь помочь объяснить эту неудачу/что я, возможно, сделал не так, или как я могу это исправить? Я попытался сделать еще один git pull, но он просто говорит, что мой мастер и devbranch все в курсе.

Спасибо заранее. Ваши советы очень ценятся.

+0

С Eclipse 3.7 и egit (из Marketplace) вы можете делать все это изнутри Eclipse. Либо сделайте это, либо сделайте все за пределами Eclipse. Наличие двух разных настроенных версий git, управляющих вашими файлами, скорее всего, станет плохим опытом начинающих. –

ответ

0

Eclipse и git делают в моих ушах предупреждающее кольцо. Это может быть выстрел в темноте, но то, что я думаю, пошло не так, так это то, что Eclipse молча перезаписывает файлы на диске. Я думаю, что в основном вы проверяете devbranch (который проверяет новые версии файлов на диске), но Eclipse не распознает, что файлы были изменены на диске, поэтому он не перезагружает их в среде IDE. Когда вы с удовольствием компилируете в Eclipse, он сохранит кешированные буферы и перезапишет файлы на диске.

Решение состоит в том, чтобы войти в настройки в Eclipse и включить автоматическую перезагрузку, которая, по моему мнению, отключена по умолчанию.

Проверить с

git diff 

, чтобы узнать, что изменилось в этих файлах.

После изменения настроек типа в корневом каталоге

git checkout . 

отменить измененные файлы и вернуться в состояние, происхождение/devbranch было до Eclipse, сделал эти изменения. Тем не менее, это также отменяет ваши собственные изменения, если вы сделали что-то такое.

+0

Спасибо @MagnusSkog Я использовал вариант вашей рекомендации 'git diff' и atm. Я думаю, что это разрешения. Хотя ваш выстрел темный - хороший, я считаю, что я сделал соответствующие обновления и такие, чтобы поддерживать Eclipse в очереди, но не будет уверен. Я думаю, что мне просто нужно выяснить, как безопасно удалить ветку и повторить все это, игнорируя разрешения. Я буду прислушиваться к вашим советам относительно материалов IDE и работать над тем, чтобы придерживаться командной строки ;-) (лучше всего научиться основам!) Thx – jstats

+0

git checkout. (для сброса изменений), git branch -D devbranch (удалить ветку), git checkout --track origin/devbranch (используйте это для создания локальной ветви отслеживания) – ralphtheninja

+0

спасибо @MagnusSkog - я сделал что-то подобное - вместо этого я просто сделал 'git branch -d devbranch', затем' git pull', затем 'git checkout -b devbranch origin/devbranch', и все выглядело очень хорошо :-) есть пара файлов, которые по-прежнему хотят совершить странно, но гораздо меньше Я чувствую себя более комфортно в процессе расследования. Спасибо, что помогли мне узнать это ;-) приветствия! – jstats

2

Это может быть связано с правами доступа к файлам или из-за окончаний строк (или из-за чего-то другого, но эти два из-за этого вызвали аналогичные проблемы в прошлом). У Git есть параметр для каждого, который скажет ему игнорировать различия между вашим устройством и репозиторием, но вам нужно его настроить.

Github explains line endings very well и this question помогут вам с разрешениями.

Мой совет, если вы изучаете git, - это полностью отказаться от любого инструмента, основанного на графическом интерфейсе, и сначала изучить материал командной строки. Я обнаружил, что моя IDE просто путала проблему.

+0

Я не думал о разрешениях на файлы, я буду смотреть на это спасибо ... Немного поиграв, я использовал 'git diff devbranch', и он показал, что в тоннах файлов: старый режим 100755, новый mode 100644 Так что я думаю, что разрешения были на месте! Я запускал 'git config core.filemode false', но если это что-то вроде .gitignore, проблема уже существует, поэтому я не уверен, как ее отменить. Могу ли я удалить ветку из моей локальной сети и повторно выполнить мой «git pull» и checkout? Спасибо @MattGibson – jstats

+0

Да, это сработает. Легче делать «git reset --hard HEAD», хотя (при условии, что у вас нет незафиксированных изменений). –

+0

спасибо, что @MattGibson звучит так, что это сработало бы. Мне придется играть с функцией сброса позже. Я попробовал просто удалить ветку и снова потянуть, а затем снова проверить (теперь, когда меня игнорировали режимы), и это, казалось, сработало! оцените вашу помощь ++ – jstats

Смежные вопросы