繁体   English   中英

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

[英]Git deleted untracked files on pull

我在计算机上创建了一个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'显示)。

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

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

如果要查找丢失的文件,可以转到@itotheth提供的Git pull删除未提交的更改

暂无
暂无

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

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