如何在 Git 中丢弃本地提交?

问题描述 投票:0回答:7

我一直在做某件事,在做了一些事情之后,我发现它完全搞砸了。所以我尝试了以下顺序:

git reset --hard
git rebase origin
git fetch
git pull
git checkout

就在这时我收到了消息

Your branch is ahead of 'origin/master' by 2 commits.

我想放弃我的本地提交,而不必清除我的本地目录并重新下载所有内容。我怎样才能做到这一点?

git git-reset
7个回答
733
投票
git reset --hard origin/master

将删除不在

origin/master
中的所有提交,其中
origin
是存储库名称,
master
是分支名称。


42
投票

顺便说一句,除了 mipadi 的回答(顺便说一句应该可以),你应该知道这样做:

git branch -D master
git checkout master

也可以完全按照您想要的方式进行操作,而无需

having to redownload everything
(您的引文已释义)。这是因为您的本地存储库包含远程存储库的副本(并且该副本与您的本地目录不同,甚至与您签出的分支不同)。

清除分支是完全安全的,并且重建该分支非常快并且不涉及网络流量。请记住,git 在设计上主要是一个本地存储库。即使是远程分支在本地也有一份副本。只有一点元数据告诉 git 特定的本地副本实际上是远程分支。在 git 中,所有文件始终都在您的硬盘上。

如果你除了 master 之外没有任何分支,你应该:

git checkout -b 'temp'
git branch -D master
git checkout master
git branch -D temp

23
投票

我所做的就是尝试将硬盘重置为 HEAD。这将清除所有本地提交:

git reset --hard HEAD^

2
投票

我见过遥控器不同步并需要更新的情况。如果

reset --hard
branch -D
不起作用,请尝试

git pull origin
git reset --hard 

2
投票

你需要跑步

git fetch

要获取所有更改,您将不会收到“您的分支已领先”的消息。


0
投票

我必须做一个:

git checkout -b master

正如 git 所说,它不存在,因为它已被擦除

git -D master

0
投票

Git 撤消上一次提交 在 Git 中撤消本地提交有不同的方法:

使用 Git 重置: 此命令将当前分支指针移动到指定的提交,并可选择重置暂存区域和工作目录以匹配

.要撤消最近的提交并保留更改:

git重置--soft HEAD~1 要撤消最近的提交并取消暂存更改:

git 重置 HEAD~1 要撤消最近的提交并放弃更改:

git重置--hard HEAD~1 Git revert:撤消最近的提交 此命令创建一个新的提交,撤消先前提交引入的更改。

要撤消最近的提交:

git 恢复 HEAD
//这将打开默认的 Git 编辑器来创建提交消息。要跳过编辑器,请使用 --no-edit 选项。 git 结帐 此命令检查特定的提交或分支,并相应地更新工作目录中的文件。它还可用于放弃工作目录中的更改

要撤消工作目录中的更改并保持索引和最近的提交不变:

git checkout -- . 要撤消工作目录和索引中的更改,但保持最近的提交不变:

git checkout HEAD -- .

© www.soinside.com 2019 - 2024. All rights reserved.