2011-11-14 30 views
55

Tôi có một stash được lưu cho tương lai mà tôi muốn đưa ra một cái tên có ý nghĩa. Mặc dù có thể chuyển thông điệp dưới dạng đối số cho git stash save, có cách nào để thêm thông báo vào stash hiện tại không?Thay đổi thông điệp stit Git

+0

Tôi nhận thấy rằng câu hỏi này cũ hơn bản sao bị gắn cờ, nhưng câu hỏi đó có câu trả lời hay hơn. – Michael

Trả lời

45

Bạn có thể chỉnh sửa trực tiếp các thư được lưu trữ trong .git/logs/refs/stash.

Tôi biết điều này có thể không lý tưởng, nhưng cũng nên hoạt động.

+5

Thực tế là dường như công việc là vô cùng may mắn: thư cũng được lưu trữ trong thư cam kết (dấu gạch ngang được thể hiện bên trong như cam kết), và dĩ nhiên bạn không thay đổi cái đó. – Cascabel

+0

Nó hoạt động; cảm ơn rất nhiều – CharlesB

+2

Điều này không thực sự thay đổi thông báo cam kết (xem 'git show stash' hoặc' git log --all'), chỉ có mục nhập trong bản chỉnh sửa stash. – Zaz

15

Không có popping và lưu lại.

+2

trong khi dường như không minh bạch đây là giải pháp đơn giản nhất – Kirby

+1

Không đơn giản nếu stashes của bạn nằm trên nhiều nhánh khác nhau như "popping and saving again" sẽ áp dụng cam kết bị đè vào nhánh hiện tại (có thể thất bại khi hợp nhất). Nếu bạn thấy mình có một danh sách dài các sash, bạn có thể cần phải sử dụng phân nhánh tốt hơn. – i3ensays

+1

lúc đầu, tôi nghĩ rằng ông nói "Không phải không pooping" –

11

(Mở rộng trên câu trả lời của manojlds). Điều đơn giản nhất để đính kèm thư thực sự là không lưu trữ và đánh dấu lại bằng thư, có lệnh git stash branch sẽ giúp bạn thực hiện việc này.

git stash branch tmp-add-stash-message 
git stash save "Your stash message" 

Hạn chế duy nhất là hiện tượng này giờ đây có vẻ bắt nguồn từ chi nhánh tmp-add-stash-message. Sau đó, bạn có thể thanh toán một chi nhánh khác và xóa chi nhánh tạm thời này.

Tất nhiên, điều này giả định rằng bản sao làm việc của bạn được sạch sẽ, nếu không bạn có thể giấu những thay đổi hiện nay :-)

+0

câu trả lời này thực sự là đúng – woohoo

1

Dưới đây là một số lệnh để giúp bạn bật và lưu lại như @manojlds gợi ý:

git stash #save what you have uncommitted to [email protected]{0} 
git stash pop [email protected]{1} #or another <stash> you want to change the message on 
# only if necessary, fix up any conflicts, git reset, and git stash drop [email protected]{1} 
git stash save "new message" 
git pop [email protected]{1} #get back to where you were if you had uncommitted changes to begin with 
9

Yep, có một cách, bạn có thể thử này:

git stash store -m "your descriptive message here" [email protected]{1}

Điều này sẽ tạo một Stash mới có tên [email protected]{0} với thông báo như trên.
Stash này giống như [email protected]{1}.

Sau đó, bạn có thể loại bỏ các stash cũ @ {1} trên với:

git stash drop [email protected]{2} # các stash @ {1} đã trở thành stash @ {2} như một stash mới đã được tạo.

LƯU Ý: bạn không thể làm điều này với stash @ {0}: git stash store -m "message here" [email protected]{0} sẽ không làm gì cả.

+1

Tại sao nó không hoạt động với' stash {0} '? – CharlesB

+0

Thực ra tôi không biết, tôi đã thử và nó không hoạt động.Vì vậy, tôi đoán rằng: Nếu điều này kêu gọi stash @ {1}, sau đó nó mang một bản sao của stash @ {1} lên đầu stack, vì vậy khi người dùng gọi 'git stash apply', anh ta nhận được kết quả khác. Nếu cuộc gọi này bắt đầu @ {0}, thì sau đó gọi tới 'git stash apply' sẽ tạo ra kết quả tương tự. –

+0

có 'git stash save 'thư của bạn" ' – woohoo

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