Jaka jest różnica między półką IntelliJ a magazynem Git?

104

IntelliJ obsługuje skrytki git, a także własne wbudowane polecenie shelve. Wydają się one mieć niemal identyczne przeznaczenie i użyteczność. Jaka jest różnica między nimi?

Daniel Compton
źródło
2
Możliwy duplikat Git Shelve vs Stash
Vadzim,

Odpowiedzi:

69

Z dokumentacji IntelliJ :

W integracji Git, oprócz regałów i rozkładania na półki, obsługiwane są odpowiednio „stashing” i „unstashing”. Cechy te mają wiele wspólnego, jedyną różnicą jest sposób generowania i stosowania poprawek.

  • Poprawki z ukrytymi zmianami są generowane przez sam Git. Aby zastosować je później, nie potrzebujesz IntelliJ IDEA.
  • Poprawki ze zmianami odłożonymi na półkę są generowane przez IntelliJ IDEA. Zwykle są one również stosowane przez IDE. Możliwe jest również wprowadzenie zmian z półki poza IntelliJ IDEA, ale wymaga to dodatkowych kroków.
Daniel Compton
źródło
23
Cóż, więc jakie są zalety regałów, skoro jest po prostu „mniej kompatybilny” ze zwykłym gitem?
MaxiWheat
17
Wygląda na to, że regały byłyby przydatne, gdybyś używał VCS, który nie miał funkcji natywnego stylu skrytki. Jeśli używasz git, nie widzę żadnych realnych korzyści.
Daniel Compton
5
„Rzeczywiste korzyści” są wymienione w odpowiedzi według id.bobr. Najważniejsze jest dla mnie możliwość wyboru plików / fragmentów do przechowywania, podobnie jak podczas zatwierdzania.
Martin Melka
1
Od wersji Git 2.13 możliwe jest przechowywanie pojedynczych plików z rozszerzeniem git stash push.
Deric Lima
Półka zapewnia znacznie lepszy przegląd tego, co jest w środku i co się różni. Łatwiej jest zastosować tylko niektóre części zmienionych plików. Na początku nie byłem przekonany do tej funkcji, ale teraz używam jej częściej niż skrytki.
itachi
47

Są dość podobne, z wyjątkiem:

  • Nie możesz używać Shelve poza IDE, ponieważ jest to funkcja Intellij.
  • Git stash działa tylko z całym katalogiem roboczym i indeksem. Półka IntelliJ może pracować z pojedynczymi plikami i listami zmian (kolejna funkcja IntelliJ). Jak widać na przykład tutaj , czasami jest to konieczne.
  • Pomysł ma lepiej wbudowaną obsługę półki. Praca z git stash jest prostsza. W szczególności można odłożyć zmiany do półki lub przejrzeć pliki z półki z okna narzędzia kontroli wersji.

Ponadto IMHO, półka działa nieco szybciej, szczególnie w dużym projekcie, w którym zmieniono wiele plików.

Więcej informacji można znaleźć w dokumentacji .

id.bobr
źródło
Uważam, że kliknięcie prawym przyciskiem myszy elementu niezmiennego, aby szybko odłożyć go na półkę, jest bardzo przydatne. Jak wspominasz, uważam, że jest to nieco szybsze.
vikingsteve
4
„Magazyn Git działa tylko z całym katalogiem roboczym i indeksem” - to jest błędne. Git stash może przechowywać również pojedyncze pliki i foldery - np .:git stash -- foo/bar.txt
Chaoz,
21

Jedną z wyraźnych zalet półki Intellij w porównaniu ze zwykłym magazynem Gita jest to, że używając Shelve, możesz zapisać zmiany należące do wielu repozytoriów na jednej liście zmian. Używając skrytki, musiałbyś schować / rozpakować osobno w każdym repozytorium. Jest to bardzo przydatne w dużym projekcie z wieloma modułami (każdy z własnym repozytorium), w którym działanie określonej funkcji może obejmować wiele modułów (a zatem wiele repozytoriów)

riyasvaliya
źródło
0

Oto, co mówi Dokumentacja

Zmiany w przechowywaniu są bardzo podobne do regałów. Jedyną różnicą jest sposób generowania i stosowania poprawek. Skrytki są generowane przez Git i mogą być stosowane z poziomu IntelliJ IDEA lub poza nim. Poprawki ze zmianami odłożonymi na półkę są generowane przez IntelliJ IDEA i są również stosowane przez IDE. Ponadto przechowywanie obejmuje wszystkie niezatwierdzone zmiany, a kiedy umieszczasz zmiany na półce, możesz wybrać niektóre z lokalnych zmian zamiast umieszczać je wszystkie na półce.

Sagar
źródło