在中止git中的当前更改后切换分支

hig*_*dth 40 git git-stash git-branch

我克隆了一个git repo然后开始在它的主分支中玩.过了一会儿,我想忽略我刚刚做出的改变(不提交它们),然后切换到另一个分支.但是,它阻止我切换,因为有未提交的更改.如何在不隐藏它们的情况下忽略它们?这是发生的事情:

$ git checkout gh-pages
error: Your local changes to the following files would be overwritten by checkout:
        somefile.txt
Please, commit your changes or stash them before you can switch branches.
Aborting
Run Code Online (Sandbox Code Playgroud)

seh*_*ehe 65

选项1

git checkout -f gh-pages
Run Code Online (Sandbox Code Playgroud)

选项2

git reset --hard     # beware: don't make that a habit
git checkout gh-pages
Run Code Online (Sandbox Code Playgroud)

  • 选项1不起作用.Git是一个不情愿的问题解决者的巨人.我被迫做git reset - 硬...一个习惯.git命令的圣杯可以解决所有问题. (2认同)
  • @shailenTJ你应该是一个诗人:)请放心,我经常使用git reset --hard.但问题是,它是一种强大的武器,你应该**不要在没有给予正确思考的情况下使用它,因为它会丢失任何未提交的东西(或至少加入索引一次,这将是棘手的恢复). (2认同)

Wto*_*wer 12

只是为了完整起见,并为那些谁降落在这里通过搜索:虽然OP的解决方案明确要求没有藏起来,值得一提的是,藏匿确实是一个非常不错的选择:

该命令将保存您的本地修改并恢复工作目录以匹配HEAD提交.

所以你可以简单

git stash
Run Code Online (Sandbox Code Playgroud)

这就像重置为HEAD一样.当绝对肯定地确定那些未提交的变化确实毫无价值时,简单地说

git stash drop
Run Code Online (Sandbox Code Playgroud)

您甚至可以使用上面的文档链接中提到的多个藏匿处等.

我会推荐这种做法,因为它会让人习惯于在重置之前进行双重思考而不会产生很大的成本.


Kit*_* Ho 5

您可以忽略所有未提交的更改.

git reset --hard HEAD