我们假设我一直在功能分支中工作,并在那里添加了许多文件。他们成功地承诺和推动。现在我通过git checkout master
切换到master,但是在功能分支中添加的所有文件仍然存在(物理上,不在git中暂存)。要摆脱它们,我必须致电git clean -fd
。
每次都这样做很烦人。我希望git checkout master -clean
之类的东西应该存在,但似乎并非如此。
我错过了什么吗?
答案 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
我说你假设太多了。你犯的时候可能不在新的分支上。