Làm thế nào để Git stash pop stash cụ thể trong 1.8.3?


290

Tôi vừa nâng cấp Git. Tôi đang dùng phiên bản Git 1.8.3.

Sáng nay tôi đã cố gắng để thay đổi 1 thay đổi sâu trong ngăn xếp.

Tôi đã chạy git stash pop stash@{1}và gặp lỗi này.

gây tử vong: đối số mơ hồ 'stash @ 1': không biết sửa đổi hoặc đường dẫn không có trong cây làm việc. Sử dụng '-' để tách các đường dẫn khỏi các phiên bản, như thế này: 'git [...] - [...]'

Tôi đã thử khoảng hơn 20 biến thể về điều này cũng như sử dụng applythay vì popkhông thành công. Có gì thay đổi? Bất cứ ai khác gặp phải điều này?


2
Bạn đã thử thoát khỏi {}?
AlexDev

20
Với Git 2.11 (Q4 2016), giờ đây bạn có thể sử dụng git stash pop 1: xem câu trả lời của tôi bên dưới
VonC

Câu trả lời:


359
git stash apply n

hoạt động như phiên bản git 2.11

Câu trả lời gốc, có thể giúp gỡ lỗi các vấn đề với cú pháp cũ hơn liên quan đến thoát shell:

Như đã chỉ ra trước đây, các dấu ngoặc nhọn có thể yêu cầu thoát hoặc trích dẫn tùy thuộc vào hệ điều hành, hệ vỏ của bạn, v.v.

Xem " stash @ {1} có mơ hồ không? " Để biết một số gợi ý chi tiết về những gì có thể sai và cách xử lý xung quanh nó trong các hệ vỏ và nền tảng khác nhau.

git stash list
git stash apply stash@{n}

git stash phiên bản áp dụng


15
Nit duy nhất của tôi với câu trả lời này là câu hỏi hỏi làm thế nào để popmột stash cụ thể và lệnh này applylà stash chứ không phải popping nó. Sự khác biệt là một pop cả hai áp dụng stash cho mã và xóa chính stash.
Cấp Humphries

Không làm việc cho tôi. Gặp lỗi "tùy chọn không xác định: -encodingCommand"
Yuvraj Patil


Vui lòng cập nhật câu trả lời của bạn, ngay bây giờgit stash apply n
Hafiz Temuri

179

Bạn cần phải thoát khỏi niềng răng:

git stash pop stash@\{1\}

78

Nếu bạn muốn chắc chắn không phải xử lý các trích dẫn cho cú pháp stash@{x}, hãy sử dụng Git 2.11 (Q4 2016)

Xem cam kết a56c8f5 (24 tháng 10 năm 2016) của Aaron M Watson ( watsona4) .
(Được hợp nhất bởi Junio ​​C Hamano - gitster- trong cam kết 9fa1f90 , ngày 31 tháng 10 năm 2016)

stash: chỉ cho phép stash được tham chiếu theo chỉ mục

Thay vì tham chiếu " stash@{n}" một cách rõ ràng, hãy tạo tham chiếu đơn giản là " n".
Hầu hết người dùng chỉ tham chiếu stash theo vị trí của họ trong ngăn xếp stash (cái mà tôi gọi là "chỉ mục" ở đây).

Cú pháp cho stash ( stash@{n}) điển hình hơi khó chịu và dễ quên, và đôi khi khó thoát đúng trong một tập lệnh .

Bởi vì điều này khả năng để làm mọi thứ với stash bằng cách tham khảo chỉ số là mong muốn.

Vì thế:

git stash drop 1
git stash pop 1
git stash apply 1
git stash show 1

5
Cảm ơn! Đây có lẽ là câu trả lời phù hợp nhất cho bất kỳ ai đến đây vào năm 2019.
Aaron Frary


16

Như Robert đã chỉ ra, dấu ngoặc kép có thể giúp bạn:

git stash pop stash@"{1}"

12

Nếu không có công việc nào ở trên, dấu ngoặc kép xung quanh bản gốc có thể phù hợp với bạn:

git stash pop "stash@{0}"

4

Tôi đã cài đặt 2.22 và nó đã hoạt động ..

git stash pop --index 1

Nó không hoạt động .. $ git stash pop --index 1 fatal: đối số mơ hồ '1': sửa đổi không xác định hoặc đường dẫn không nằm trong cây làm việc. Sử dụng '-' để tách các đường dẫn khỏi các phiên bản, như thế này: 'git <lệnh> [<sửa đổi> ...] - [<file> ...]'
Dave Doga Oz

2

Phiên bản 2.11+ sử dụng như sau:

git stash list

git stash apply n

n là số thứ tự @ {12}


1

Đầu tiên kiểm tra danh sách: -

git stash list

sao chép chỉ mục bạn muốn bật từ danh sách stash

git stash pop stash@{index_number}

ví dụ.:

git stash pop stash@{1}
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.