我嘗試從一個本地分支轉到另一個分支。 Git告訴我,我不能這樣做,因爲我的local changes to the following files would be overwritten by checkout
。git-stash和git-checkout有什麼區別?
然後我得到一個「推薦」Please, commit your changes or stash them before you can switch branches
。
我知道我不需要對提到的文件進行更改。覆蓋它們是可以的。所以,我嘗試stash
。我執行git stash file_name
。因此我得到:
Usage: git stash list [<options>]
or: git stash show [<stash>]
or: git stash drop [-q|--quiet] [<stash>]
or: git stash (pop | apply) [--index] [-q|--quiet] [<stash>]
or: git stash branch <branchname> [<stash>]
or: git stash [save [--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [<message>]]
or: git stash clear
好的。這是行不通的。然後我嘗試git checkout file_name
。沒有抱怨git。然後我可以從一個分支切換到另一個分支。所以,似乎我得到了我需要的東西(轉到第二個分支而不保存對第一個分支的更改)。
但是,我想問一問,爲什麼stash
不起作用,以及最終結果在不同情況下如何工作?
'藏匿'沒有工作,因爲你用它錯了。請參閱'git help stash'。你所要求的區別是,如果你隱藏了這些變化,那麼它們就會被隱藏起來,但是現在你卻失去了這些變化。 – Biffen 2014-09-23 11:29:16
「隱藏」更改意味着什麼?如果變化是「隱藏」,那麼他們是一種記憶?那麼「隱藏」和「添加」之間有什麼區別。如果我將這些更改「添加」到臨時區域,我會記住更改(在分支中)。 – Roman 2014-09-23 11:33:28
'git help stash'會詳細解釋這一點。 – geoffspear 2014-09-23 11:35:02