Sự khác biệt giữa IntelliJ's Shelve và Git stash là gì?


99

IntelliJ hỗ trợ lưu trữ git cũng như lệnh giá đỡ được xây dựng riêng. Chúng dường như gần như giống nhau về mục đích và công dụng. sự khác biệt giữa chúng là gì?


2
Có thể trùng lặp của Git xiên vs Stash
Vadzim

Câu trả lời:


66

Từ tài liệu IntelliJ :

Trong tích hợp Git, ngoài giá đỡ và bỏ giá đỡ, "sắp xếp" và "xóa bỏ" được hỗ trợ tương ứng. Các tính năng này có nhiều điểm chung, điểm khác biệt duy nhất là ở cách tạo và áp dụng các bản vá.

  • Các bản vá với các thay đổi được lưu trữ được tạo bởi chính Git. Để áp dụng chúng sau này, bạn không cần IntelliJ IDEA.
  • Các bản vá có các thay đổi được xếp lại được tạo bởi IntelliJ IDEA. Thông thường, chúng cũng được áp dụng thông qua IDE. Cũng có thể áp dụng các thay đổi được chờ đợi bên ngoài IntelliJ IDEA nhưng yêu cầu các bước bổ sung.

21
Vậy ưu điểm của giá đỡ là gì vì nó chỉ "ít tương thích" hơn với git đơn giản?
MaxiWheat

17
Có vẻ như giá đỡ sẽ hữu ích nếu bạn sử dụng VCS không có tính năng kiểu lưu trữ gốc. Nếu bạn sử dụng git, tôi không thể thấy bất kỳ lợi ích thực sự nào.
Daniel Compton

4
'Lợi ích thực sự' được id.bobr liệt kê trong câu trả lời. Điều chính đối với tôi là có thể chọn tệp / khối nào để lưu trữ, giống như khi cam kết.
Martin Melka

Kể từ Git 2.13, có thể lưu trữ các tệp riêng lẻ với git stash push.
Deric Lima

45

Chúng khá giống nhau ngoại trừ:

  • Bạn không thể sử dụng giá đỡ bên ngoài IDE, vì đó là tính năng của Intellij.
  • Git stash chỉ hoạt động với toàn bộ thư mục và chỉ mục làm việc. Giá đỡ của IntelliJ có thể hoạt động với các tệp riêng lẻ và danh sách thay đổi (một tính năng khác của IntelliJ). Như bạn có thể thấy, ví dụ, ở đây , đôi khi nó là cần thiết.
  • Idea có hỗ trợ tích hợp tốt hơn cho giá đỡ. Làm việc với git stash đơn giản hơn. Đặc biệt, bạn có thể tạm dừng các thay đổi của mình hoặc xem lại các tệp đã xếp dỡ từ cửa sổ công cụ kiểm soát phiên bản.

Ngoài ra, IMHO, giá đỡ hoạt động nhanh hơn một chút, đặc biệt là trong một dự án lớn, khi rất nhiều tệp đã được thay đổi.

Xem tài liệu để biết thêm thông tin.


Tôi thấy việc nhấp chuột phải vào một chỗ không thay đổi để xếp nó nhanh chóng sẽ rất hữu ích. Như bạn ám chỉ, tôi thấy nó nhanh hơn một chút.
vikingsteve

3
"Git stash chỉ hoạt động với toàn bộ thư mục và chỉ mục làm việc" - điều này là sai. Git stash có thể giấu các tập tin và thư mục cá nhân cũng - Eg .:git stash -- foo/bar.txt
Chaoz

20

Một ưu điểm khác biệt mà Intellij's Shelve có so với kho lưu trữ của Git đơn giản là sử dụng Shelve, bạn có thể lưu các thay đổi thuộc nhiều kho trong một danh sách thay đổi. Sử dụng stash, bạn sẽ cần stash / unash trong từng repo riêng lẻ. Điều này rất hữu ích trong một dự án lớn với nhiều mô-đun (mỗi mô-đun có repo riêng), nơi một tính năng cụ thể hoạt động có thể cắt qua nhiều mô-đun (và do đó nhiều repo)


0

Đây là những gì Tài liệu nói

Stashing thay đổi rất giống với giá đỡ. Sự khác biệt duy nhất là ở cách tạo và áp dụng các bản vá lỗi. Các chuỗi được tạo bởi Git và có thể được áp dụng từ bên trong IntelliJ IDEA hoặc bên ngoài nó. Các bản vá có các thay đổi được chờ đợi được tạo bởi IntelliJ IDEA và cũng được áp dụng thông qua IDE. Ngoài ra, lưu trữ liên quan đến tất cả các thay đổi chưa được cam kết, trong khi khi bạn đặt các thay đổi vào giá, bạn có thể chọn một số thay đổi cục bộ thay vì đặt tất cả chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.