如何丢弃Git中未进行的变更?

如何丢弃工作副本中未包含在索引中的更改?


#1楼

这会签出当前目录的当前索引,从而丢弃文件从当前目录向下的所有更改。

git checkout .

或此操作从索引中检出所有文件,覆盖工作树文件。

git checkout-index -a -f

#2楼

删除比git clean -df更具体的新文件的另一种方法(它将允许您删除某些文件(不一定是全部文件)),是先将新文件添加到索引,然后隐藏,然后删除藏。

当由于某种原因您无法通过某种常规机制(如rm)轻松删除所有未跟踪的文件时,此技术很有用。


#3楼

我真的发现这篇文章有助于解释何时使用什么命令: http : //www.szakmeister.net/blog/2011/oct/12/reverting-changes-git/

有几种不同的情况:

  1. 如果尚未暂存文件,则可以使用git checkout 。 签出“更新工作树中的文件以匹配索引中的版本”。 如果文件尚未暂存(又添加到索引),则此命令实质上会将文件还原为您的最后一次提交。

    git checkout -- foo.txt

  2. 如果已暂存文件,则使用git reset。 重置会更改索引以匹配提交。

    git reset -- foo.txt

我怀疑使用git stash是一种流行的选择,因为它的危险性要小一些。 如果您在使用git reset时不小心吹了太多东西,可以随时返回到它。 默认情况下,重置是递归的。

请参阅上面的文章以获取更多建议。


#4楼

似乎完整的解决方案是:

git clean -df
git checkout -- .

git clean删除所有未跟踪的文件( 警告 :虽然它不会删除.gitignore中直接提到的被忽略文件, 但可能会删除驻留在文件夹中的被忽略文件 ),并且git checkout清除所有未暂存的更改。


#5楼

当您要将存储转移给其他人时:

# add files
git add .  
# diff all the changes to a file
git diff --staged > ~/mijn-fix.diff
# remove local changes 
git reset && git checkout .
# (later you can re-apply the diff:)
git apply ~/mijn-fix.diff

[编辑]如所评论,可以命名藏匿处。 好吧,如果您想共享存储空间,请使用它;)


#6楼

即使在以下目录中也可以使用: 超出正常的git权限。

sudo chmod -R 664 ./* && git checkout -- . && git clean -dfx

最近发生在我身上


#7楼

如果您使用的是存储库的派生库,并且在其中定期与另一个存储库定期进行同步(例如,拉取请求),那么以下内容实际上只是一个解决方案。 简短的答案:删除fork和refork,但请阅读github上的警告

我有一个类似的问题,可能不相同,我伤心地说我的解决方案并不理想,但它最终是有效的。

我经常会收到这样的git状态消息(涉及至少2/4个文件):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值