2017-02-27 64 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 

我说你承担太多。当你犯下这个错误时,你可能不在新的分支上。

相关问题