У чому різниця між Shelve IntelliJ та сховищем Git?


99

IntelliJ підтримує схованки git, а також власну вбудовану команду на полиці. Здається, вони майже однакові за призначенням та корисністю. Яка різниця між ними?


2
Можливий дублікат Git
Shelve

Відповіді:


66

З документації IntelliJ :

В інтеграції Git, окрім полиць та розкладання, підтримуються, відповідно, "зберігання" та "невідкладання". Ці функції мають багато спільного, різниця лише в тому, як генеруються та застосовуються патчі.

  • Патчі зі схованими змінами генеруються самим Git. Щоб застосувати їх пізніше, вам не потрібен IntelliJ IDEA.
  • Патчі з відкладеними змінами генеруються IntelliJ IDEA. Зазвичай вони також застосовуються через IDE. Застосування змін на полиці за межами IntelliJ IDEA також можливо, але вимагає додаткових кроків.

21
Що ж, у чому переваги полиці, оскільки вона просто «менш сумісна» із звичайним git?
MaxiWheat

17
Здається, стелажі були б корисними, якщо ви використовували VCS, який не мав власного стилю схованки. Якщо ви використовуєте git, я не бачу реальних переваг.
Даніель Комптон

4
"Реальні переваги" вказані у відповіді id.bobr. Для мене головне - це можливість вибору файлів / фрагментів, які потрібно зберігати, подібно до того, як під час фіксації.
Мартін Мелка,

Починаючи з Git 2.13, можна зберігати окремі файли за допомогою git stash push.
Deric Lima

45

Вони досить схожі за винятком:

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

Крім того, IMHO, полиця працює трохи швидше, особливо у великому проекті, коли було змінено багато файлів.

Для отримання додаткової інформації дивіться документацію .


Я вважаю, що клацання правою кнопкою миші на незмінному, щоб швидко відкласти його, було дуже корисним. Коли ви натякаєте на це, я вважаю, це трохи швидше.
vikingsteve

3
"Git stash працює лише з усім робочим каталогом та індексом" - це неправильно. Git stash може також зберігати окремі файли та папки - наприклад:git stash -- foo/bar.txt
Chaoz

20

Однією явною перевагою, яку має Intellij's Shelve перед простим сховищем Git, є те, що за допомогою Shelve ви можете зберігати зміни, що належать до кількох репозиторіїв в одному списку змін. Використовуючи сховання, вам потрібно буде зберігати / знімати в кожному репо окремо. Це дуже корисно у великому проекті з декількома модулями (кожен з яких має своє репозиторій), де певна робота над функцією може охоплювати кілька модулів (і, отже, кілька репозиторіїв)


0

Ось що говорить Документація

Зберігання змін дуже схоже на стелажі. Різниця лише в тому, як генеруються та застосовуються патчі. Зберігання генеруються Git і можуть застосовуватися як в межах IntelliJ IDEA, так і поза ним. Патчі з відкладеними змінами генеруються IntelliJ IDEA і також застосовуються через IDE. Крім того, закріплення включає в себе всі незавершені зміни, тоді як коли ви поміщаєте зміни на полицю, ви можете вибрати деякі локальні зміни, замість того, щоб відкласти всі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.