gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 12:48:18 24 4
gpt4 key购买 nike

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

以下是我执行的确切步骤(我复制了它):在第一个存储库上:

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”被 pull 入第二个存储库,但文件“b”没有消失(“ls”仅显示 a)。

最佳答案

嗯,我又发现了一件奇怪的事。

git pull的帮助下,有这样一句话:

"In its default mode, git pull is shorthand for git fetch followed by 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

如果你想找回丢失的文件,可以去看看Git pull deleted uncommitted changes由@ellotheth提供

关于Git 在 pull 时删除了未跟踪的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13744894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com