2012-07-20 23 views
2

這是我的情況:
說我在分支b1上工作。我寫了一個文件dir/f1。
然後,我想在dir/f2中集成dir/f1的代碼,而我不再需要f1。
因爲隨機原因,我想保留f1。
我從版本控制中刪除它,但它仍然在這裏,未跟蹤。
如果我切換到分支b2,f1有編譯錯誤,因爲它沒有保持與b2同步。
因此,我決定在切換之前在b1中混入stash -u,以便在完成b2時可以返回上下文。
它的工作原理和預期的一樣:工作目錄被清理,所有的東西(跟蹤和未跟蹤的文件,但沒有忽略的文件,因爲我沒有使用-a)被隱藏,我可以將它們應用回去。
唯一的問題是一些文件從工作目錄中刪除,但其他文件不是。 的消息是:「git stash save -u」不會刪除一些目錄

Not removing dir/f1 

所以我的問題是:什麼可以對這種行爲的原因是什麼? git如何決定哪些文件在存儲過程中被刪除,哪些不是?

感謝

+0

我擔心git手冊頁中不包含有關-u標誌的信息。 – 2012-07-20 13:08:35

回答

1

這樣的行爲似乎是可能只與git 1.7.7.xdir/f1是一個目錄。

git stash -u使用git clean從工作目錄中刪除文件。根據git's source code,唯一的情況是git clean可以迴應Not removing dir/f1消息是當dir/f1是一個目錄。你確定dir/f1是一個文件嗎?

git 1.7.8與(具體地,與this commit)開始,git stash -u傳遞-d選項git clean,所以將不再發生這樣的問題。