Reputation: 7564
I created a git repository on computer and pushed it to my server. Then I went into a folder on another computer that should be merged with the contents of the repository.
Here are the exact steps I executed (I reproduced it): On the first repository:
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
On the second one (the one where files get deleted):
git init
echo "def" > b
git add b
git remote add origin *repo adress*
git remote update
git pull origin master
What I expected to happen was that git would pull those files and then I could commit my local files and push it back up. But instead now my local files are gone. Did git really just delete local files without a warning (I didn't use any force option or similar)?
Is there a possibility to get them back or is this intended and expected behavior to just remove untracked files?
Output of just git status
says:
# On branch master
nothing to commit, working directory clean
I just reporduced these steps with a test repository and it happens as described: File "a" gets pulled into repository number two, but file "b" is no gone (only a is displayed by 'ls').
Upvotes: 13
Views: 10608
Reputation: 2585
I wasn't able to find it anyhow. However, I remembered the file name and just recreated this file with this same name and my VSCode helped me out with the rest.
Upvotes: 0
Reputation: 8534
Well, I find another strange thing.
In the help of git pull
, there is such a sentence as the following:
"In its default mode, git pull is shorthand for git fetch followed by git merge FETCH_HEAD"
So, I use $git fetch
and then $git merge FETCH_HEAD
instead of git pull origin master
above. Then what amazing, file b is still there.
So, I really don't know what git pull origin master
exactly does.
Also, I saw an explain in
that is "git merge finds that it has no valid HEAD and therefore does a hard reset, which obviously overwrites any files already there. "
But I really doubt this, because I can use $git merge FETCH_HEAD
successfully.
If you want to find the lost files, you can goto see Git pull deleted uncommitted changes provided by @ellotheth
Upvotes: 4