Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 pull之前的状态_Git - Fatal编程技术网

如何将本地文件恢复到git pull之前的状态

如何将本地文件恢复到git pull之前的状态,git,Git,我试图拉远程回购到我的本地文件,但忘记了在操作之前隐藏我的本地文件。由于我的本地更改已经消失,并且我做了很多更改,我如何恢复此过程?这并不是一个真正的答案。不幸的是,没有答案。一般来说,Git不应该丢失您的文件,除非您明确告诉它。有很多方法可以告诉Git帮我丢失文件。如果看不到您运行的确切命令集,除了一般的建议之外,没有人能给您任何东西 通常,将丢失未保存工作的拉取或合并应失败: $ git merge Updating 51ebf55b93..98cedd0233 error: Your l

我试图拉远程回购到我的本地文件,但忘记了在操作之前隐藏我的本地文件。由于我的本地更改已经消失,并且我做了很多更改,我如何恢复此过程?

这并不是一个真正的答案。不幸的是,没有答案。一般来说,Git不应该丢失您的文件,除非您明确告诉它。有很多方法可以告诉Git帮我丢失文件。如果看不到您运行的确切命令集,除了一般的建议之外,没有人能给您任何东西


通常,将丢失未保存工作的拉取或合并应失败:

$ git merge
Updating 51ebf55b93..98cedd0233
error: Your local changes to the following files would be overwritten by merge:
    Makefile
Please commit your changes or stash them before you merge.
Aborting
使用
git pull
在运行git 2.24.0的机器上生成相同的消息

一些早期的Git版本会给出不同的错误,而一些真正古老的Git版本确实会在您有未提交的工作时破坏您的工作树。您没有提到您拥有哪个版本的Git,但如果它至少是Git2.0,这应该不是问题

尽管如此,我还是建议避免使用git-pull。git pull所做的是运行两个git命令。第一个是简单的
git fetch
。例如,运行
git pull origin
运行
git fetch origin
;运行
git提取原始主机
运行
git提取原始主机
;运行
git pull
时没有选项,运行
git fetch
时没有选项

第二个命令是危险的,或者说,危险这个词太强了:第二个命令会干扰你自己的工作。运行
git-fetch
总是安全的。1学习如何读取
git-fetch
打印的内容有点让人困惑,但这一切都有意义。详情见下文

运行
git fetch
的第二个命令默认为
git merge
。了解git merge的功能,以及它对当前工作树的影响。了解它的选项:
--仅ff
--无ff
,等等

您可以选择将
git pull
run
git rebase
作为其第二个命令。了解
git-rebase
的作用,以及它如何不仅影响当前工作树,而且影响过程中重新设置基础的提交。了解其选项,例如交互式重基的
-i
。了解
git-rebase
实际上就像一系列重复的
git-cherry-pick
命令一样,2使用git的分离头模式。3

然后,在运行
git fetch
并查看
git fetch
所做的事情之后,决定是否要查看传入的提交,以及是否要合并
--ff only
--no ff
,或者是否要重新基础。如果您愿意,您现在有足够的空间和时间运行
git log
,也有足够的空间和时间来决定是重新基线还是合并

一旦您非常熟悉所有这些元素,并且非常确定要从哪个存储库
git fetch
中获取什么,那么就可以安全地提前选择merge vs rebase,并使用便利的
git pull
快捷方式运行
git fetch
,然后立即运行第二个命令



1如果您摆弄内部
git fetch
设置,可能会使其不安全。把它想象成重新连接你的电灯开关,使开关附近的墙上有一个带电的板。如果不破坏设置,
git fetch
将是安全的。如果你这样做,那就由你来承担。如果您确实有未保存但已修改的本地文件,而您没有提交、转移或隐藏这些文件,那么很遗憾,您的工作可能会丢失。如果您使用的编辑器维护本地历史记录,那么您应该立即检查相关文件的本地历史记录。如果您有可能受到影响的本地更改,Git将不允许您提取。所以没有问题。如果拉取成功,所有内容仍然存在。哦,未保存的本地更改?我没想到。未保存的更改不是更改:(您的文件是否显示在
git status
中?如果您打开了autostash选项,git可能已经自行隐藏了您的更改:检查
git隐藏列表