繁体   English   中英

Git:如何回滚到上次推送/提交

[英]Git: how to roll back to last push/commit

我正在编程。 我添加漂亮的代码并提交并将其推送到我的仓库,如:

git add *
git commit
//writes message
git push unfuddle master

现在我进去搞砸一切。 我没有发出git命令,因为我推动了美丽。 如何让我的本地文件回到已提交的内容?

git pull说我当地的回购是“最新的”

git checkout spams我的屏幕似乎没有改变任何东西。

要明确:我不是要修改我的远程仓库,只是让我的本地仓库看起来像服务器。

我目前的解决方案是删除文件夹并重新放回仓库。 这不可能是正确的。

您可以重置为HEAD: git reset --hard HEAD

更新:

最好的方法是

git stash -u

不要

git reset --hard HEAD

这是一个无法撤消的操作,除非你在Mac上使用时间机器或在Windows 8上使用新的备份服务,否则你可以真正地完成你的工作.Linux可能有类似的方案,虽然我不使用它。

如果你还想要忽略文件,你可以

git clean -xdf

git pull说我当地的回购是“最新的”

git pull告诉你你的存储库是最新的,因为你的本地存储库和你的远程存储库都指向同一个HEAD(最后一次提交)。 这是由于您的git push ,它将远程数据库与您的本地存储库同步。

当Git决定要提取什么时,Git不会比较尚未提交给远程分支的更改; 因此,从Gits的角度来看,您的本地远程存储库位于同一时间点,即使您的本地存储库具有未分级的更改(您没有git add更改)。

这个页面底部有一个很好的图表,它向您展示了该过程的工作原理 - 您进行了一些更改,分阶段(通过运行git add ),然后最终将它们提交到存储库(通过创造性命名的git commit )。

要明确:我不是要修改我的远程仓库,只是让我的本地仓库看起来像服务器。

其他人指出了这样做的方法: git reset --hard HEAD (将索引[staged files]和工作树[unstaged files]重置为最后一次提交),但值得了解你正在尝试的内容要实现 - 如果我第一次弄乱我的工作树时就知道git是如何跟踪我的文件的,那我就节省了数小时的烦恼。

由于您尚未提交任何内容,以下命令将重置您修改的文件:

git checkout .

你可以试试

git stash
git pull origin your-branch

你试过git checkout -f master吗?

如果你没有提交任何东西,你可以简单地做一个$ git reset --hard 如果你已经提交了一些东西,你可以做一个git reset --hard origin/master来回到遥控器上的版本。

git checkout branchname git reset --hard c4e0424 git push origin +branchname

您可以使用--soft而不是--hard
--hard你会失去你的改变
--soft保留您更改的提交文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM