2015-01-18 11 views
112

Tôi rất không quen thuộc với khía cạnh shelve của Git. Nếu stash được sử dụng để đặt công việc chưa hoàn thành thì shelve là gì? Bạn sẽ sử dụng nó để làm gì?Git Shelve vs Stash

+5

'shelve' không phải là lệnh git. Ngữ cảnh cho câu hỏi này là gì, các thuật ngữ này đến từ đâu? 'shelve' tồn tại trong một số công cụ khác nhưng nó không phải là một phần của git. – Jonah

+1

Git stash tương tự như 'shelve' trong bzr, hg, v.v. Bạn đang đề cập đến một số gói tương tác git? – drRobertz

Trả lời

89

git shelve không tồn tại trong Git.

Chỉ git stash:

  • khi bạn muốn ghi lại trạng thái hiện tại của thư mục làm việc và chỉ số, nhưng muốn quay trở lại vào một thư mục làm việc sạch sẽ.
  • để lưu các sửa đổi cục bộ của bạn và hoàn nguyên thư mục hoạt động để khớp với cam kết CHÍNH.

Bạn đã có dự án cũ năm 2008 git shelve để cách ly các sửa đổi trong một chi nhánh, nhưng điều đó sẽ không hữu ích ngày nay.

+33

Hóa ra tôi hiểu nhầm khái niệm. Tôi nghĩ rằng đó là một lệnh Git khi trên thực tế nó là một điều bên thứ ba từ IntelliJ IDEA. Tôi không thể tìm thấy tài liệu git cho nó vì vậy nghĩ rằng tôi đã thiếu một cái gì đó. https://www.jetbrains.com/idea/help/shelving-and-unshelving-changes.html –

+1

Liên kết tài liệu của bạn cho biết rằng "giá" được đặt theo các thay đổi (bản vá) được quản lý bởi IntelliJ IDE, unlinke "stashes" là những thứ tiêu chuẩn do Git quản lý. Vì vậy, tránh kệ. –

+0

@ barbara.post tránh giá? bạn có chắc đó là điều đúng để làm trong trường hợp tôi muốn stash chỉ có một tập tin sửa đổi? –

137

Khi sử dụng JetBrains IDE với Git, "hành động stashing và unstashing được hỗ trợ ngoài việc đặt giá và không tháo rời. Các tính năng này có nhiều điểm chung, sự khác biệt chính là cách tạo và áp dụng các bản vá. các tệp riêng lẻ hoặc nhiều tệp, trong khi Stash chỉ có thể hoạt động với toàn bộ các tệp đã thay đổi cùng một lúc. Dưới đây là một số số more details về sự khác biệt giữa chúng. "

+4

Dường như ** giá đỡ ** linh hoạt hơn ** git stash **. –

+9

@DmitryDavydov Có 'git stash -p' mà cả hai. Thật không may chỉ trong dòng lệnh. –

+1

@TheVee có nó rất giống với giá cả về chức năng, cảm ơn thông tin. –

19

Ngoài câu trả lời trước đó là một trong những quan trọng đối với tôi lưu ý:

shelve là sản phẩm JetBrains nổi bật (như WebStorm, PhpStorm, PyCharm, vv). Nó đặt các tệp được xếp vào thư mục .idea/shelf.

stash là một trong các tùy chọn git. Nó đặt các tệp được lưu trữ trong thư mục .git.

Các vấn đề liên quan