Подтвердить что ты не робот

Eclipse и EGit: как легко просматривать изменения во ВСЕХ измененных файлах, прежде чем переходить в * локальный * репозиторий

Я использую Eclipse Indigo SR2 с (встроенным) плагином EGit v.1.3.0.201202151440-r и не смог найти способ легко просмотреть все мои изменения до совершения фиксации.

Я использовал Eclipse с SVN в течение многих лет, и это всегда было очень легко сделать. Я бы обычно щелкнул правой кнопкой мыши по моему проекту, выберите Team->Synchronize, дважды щелкните по первому измененному файлу (в перспективе Team Sync), затем несколько раз нажмите Ctrl - ., чтобы просмотреть все изменения в одном файле и затем перейдите к следующему файлу, так как я написал сводку моих изменений для сообщения о фиксации.

Но, конечно, git сильно отличается от Subversion, поэтому мой рабочий процесс должен измениться. С помощью EGit "Team Sync" представляется полезным только для просмотра изменений между моими локальными файлами и удаленным репозиторием (т.е. Перед нажатием на пульт). Мне нужен способ просмотреть изменения с момента моего последнего фиксации в моем локальном репозитории. Обычно я даже не забочусь о пересмотре изменений перед нажатием на удаленный (и если бы я это сделал, я бы предпочел простой эквивалент git log, чтобы увидеть, какие коммиты я собираюсь нажать).

Если я щелкнул правой кнопкой мыши по моему проекту и выбрал Team->Commit, мне представлено окно, в котором выполняется почти все, что мне нужно сделать (выберите файлы для этапа, фиксации, записи сообщения фиксации, изменения предыдущего фиксации и т.д..). То, что это не позволяет мне, это быстро и легко просмотреть все мои изменения в редакторе сравнения. Я не могу поверить, что этой возможности не существует! Кажется, мне нужно дважды щелкнуть по каждому отдельному файлу, просмотреть изменения, закрыть редактор сравнения и дважды щелкнуть по следующему файлу. Это смешно!

TL/DR - Я ищу простой эквивалент GUI (в Eclipse), чтобы сделать то, что я легко могу сделать из командной строки, используя git vimdiff (где vimdiff - это псевдоним git, который использует vimdiff как "difftool" для циклического переключения всех модифицированных файлов), а затем git commit (возможно, git add или два между ними). ​​

Если у кого-то нет хорошего решения, мне интересно, как другие обрабатывают свой рабочий процесс commit с помощью EGit. Я отлично ладил с командной строки (не то, что Eclipse доволен этим), но я не могу поверить, что EGit почти бесполезен, как мне кажется. Возможно, мой google-fu не так силен, как когда-то был?

4b9b3361

Ответ 1

Знаете ли вы о представлении Git Staging? Он отслеживает все файлы, которые были изменены, и вы можете просматривать изменения в любое время. (Это может быть немного лучше, чем использование диалога фиксации)

Альтернативой является фиксация всех изменений без проверки, а затем использование представления истории для сравнения двух коммитов (просто выберите последнюю верхнюю часть наиболее коммитов, щелкните правой кнопкой мыши и выберите "Сравнить друг с другом" ). Таким образом, вам не нужно делать двойной щелчок по отдельным файлам. Если вам нужно что-то изменить, вы всегда можете "Изменить" последнюю фиксацию. (Я обычно следую этому подходу)

Ответ 2

Говорит здесь, что вы можете видеть различия между рабочим деревом и любой заданной ссылкой. Возможно, вам стоит попробовать последнюю версию (Juno) Eclipse/EGit и посмотреть, стало ли это лучше?

Обновление: я пробовал это в последнем Eclipse, и насколько я вижу, он работает нормально. Вот как:

В момент написания этого, Eclipse Juno 4.2 - это версия, на которую вы должны пойти. На странице загрузки вы можете выбрать между несколькими пакетами в соответствии с вашими потребностями. "Eclipse IDE для разработчиков Java" поставляется в комплекте с EGit, но вы также можете установить EGit в любой дистрибутив с помощью Eclipse Marketplace (в меню "Справка" ).

  • После того, как вы импортировали проект в Eclipse, убедитесь, что проект "общий":

Щелкните правой кнопкой мыши проект → Команда → Поделиться проектом.. → Git

Теперь сделайте следующее:

  • Переключиться на Перспектива Team Synchronizing.
  • Нажмите кнопку маленькой синхронизации в представлении "Синхронизировать".
  • Выберите Git
  • Выберите подходящую ветвь для синхронизации, например refs/remotes/origin/master
  • Обязательно проверьте флажок "Включить локальные нефиксированные изменения в сравнении"
  • Нажмите "Готово"

Теперь измените некоторые файлы и посмотрите, как они появятся в представлении Synchronize. Дважды щелкните изменившиеся файлы, чтобы увидеть diff (как на скриншоте ниже).

Screenshot of Eclipse Juno - EGit Synchronize View

Ответ 3

Я пишу это как Eclipse Oxygen, но это должно относиться и к другим версиям.

  1. Вариант 1 с представлением групповой синхронизации: щелкните правой кнопкой мыши проект> Сравнить с> Зафиксировать. Вы можете выбрать свой последний коммит здесь, даже если вы не отправили его в репозиторий.
  2. Вариант 2 с представлением diff: если вы хотите увидеть версию "diff" без фиксации, вы можете добиться этого, щелкнув правой кнопкой мыши свой проект> team> stashes> Stash Changes> поставьте галочку в поле Включить неотслеживаемые файлы. Это сохранит все ваши изменения в тайнике. Затем щелкните правой кнопкой мыши проект> команда> тайники> выберите тайник, который вы сохранили. Вы нажимаете зеленую стрелку в правом верхнем углу, чтобы повторно применить все ваши изменения, которые вы спрятали обратно в ваш код. В том же окне-тайнике справа внизу вы увидите вкладку "Diff". Нажатие на вкладку diff покажет ваши изменения в выделенном красным/зеленым стиле diff. Хотелось бы, чтобы был способ создать diff-представление без сохранения, но это единственный обходной путь, который я нашел.