В чем разница между IntelliJ Shelve и Git stash?


Ответы:


69

Из документации IntelliJ :

В интеграции с Git, помимо складирования и снятия с полок, поддерживаются «спрятать» и «откладывать» соответственно. У этих функций много общего, разница только в способе создания и применения исправлений.

  • Патчи с сохраненными изменениями генерируются самим Git. Чтобы применить их позже, вам не нужна IntelliJ IDEA.
  • Патчи с отложенными изменениями генерируются IntelliJ IDEA. Обычно они также применяются через IDE. Применение отложенных изменений вне IntelliJ IDEA также возможно, но требует дополнительных действий.

23
Итак, каковы преимущества стеллажей, поскольку они просто «менее совместимы» с простым git?
MaxiWheat

17
Похоже, что стеллажи были бы полезны, если бы вы использовали VCS, в котором не было встроенной функции стиля тайника. Если вы используете git, я не вижу реальных преимуществ.
Дэниел Комптон,

5
«Реальные преимущества» перечислены в ответе id.bobr. Главное для меня - это возможность выбирать, какие файлы / фрагменты хранить, как при фиксации.
Мартин Мелка

1
Начиная с Git 2.13, можно хранить отдельные файлы с расширениями git stash push.
Deric Lima

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

47

Они очень похожи, за исключением:

  • Вы не можете использовать полку вне IDE, потому что это функция Intellij.
  • Git stash работает только со всем рабочим каталогом и индексом. Полка IntelliJ может работать с отдельными файлами и списками изменений (еще одна функция IntelliJ). Как видите, например, здесь , иногда это необходимо.
  • Идея имеет лучшую встроенную подставку для полки. Работать с git stash проще. В частности, вы можете отложить \ убрать свои изменения или просмотреть файлы, хранящиеся на полке, из окна инструмента контроля версий.

К тому же, IMHO, полка работает немного быстрее, особенно в большом проекте, когда было изменено много файлов.

См. Документацию для получения дополнительной информации.


Я считаю, что щелчок правой кнопкой мыши по неизменяемому, чтобы быстро убрать его с полки, был очень полезным. Как вы упомянули, я считаю, что это немного быстрее.
vikingsteve

4
«Git stash работает только со всем рабочим каталогом и индексом» - это неправильно. Git stash также может хранить отдельные файлы и папки - например:git stash -- foo/bar.txt
Chaoz

21

Одно явное преимущество, которое имеет Intellij Shelve по сравнению с обычным хранилищем Git, заключается в том, что с помощью Shelve вы можете сохранять изменения, принадлежащие нескольким репозиториям, в одном списке изменений. Используя stash, вам нужно будет спрятать / распаковать в каждом репо отдельно. Это очень полезно в большом проекте с несколькими модулями (каждый из которых имеет собственное репо), где работа конкретной функции может затрагивать несколько модулей (и, следовательно, несколько репозиториев).


0

Вот что говорится в документации

Хранение изменений очень похоже на стеллажи. Единственная разница заключается в способе создания и применения исправлений. Тайники создаются Git и могут применяться как в IntelliJ IDEA, так и за ее пределами. Патчи с отложенными изменениями генерируются IntelliJ IDEA, а также применяются через IDE. Кроме того, хранение включает в себя все незафиксированные изменения, а когда вы помещаете изменения на полку, вы можете выбрать некоторые из локальных изменений вместо того, чтобы откладывать их все.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.