Git — безопасно ли перебазировать, когда основная среда IDE открыта?

Я тот, кто часто перебазирует коммиты, связанные с функциями, для их исправления. В последнее время меня беспокоит, может ли открытие основного кода IDE повлиять на что-то неправильное в процессе перебазирования.

Например, когда в процессе перебазирования есть «пауза», потому что пользователь должен выполнить какое-то действие (например, переименовать cetain commit), будет ли щелкать обычное «файл, измененный извне, обновить его?» подсказывает, что некоторые IDE предлагают - до завершения перебазирования - повлиять на окончательное состояние рабочего каталога при перебазировании, в отличие от закрытия редактора?

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

РЕДАКТИРОВАТЬ: теперь я понимаю, что при появлении диалоговых окон, похожих на «Файл изменен извне, обновить его?» вызванное перебазированием (для случая), это не должно вызывать никаких проблем, поскольку файл уже изменился, поскольку перебазирование понравилось. Поэтому то, что я хочу знать сейчас, это:

Q2) Что делать, если при появлении запроса «Файл изменен извне, обновить его?» вы нажимаете «Нет », чтобы этот файл вернул свое содержимое к старому, а затем вы сохраняете этот файл и продолжаете процесс перемещения? (например, закрытие активной интерактивной сводной вкладки в случае переименования коммита или выполнения git rebase --continueпосле разрешения какого-либо конфликта, не обязательно во внешне измененном файле). Приведет ли это к тому, что файл закончится с другим содержимым после завершения перебазирования, в отличие от того, что старое переопределенное содержимое не было повторно сохранено вручную?

3 ответа

Если ваша IDE открыта во время выполнения git rebase, это не проблема. Вам не нужно закрывать его. Ваша забота о выполнении операций git в вашей среде IDE при выполнении git rebase, с другой стороны, является обоснованной. Я предлагаю вам сделать это позже. Большинство вещей не вызовет проблем, но зачем форсировать?

Безопасно ли перебазировать, когда открыта основная IDE?

Да¹

Поскольку IDE открыта, если только она не сохраняет файлы неинтерактивно или что-то в этом роде, она не будет влиять/изменять файлы на диске.

Какие операции IDE подходят?

Все, что не влияет на рабочую копию, примеры:

  • Нажав да, когда будет предложено file changed externally, refresh it?
  • Загрузка/просмотр файлов
  • git log
  • git show
  • git fetch
  • и т.п.

Какие операции IDE вызывают проблемы?

Все, что непреднамеренно (с точки зрения незавершенного git rebase) обновляет файлы или операцию записи git, примеры:

  • Игнорирование того, что открытый файл имеет содержимое до перебазирования, и сохранение его в любом случае
  • Нажав да, когда будет предложено save this file before quitting?
  • git checkout <branch>
  • git checkout -- file
  • git commit
  • git merge
  • git pull
  • и т.п.

Если вы хотите, например, использовать вашу IDE для разрешения конфликта - это прекрасно, если намерение состоит в том, чтобы обновить файл во время перебазирования - нет проблем с использованием вашей IDE для этого :).


¹ - Как прокомментировал Торек, есть или были IDE/редакторы, которые могут быть проблематичными, но это было бы исключительно редко и не является правилом сегодня.

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

Если ваша IDE изменяет ваши файлы, пока вы решаете конфликты перебазирования, у вас может быть неправильная версия после того, как вы git add ... + git rebase --continue=> это звучит очень маловероятно, но если вы не доверяете своим программам, это может быть момент, когда они могут повлиять.

Другие вопросы по тегам