我克隆了一个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
答案 0 :(得分:64)
选项1
git checkout -f gh-pages
选项2
git reset --hard # beware: don't make that a habit
git checkout gh-pages
答案 1 :(得分:12)
只是为了完整性,以及那些通过搜索来到这里的人:尽管OP专门要求没有stashing的解决方案,但值得一提的是,存储确实是一个非常好的选择:
该命令保存您的本地修改并恢复工作目录以匹配HEAD提交。
所以你可以简单地
git stash
这就像重置为HEAD一样。当绝对肯定地确定那些未提交的变更确实毫无价值时,只需
git stash drop
您甚至可以在上面的文档链接中提到多个藏匿处等。
我会推荐这种做法,因为它会让人习惯于在重置之前进行双重思考,而不需要花费很多费用。
答案 2 :(得分:5)
您可以忽略所有未提交的更改。
git reset --hard HEAD
答案 3 :(得分:3)
如果您确实确定要丢弃未提交的更改(即已暂存的更改以及工作树中的更改),您可以执行以下操作:
git reset --hard
一般来说,藏匿通常更安全
答案 4 :(得分:3)
如果您有未暂存的文件,请尝试:
git checkout -- .
或者
git checkout -- filename
答案 5 :(得分:0)
git add -A git stash
这将清除您所做的所有更改(仅限那些未提交的更改)
答案 6 :(得分:0)
您可以放弃在特定文件中所做的更改:
git checkout somefile.txt
然后顺利跳到分支机构:
git checkout gh-pages
答案 7 :(得分:0)
Blockquote 选项2对我不起作用,只是重复了错误。
对我来说也是一样。 git reset --hard + git checkout后,我仍然遇到相同的错误。
我通过在硬重置后立即在第二个命令上添加--force来解决此问题。
git reset --hard
git checkout -f <branch name>
答案 8 :(得分:0)
OP要求忽略更改-但不要求将其删除。听起来OP希望更改仍然存在。因此,此答案适用于处于类似情况的那些不想丢失其更改的人。
鉴于已经遇到的限制,加上您想保留这些更改,一种选择是将它们放在另一个分支中
无论您在何处进行未提交或已进行的更改,都可以始终使用
新建分支
git checkout -b new_branch
,然后根据需要git add
和git commit
。现在您就可以切换到其他分支机构,知道这些更改已保存。
像OP一样,我不喜欢使用隐藏和弹出(和选择樱桃)功能,而是通过将这些更改放到新的分支中来隔离这些更改,然后我可以合并它们并对其进行基础调整对我来说效果很好。使用分支机构解决方案对我来说很容易