我们假设我一直在使用一个功能分支并在那里添加了一些文件。他们成功承诺和推动。现在我通过git checkout master
切换到主,但所有文件都添加到一个功能分支仍然存在(物理,而不是在git中)。要摆脱他们,我必须拨打git clean -fd
。如何在切换分支时获得干净的副本?
每次都很烦人。我预计像git checkout master -clean
应该存在,但似乎并非如此。
我错过了什么吗?
我们假设我一直在使用一个功能分支并在那里添加了一些文件。他们成功承诺和推动。现在我通过git checkout master
切换到主,但所有文件都添加到一个功能分支仍然存在(物理,而不是在git中)。要摆脱他们,我必须拨打git clean -fd
。如何在切换分支时获得干净的副本?
每次都很烦人。我预计像git checkout master -clean
应该存在,但似乎并非如此。
我错过了什么吗?
他们成功提交和推送
确保您提交的所有变化。
$ 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
有潜在的危险,因为它移开你的未落实的变化。
这里,按以下顺序按预期运行:
$ 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
我说你承担太多。当你犯下这个错误时,你可能不在新的分支上。
你说得对。我的错。这些文件没有提交。 – SiberianGuy