Git在pull上删除了未跟踪的文件

时间:2012-12-06 13:44:15

标签: git

我在计算机上创建了一个git存储库并将其推送到我的服务器。然后我进入了另一台应该与存储库内容合并的计算机上的文件夹。

以下是我执行的确切步骤(我转载): 在第一个存储库:

git init
git remote add origin *repo adress*
git remote update
echo "abc" > a
git add a
git commit -a -m "Intial commit"
git push --set-upstream origin master

在第二个(文件被删除的那个):

git init
echo "def" > b
git add b
git remote add origin *repo adress*
git remote update
git pull origin master

我期望发生的是git会提取这些文件,然后我可以提交我的本地文件并将其重新启动。但现在我的本地文件已经消失了。 git真的只是在没有警告的情况下删除本地文件(我没有使用任何强制选项或类似的东西)?

是否有可能让他们回来,或者这是预期和预期的行为,只是删除未跟踪的文件?

git status的输出说:

# On branch master
nothing to commit, working directory clean

我刚刚用测试存储库重新演绎了这些步骤,它按照描述进行:文件“a”被拉入第二个存储库,但是文件“b”没有消失(只有一个被'ls'显示)。

1 个答案:

答案 0 :(得分:3)

好吧,我发现了另一件奇怪的事情。

git pull的帮助下,有如下句子:

  

“在默认模式下,git pull是git fetch的简写,后跟   git merge FETCH_HEAD“

所以,我使用$git fetch然后使用$git merge FETCH_HEAD而不是git pull origin master。然后有什么了不起的,文件b仍在那里。

所以,我真的不知道git pull origin master究竟做了什么。

另外,我在

中看到了解释

http://git.661346.n2.nabble.com/pulling-the-root-commit-overwrites-untracked-files-without-warning-1-7-2-3-td5658622.html

即“git merge发现它没有有效的HEAD,因此会进行硬重置,这显然会覆盖已存在的所有文件。”

但我真的对此表示怀疑,因为我可以成功使用$git merge FETCH_HEAD

如果您想查找丢失的文件,可以转到@ellotheth提供的Git pull deleted uncommitted changes