2017-02-27 41 views
1

我們假設我一直在使用一個功能分支並在那裏添加了一些文件。他們成功承諾和推動。現在我通過git checkout master切換到主,但所有文件都添加到一個功能分支仍然存在(物理,而不是在git中)。要擺脫他們,我必須撥打git clean -fd如何在切換分支時獲得乾淨的副本?

每次都很煩人。我預計像git checkout master -clean應該存在,但似乎並非如此。

我錯過了什麼嗎?

回答

1

他們成功提交和推送

確保您提交的所有變化。

$ git checkout feature 
$ git status   # see if all changes are committed 

如果您有未提交的更改,然後stash他們,然後再結帳到其他(比如,master)分支

$ git add . 
$ git stash 

$ git status   # working directory should be clean now 
$ git checkout master 

或者,也可以代替hard reset HEADstash

$ git reset --hard HEAD  # back working directory to last commit 
$ git status 
$ git checkout master 

注意:hard reset有潛在的危險,因爲它移開你的未落實的變化。

+1

你說得對。我的錯。這些文件沒有提交。 – SiberianGuy

0

這裏,按以下順序按預期運行:

$ git status 
old_b 
$ git checkout -b nu_branch 
$ echo "content" > fred 
$ git add fred 
$ git commit -m "added fred" 
$ git checkout old_b 
$ \ls fred 2> /dev/null | wc -l 
0 

我說你承擔太多。當你犯下這個錯誤時,你可能不在新的分支上。

相關問題