如何在SourceTree中放弃未提交的更改?


81

我是Git环境的新手,并且在Mac上将BitBucket与SourceTree一起使用。我现在要做的就是放弃自上次提交以来所做的更改。我应该怎么做?我还没有找到“放弃更改”之类的东西,并且直接从上次提交中拉出似乎无效。使用GUI或命令行完成的解决方案都不错。谢谢。


您的意思是您要撤消上一次提交?还是保留它并出于某些测试原因签出先前的提交?
Mohammad AbuShady 2013年

1
@MohammadAbuShady我猜答案都不是。自上次提交以来,我做了一些我想放弃的更改。我想要我的最后一次提交。
goldfrapp04 2013年

所以您有未提交的更改要还原吗?
Mohammad AbuShady 2013年

此处没有任何答案可以帮助我删除Sourcetree顶部令人讨厌的“ Uncommitted changes”条目。而且有太多未暂存的文件无法一一丢弃。答案在这里起作用:stackoverflow.com/questions/14075581/…–
PVS

右键单击“未暂存的文件”列表中的项目时,我对上下文菜单选项感到困惑。我猜Discard(Shift + Ctrl + R)和Remove(Ctrl + Del)Discard将还原所做的更改git reset --hardRemove并将删除文件并进行该删除。
红豌豆

Answers:


61

我喜欢用

git stash

这会将所有未提交的更改存储存储中。如果您以后想放弃这些更改git stash drop(或git stash pop还原它们)。

尽管从技术上讲,这不是丢弃更改的“正确”方法(如其他答案和评论所指出的那样)。

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


7
好吧,如果您只是想丢掉所有东西,那就更容易做git reset --hard HEAD
Mohammad AbuShady 2013年

4
@cocoanut我认为我的回答“错误”,因为这是对该stash功能的滥用。穆罕默德的答案是丢弃所有更改的正确方法。
2014年

是的,也是因为我看不到捷径在哪里。
罗伯托

3
我喜欢这种方法,因为如果您改变主意,它可以为您提供恢复更改的最后机会。我很少reset --hard,但是我经常隐藏我的更改以重新开始,然后在我决定不需要时放弃该隐藏。
马克斯

此方法未删除新的未版本控制的文件。在这种情况下,Roberto的使用重置和清除的方法效果更好。
加布里埃尔·延森2014年

141

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

Windows的SourceTree上,右键单击要丢弃的文件(在工作副本更改列表中),然后选择放弃

git上,您只需执行以下操作:

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

git clean -xdf擦除新的(未跟踪的)文件,包括被忽略的文件(该x选项)。d也将删除未跟踪的目录并f强制执行。


9
您也可以在左侧面板中右键单击整个“工作副本”(或按Cmd + Shift + R键;-)
2014年

14
令人惊讶的是,对于Mac和Windows,相同的命令具有不同的名称。好像Git GUI(与命令行相比)还不够混乱。
NSTJ

谢谢!我认为应该将其投票作为正确的答案;-)
Hernan Arber 2015年

@NSTJ:同意...这确实使人对在git工具中为“ reset”和“ discard”等术语分配一致定义的可能性产生了信心。也就是说,您可以期望得到广泛认可的定义。
LarsH '16

7

在未暂存的文件上,单击右侧的三个点。单击它后,将显示一个弹出菜单,然后可以在其中进行操作Discard file


2
如果只有几个文件,这很好,但是如果文件很多,会发生什么?
Itai Spector

4

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

要取消暂存文件的使用

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

3

在sourcetree gui中,单击工作目录,右键单击要丢弃的文件,然后单击“丢弃”。


2

请按照以下步骤进行,

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

1

好的,所以在简单的Windows sourcetree中,在macOS上,我也看了一会儿。

单击Command + Shift + R,同时在源代码树中将显示一个隐藏的弹出窗口,您可以丢弃单个文件或全部!为什么将其隐藏?我们永远不会知道..但是它有效![在此处输入图片描述] 1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.