【问题标题】:Remove changes from one file in git [duplicate]从 git 中的一个文件中删除更改 [重复]
【发布时间】:2021-12-29 04:26:40
【问题描述】:

例如,我从一个干净的提交开始,对不同的文件进行一些更改,然后我想删除我仅对一个文件所做的更改。我该怎么做?
我试着做:

git stash -p train.py

但我遇到了错误:

fatal: subcommand wasn't specified; 'push' can't be assumed due to unexpected token 'train.py'

【问题讨论】:

  • 您不想删除或隐藏更改吗?有很大的不同。
  • 如果您要从中删除更改的文件尚未提交,则只需 git restore train.py。如果更改在最后一次提交中(从您的描述中不清楚),那么请使用 Antonio 的解决方案。
  • 如果你想使用git stash,错误已经告诉你如何解决了。使用git stash push -p train.py

标签: git git-stash


【解决方案1】:

您收到该错误的原因是因为 git stash pushgit stash -p 是其别名)不允许自定义参数以避免意外存储。

来自git stash push 的文档:

为了快速制作快照,您可以省略“推送”。在这种模式下,不允许使用非选项参数来防止拼写错误的子命令生成不需要的隐藏条目。对此的两个例外是 stash -p,它充当 stash push -p 的别名和 pathspec 元素,允许在双连字符 -- 之后消除歧义。

在您的情况下,train.pypathspec,因此您必须通过添加 -- 将其与已识别的选项分开,如下所示:

git stash -p -- train.py

或者,您可以拼出整个命令,在这种情况下,您不必用双破折号分隔路径:

git stash push -p train.py

请注意,使用双破折号--pathspec 与所有接受路径的Git 命令使用的命令的已知选项is a convention 明确分开。

【讨论】:

    【解决方案2】:

    你应该:

    git rebase HEAD~1
    
    # Change, by the editor just opened, the word pick into edit, save and exit
    # Edit you file
    
    git commit
    

    【讨论】:

      猜你喜欢
      • 2017-02-16
      • 2012-03-06
      • 1970-01-01
      • 2019-09-20
      • 2017-11-09
      • 2011-03-11
      • 2015-01-06
      • 2023-03-22
      • 2021-12-24
      相关资源
      最近更新 更多