簡體   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