【问题标题】:How to discard uncommitted changes in SourceTree?如何丢弃 SourceTree 中未提交的更改?
【发布时间】:2013-12-12 15:01:15
【问题描述】:

我是 Git 环境的新手,我在 Mac 上使用带有 SourceTree 的 BitBucket。我现在要做的就是放弃自上次提交以来的更改。我该怎么做?我还没有找到像“放弃更改”这样的东西,直接从最后一次提交中提取似乎不起作用。使用 GUI 或命令行完成的解决方案都很好。

【问题讨论】:

  • 您的意思是要撤消上一次提交?或者出于某些测试原因,离开它并检查以前的提交?
  • @MohammadAbuShady 我想答案都不是。自上次提交以来,我做了一些我想放弃的更改。我想要我的最后一次提交。
  • 所以您有未提交的更改要还原?
  • 这里的答案都没有帮助我删除源树顶部令人讨厌的“未提交的更改”条目。并且有太多未暂存的文件需要一一丢弃。这里的答案有效:stackoverflow.com/questions/14075581/…
  • 右键单击未暂存文件列表中的项目时,我对上下文菜单选项感到困惑; Discard (Shift+Ctrl+R) 和 Remove (Ctrl+Del) 我猜 Discard 将恢复更改,如 git reset --hardRemove 将删除文件并暂存该删除。

标签: macos git bitbucket atlassian-sourcetree


【解决方案1】:

好的,我刚刚注意到问题标题中已经回答了我的问题。

要取消暂存文件,请使用

git reset HEAD /file/name

并撤消对文件的更改

git checkout -- /file/name

如果您在一个文件夹中有一批文件,您可以撤消整个文件夹

git checkout -- /folder/name

请注意,当您git status 时,所有这些命令都已显示

在这里我创建了一个虚拟仓库并列出了所有 3 种可能性

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   test
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   test2
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       test3

【讨论】:

    【解决方案2】:

    从 sourcetree gui 点击工作目录,右键点击要丢弃的文件,然后点击 Discard

    【讨论】:

      【解决方案3】:

      我喜欢用

      git stash
      

      这会将所有未提交的更改存储在stash 中。如果您想稍后放弃这些更改,只需git stash drop(或git stash pop 即可恢复它们)。

      虽然这在技术上不是丢弃更改的“正确”方式(正如其他答案和 cmets 所指出的那样)。

      SourceTree:在顶部栏点击图标“Stash”,输入其名称并创建。然后在左侧垂直菜单中,您可以在右键菜单中“显示”所有 Stash 并删除。 ST 中可能没有其他方法可以一次丢弃所有文件。

      【讨论】:

      • 好吧,如果你只想丢弃所有东西,那么做git reset --hard HEAD 会更容易
      • @cocoanut 我认为我的回答“错误”,因为这是对stash 函数的滥用。 Mohammad 的回答是放弃所有更改的正确方法。
      • 是的,也是因为我看不到快捷方式在哪里。
      • 我很喜欢这种方法,因为如果您改变主意,它会给您最后一次恢复更改的机会。我很少reset --hard,但我经常隐藏我的更改以重新开始,然后如果我决定不需要它,则删除存储。
      • 此方法没有删除新的未版本控制文件。在这种情况下,Roberto 使用 reset 和 clean 的方法效果更好。
      【解决方案4】:

      MacSourceTree 上,右键单击要丢弃的文件(在 工作树中的文件 列表中),然后选择重置

      WindowsSourceTree 上,右键单击要丢弃的文件(在 Working Copy Changes 列表中),然后选择 丢弃

      git 上,您只需这样做:

      git reset --hard 放弃对版本化文件所做的更改;

      git clean -xdf 删除新的(untracked)文件,包括被忽略的文件(x 选项)。 d 也是要删除未跟踪的目录,f 是强制的。

      【讨论】:

      • 您也可以在左侧面板中右键单击整个“工作副本”(或按 Cmd+Shift+R);-)
      • 令人惊讶的是,相同的命令在 Mac 和 Windows 上具有不同的名称。好像 Git GUI(与命令行相比)还不够混乱。
      • 谢谢!我认为这应该被选为正确答案;-)
      • @NSTJ:同意......这很好地动摇了人们对 git 工具方面为“重置”和“丢弃”等术语分配一致定义的可能性的信心。 IE。您可以期望得到广泛认同的定义。
      • git clean -xdf 命令要非常小心。它可以造成很大的伤害。
      【解决方案5】:

      在未暂存的文件上,单击右侧的三个点。单击它后,将出现一个弹出菜单,然后您可以在其中Discard file

      【讨论】:

      • 只有几个文件的时候还好,但是文件很多的时候呢?
      【解决方案6】:

      按如下操作,

      • 点击commit
      • CMD+A 选择所有您想要的delete or discard
      • Right click 在您要删除的选定未提交文件上
      • 从下拉列表中选择Remove

      【讨论】:

      • 这会删除现有文件,而不是丢弃更改!
      【解决方案7】:

      好吧,在简单的 Windows 源码树中,在 macOS 上我也看了一会儿..

      在源代码树中单击 Command + Shift + R 将显示一个隐藏的弹出窗口,让您丢弃单个文件或全部!为什么要隐藏这个?我们永远不会知道.. 但它有效!

      【讨论】:

        【解决方案8】:

        它的Ctrl + Shift + r

        对我来说,只有一个选项可以全部丢弃。

        【讨论】:

          【解决方案9】:

          按照步骤丢弃 Sourcetree 中多个未提交的更改。

          Sourcetree 的新版本没有 -Reset Button- 如上一个答案所述。因此,请按照以下 5 个步骤进行解决。

          1. 右键单击“文件状态”并单击“重置...”。

          1. 选择文件如果你愿意,你可以像下图一样选择所有这些。

          1. 点击“全部重置”。

          1. 再次点击“全部重置”。

          1. 点击“重置”。

          做得好..!没有更多的 302 文件要丢弃。

          【讨论】:

          • 感谢 2021 年最新的源代码树版本
          猜你喜欢
          • 1970-01-01
          • 2015-09-24
          • 2014-10-08
          • 2017-07-20
          • 2012-07-10
          • 1970-01-01
          • 2016-10-28
          相关资源
          最近更新 更多