【问题标题】:What is the best way to discard all your changes (with untracked files) on a git branch?在 git 分支上丢弃所有更改(带有未跟踪文件)的最佳方法是什么?
【发布时间】:2016-01-08 14:25:07
【问题描述】:

git 中是否有一个简单的命令来删除对分支所做的所有更改并删除所有未跟踪的文件?我想要一个干净的分支。

git checkout 确实会留下一些未跟踪的文件,并且还会显示一条消息,您的文件将被覆盖...

git reset --hard HEAD 也留下未跟踪的文件

【问题讨论】:

  • 对于未跟踪的文件,您可以在git reset --hard HEAD 之后运行git clean -f。但是,在使用这些命令之前请三思;它们是不可逆转的。
  • git stash --include-untracked 将删除所有更改,包括未跟踪的文件。然后,您可以放下藏匿处。不过,这有点滥用命令。
  • 但是没有单个命令可以执行上述操作,您需要将其添加为 git 别名 ?
  • 您可以查看oh-my-zsh git plugin 中的可用别名列表。里面有一些好主意,包括我链接到的那个。

标签: git shell command-line


【解决方案1】:

用两个命令来做这件事的两种方法。

来自 Jubobsref

git reset --hard $rev
git clean -f

来自 R0MANARMYref

git stash --include-untracked
git stash drop

如有必要,其中任何一个都可以别名为单个命令。

【讨论】:

    【解决方案2】:

    你有几种方法可以做你想做的事。

    详细答案可以在这里找到:How to move HEAD back to a previous location? (Detached head)

    另一个不存在但适合您问题答案的选项是 git clean。

    git 清理

    您可以执行 git clean 删除所有未跟踪的文件(备份文件)

    git clean -Xfd // capital X
    git clean -xfd // small x
    

    -x (小写)

    不要使用从 .gitignore(每个目录)和 $GIT_DIR/info/exclude 读取的标准忽略规则,但仍要使用 -e 选项给出的忽略规则。

    这允许删除所有未跟踪的文件,包括构建产品。
    这可以用来(可能与 git reset 结合使用)来创建一个原始工作目录来测试一个干净的构建。

    -X (大写)

    仅删除 Git 忽略的文件。
    这可能有助于从头开始重建所有内容,但保留手动创建的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 2020-01-03
      • 2020-04-19
      • 1970-01-01
      相关资源
      最近更新 更多