我正在编程。我添加漂亮的代码并提交并将其推送到我的仓库,如:
git add *
git commit
//writes message
git push unfuddle master
现在我进去搞砸一切。我没有发出git命令,因为我推动了美丽。如何让我的本地文件回到已提交的内容?
git pull
说我当地的回购是“最新的”
git checkout
将我的屏幕屏蔽掉,似乎没有任何改变。
要明确:我不是要修改我的远程仓库,只是让我的本地仓库看起来像服务器。
我目前的解决方案是删除文件夹并重新开始回购。这不可能是正确的。
答案 0 :(得分:17)
您可以重置为HEAD:git reset --hard HEAD
答案 1 :(得分:7)
更新:
最好的方法是
git stash -u
不要
git reset --hard HEAD
这是一项无法撤消的操作,除非您在Mac上使用时间机器或在Windows 8上使用新的备份服务,否则您可以真正完成工作。虽然我不使用,但Linux可能有这样的方案之一。
如果你还想要忽略文件,你可以
git clean -xdf
答案 2 :(得分:3)
git pull说我的本地回购是“最新的”
git pull
告诉您存储库是最新的,因为您的本地存储库和远程存储库都指向相同的HEAD(最后一次提交)。这是由于您的git push
已将远程与本地存储库同步。
Git在确定要拉出的内容时,不会比较尚未提交给远程分支的更改;因此,从Gits的角度来看,您的本地和远程存储库位于同一时间点,即使您的本地存储库具有未暂存的更改(您没有git add
编辑的更改。
在this page的底部有一个很好的图表,它向您展示了该过程的工作原理 - 您进行了一些更改,暂存它们(通过运行git add
),然后最终将它们提交到存储库(通过创造性地命名为git commit
)。
要明确:我不是要修改我的远程仓库,只是让我的本地仓库看起来像服务器。
其他人指出了这样做的方法:
git reset --hard HEAD
(将索引[staged files]和工作树[unstaged files]重置为最后一次提交),但值得了解你想要实现的目标 - 如果我知道当我第一次弄乱我的工作树时, git如何跟踪我的文件,我已经节省了数小时的烦恼。
答案 3 :(得分:3)
由于您尚未提交任何内容,以下命令将重置您修改的文件:
git checkout .
答案 4 :(得分:2)
你可以尝试
git stash
git pull origin your-branch
答案 5 :(得分:1)
你试过git checkout -f master
吗?
答案 6 :(得分:1)
如果您没有提交任何内容,只需执行$ git reset --hard
即可。如果您已经提交了一些内容,则可以执行git reset --hard origin/master
返回遥控器上的版本。
答案 7 :(得分:0)
git checkout branchname
git reset --hard c4e0424
git push origin +branchname
您可以使用--soft而不是--hard
--hard
您将失去您的更改
--soft
保留已更改的提交文件