Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何放弃对分支所做的所有更改?_Git_Branch_Rollback - Fatal编程技术网

Git 如何放弃对分支所做的所有更改?

Git 如何放弃对分支所做的所有更改?,git,branch,rollback,Git,Branch,Rollback,我在一个分支(即设计)工作,我做了很多更改,但我需要放弃所有更改,并将其重置为与存储库版本匹配。我原以为git checkout design就可以了,但它告诉我我已经在branchdesign了,我有3个修改过的文件 如何放弃这些更改并获取远程服务器上的分支?注意:您无法撤消此操作 尝试git checkout-f这将丢弃所有分支和主分支中未提交的任何本地更改。

我在一个分支(即
设计
)工作,我做了很多更改,但我需要放弃所有更改,并将其重置为与存储库版本匹配。我原以为
git checkout design
就可以了,但它告诉我我已经在branch
design
了,我有3个修改过的文件


如何放弃这些更改并获取远程服务器上的分支?

注意:您无法撤消此操作

尝试
git checkout-f
这将丢弃所有分支和主分支中未提交的任何本地更改。

如果您不希望在
设计中有任何更改,并且肯定希望它只是匹配,那么它可以帮助您丢弃自上次提交以来的所有更改远程服务器的分支,您也可以删除该分支并重新创建它:

# Switch to some branch other than design
$ git br -D design
$ git co -b design origin/design            # Will set up design to track origin's design branch
@威尔,是一个非常好的简单的git教程。它将向您展示如何撤消以下情况下的更改:未分级、分级和提交。源根目录中的labs 14-18

git diff master > branch.diff
git apply --reverse branch.diff


git reset./HEAD当您想要放弃本地分支中的更改时,可以使用git stash命令隐藏这些更改

git隐藏保存“某些名称”

您的更改将被保存,您可以稍后检索这些更改,如果您愿意,也可以将其删除。
执行此操作后,您的分支将不会有任何未提交的代码,您可以使用git pull从主分支中提取最新的代码。

git checkout-f

这就足够回答你的问题了。唯一的事情是,一旦它完成了,它就完成了。没有撤消。

放弃所有更改的可逆方法: 我是在进行合并后发现这个问题的,之后忘记了立即签出开发。你猜对了:我开始直接在master上修改一些文件。哦!由于我的情况并不独特(我们都这样做了,不是吗?->),我将提供一种可逆的方法,我使用这种方法放弃所有更改,使掌握看起来像再次发展

在执行
git diff
以查看修改了哪些文件并评估错误的范围后,我执行了:

git stash
git stash clear
在第一次隐藏所有更改后,它们将被清除。对主文件错误的文件所做的所有更改都已消失,奇偶校验已恢复

假设我现在想恢复这些更改。我能做到。第一步是查找我刚刚清除/丢弃的存储的哈希:

git fsck --no-reflog | awk '/dangling commit/ {print $3}'
学习哈希后,我成功地恢复了未提交的更改,具体如下:

git stash apply hash-of-cleared-stash
我并不是真的想恢复这些更改,只是想验证我是否可以恢复它们,所以我再次清除了它们

另一种选择是删除,而不是擦除更改。因此,在清除因处理错误分支而产生的更改方面,
stash
为您提供了很大的灵活性,可以从boo-boo中恢复


总之,如果您想要一种可逆的方法来清除对分支的更改,那么在这个用例中,前面提到的方法是一种不太危险的方法。

还有:git checkout design;git reset——硬源代码/设计我也会在删除分支之前提交。如果您在本地分支中提交了不在远程分支上的内容,我认为这会导致陷入非常混乱的情况。我绝对不会使用这个解决方案。@erewok:好吧,这个问题确实明确地说提问者想要放弃所有的更改。我认为这个答案没有达到这个目的。我只想说我现在已经完成了git浸入。。一年多以后。氧指数!我应该早这么做…这需要安装
Ruby
。这似乎并不总是一个选择。请在这篇文章中添加相关信息,这样answeer就不会在链接腐烂的那天死去。或者
git reset--hard HEAD^
git reset--hard HEAD^
应该是公认的答案。OP没有询问其他分支…我尝试了这个,我认为它删除了我上次推送之后的所有内容,而不仅仅是我上次提交的内容。我尝试了git重置--硬头^。现在来看看谷歌如何用一个简单的命令删除它们。如果你的目标是将一个特定分支的状态设置为与主分支相等,那么这些步骤会非常有用。要执行此操作,请在特定分支内运行此操作,然后使用
git rm[branch name].diff删除[branch name].diff文件。diff
这里有一个链接,指向我对一个相关问题的答案:成功了!谢谢我一直想退房,但它不让我退房。它一直说我必须“承诺”或“隐藏”,但我想做的就是把我做的每一个改变都扔掉。这就成功了!谢谢