2012-12-17 23 views
4

我在一個分支(假設主機),我有我的工作目錄的一些變化。我得到的東西工作,但需要大量的清理 - 所以我想保存我當前的工作目錄到一個分支,以防萬一我需要回去。我肯定會在以後刪除分支。混帳:如何創建我目前工作的一個分支,但留在我的原分公司

另外,我想繼續在主工作正是我了。

現在我做:

# Save to topic branch 
git checkout -b working-stuff 
git commit -a -m "work in progress" 

# go back to master and continue with the state is was in before 
git checkout master 
git checkout -- . 
git reset 

後來,我就刪除特性分支。

因此,上述不正是我想要的,但它是一個有點冗長。有沒有更簡單的方法來做到這一點(除了腳本)?

回答

7

您可以使用

git stash 

從手動

使用git藏匿時,你要錄製的工作目錄和索引的當前狀態,但想回到一個乾淨的工作目錄。該 命令保存本地修改掉,並恢復工作目錄相匹配的HEAD提交。

與你藏匿您的修改git stash,那麼你就可以再次應用它們:

git stash apply 

或者你可以列出你的藏匿修改:

git stash list 
+4

正如進一步的說明,'git stash'基本上是作爲一個分支來實現的。 –

+0

完美 - 這就是我一直在尋找 - 我看到git的藏匿處已經不僅僅是一個簡單的保存/流行音樂,我曾經使用過很多更多的選擇。所以,對我來說更好的方法就是:'git stash; git藏匿申請'。這正是我想要的,並且自動給我提供了更多信息的WIP消息,並且如果我不需要它,以後就不需要刪除分支。 – thebriguy

+0

@thebriguy我建議使用'stash drop'來清理陳舊的存儲;當你使用'存儲列表'時,剩下的大量存儲空間會變得令人困惑。 –

2
$ git add bar 

$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD ..." to unstage) 
# 
#  new file: bar 
# 

$ git branch newbar $(echo wip | git commit-tree \ 
    $(git write-tree) -p $(git rev-parse HEAD)) 

$ git lola --name-status 
* e3f88c8 (newbar) wip 
| A  bar 
* a7b1a76 (HEAD, master) foo 
    A  foo

僅僅因爲你可以並不意味着你應該

2

出於全面考慮:如果你想有一個適當的分支(這在藏匿有一定的優勢),你並不需要使用管道命令,你也可以這樣做:

git add -A . 
git commit -m "dirty" 
git branch dirtybranch 
git reset --hard HEAD^ 
相關問題