2013-07-24 24 views

Trả lời

67

Đối với những gì nó có giá trị, một cách khác để làm điều này là giai đoạn các thay đổi mà bạn muốn giữ lại, và sau đó cất giấu tất cả mọi thứ bằng --keep-index:

$ git add modified-file.txt 
$ git stash save --keep-index 

Các lệnh trên sẽ stash tất cả mọi thứ bao gồm modified-file.txt, nhưng nó cũng sẽ để lại tập tin đó dàn dựng và trong thư mục làm việc của bạn.

Từ official Linux Kernel Git documentation for git stash:

Nếu tùy chọn --keep-index được sử dụng, tất cả những thay đổi đã được thêm vào chỉ mục còn lại nguyên vẹn.

27

git stash và sau đó git stash apply (git stash && git stash apply) sẽ lưu trữ tệp và áp dụng ngay sau đó. Vì vậy, sau khi tất cả các bạn sẽ có những thay đổi của bạn trong stash và trong thư mục làm việc. Bạn có thể tạo một bí danh nếu bạn muốn nó trong một phần. Chỉ cần đặt một cái gì đó như thế này để ~/.gitconfig:

[alias] 
    sta = "!git stash && git stash apply" 
+0

+1 nếu bạn cho tôi biết cách tạo bí danh – anthropomorphic

+0

, sự khác nhau giữa 'stit git; git stash apply' và 'git stash && git stash apply'? – anthropomorphic

+8

Tôi tin rằng sự khác biệt là ['&&' chạy lệnh thứ hai chỉ khi lần đầu tiên trả về mã trạng thái số không] (http://linux-training.be/files/books/html/fun/ch11s04.html). – madhead

2

Có một mẹo có thể giúp bạn, không giấu' điều nhưng FWIW:

git add -A 
git commit -m "this is what's called stashing"  (create new stash commit) 
git tag stash        (mark the commit with 'stash' tag) 
git reset HEAD~  (Now go back to where you've left with your working dir intact) 

Và vì vậy bây giờ bạn có một cam kết stash được gắn thẻ theo ý của bạn, nó không thể làm một git stash pop anyway nhưng bạn có thể làm những việc như tạo bản vá hoặc đặt lại các tệp, v.v. từ đó, các tệp dir làm việc của bạn cũng được giữ nguyên BTW.

3

Tăng cường nhỏ trong câu trả lời có thể sử dụng thực tế.

$ git add modified-file.txt 
(OR $ git add . ---- for all modified file) 
$ git stash save --keep-index "Your Comment" 
Các vấn đề liên quan