切换分支时如何获得干净的副本?

时间:2017-02-27 09:16:37

标签: git

我们假设我一直在功能分支中工作,并在那里添加了许多文件。他们成功地承诺和推动。现在我通过git checkout master切换到master,但是在功能分支中添加的所有文件仍然存在(物理上,不在git中暂存)。要摆脱它们,我必须致电git clean -fd

每次都这样做很烦人。我希望git checkout master -clean之类的东西应该存在,但似乎并非如此。

我错过了什么吗?

2 个答案:

答案 0 :(得分: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 HEAD代替stash

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

注意: hard reset具有潜在的危险性,因为它会移除所有未提交的更改。

答案 1 :(得分: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

我说你假设太多了。你犯的时候可能不在新的分支上。