Fatal: not a git repository - after BSoD - windows

I was committing and then my Windows ( .. :( ) machine crashed and presented me with the lovely and infamous Blue Screen of Death. I rebooted and went right back to work, only to discover that something's seriously wrong with my local git repo.
"Fatal: not a git repository"
... Well, that escalated quickly.
I've been reading up on this issue (also here on StackOverflow), but haven't found a solution yet. The things I did include:
git init (says within 0.1s: Reinitialized existing Git repository)
git status (gives same fatal error)
git push origin develop (same fatal error)
The .git folder is still there and looks normal (although I wouldn't directly spot any anomalies).
It looks like there's nothing I can do on the command line to revive my repository.
I have found this reference, but I have no idea how to "change HEAD to a valid ref/hash".
Is there anyone who knows where to go from here?
(I know this questions shows up multiple times on SO, but none of those problems have the same origin and their solutions don't work. Please be sure this question really is a duplicate if you mark it as such.)

(I'm the asker.)
Unfortunately I didn't have the time to solve this problem in time. The pressure in this project is on and I needed to continue. I decided to do a complete new checkout. Everything works fine again.
Lesson learned: never get a BSoD while committing.

If anyone comes across this in the future:
Ran into this issue today, BSoD followed by git no recognizing I was in a git repo.
In my case .git/HEAD had become just null characters which is why git didn't recognize the directory as a git repo. If this is also the case for you try running:
echo 'ref: refs/heads/main' >.git/HEAD
This is just overwriting the current contents of .git/HEAD with a valid head which can be the head to any branch head file listed in the .git/refs/heads directory. Once .git/HEAD is valid, git should instantly recognize that your in a git repo again.

Related

The working copy <Project name> failed to commit files. - The repository has an uncompleted operation

I've just updated my Xcode from 6 to 7 (and code from Swift 1.2 to Swift 2.0) and try to create new branch in Xcode. After that I can't push my code to Bitbucket.
Is there a way how can I delete repository from directory and setup Bitbucket again and maybe push to another (a new one) repository? Fix of this problem will be great, but I will be satisfied even with move to another repository.
I had this error in xcode 7.1 on a year old project that was working fine. In my case I have a project with the default local repository created by xcode. For anyone who is not going to re-install and re-setup. It is possible to find out what the dangling command is and fix it from command line.
To find the dangling command Open Terminal from the project directory:
xcrun git status
In my case the status returned:
On branch master
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
To fix the problem I used:
xcrun git rebase --skip
In my case I ran git status which revealed that You are currently bisecting. (I was doing a bisect and must had forgotten to reset). I did a git bisect reset and attached the head to my latest commit and it was all fine afterwards.
When I am merging from currentBranchA into branchB, I got conflicts,I didn't want to solve the conflicts immediately and quit the merging process. But when I try to merge again, the Xcode shows "The working copy is currently in the middle of another operation..."
I opened the terminal ,cd to the project directory, and check the git status:
git status
it shows:
On branch currentBranchA
Your branch is up to date with 'origin/currentBranchA'.
All conflicts fixed but you are still merging.
(use "git commit" to conclude merge)
Just do it as it says. Continue to input
git commit and click Ctrl + C to close the commit message window.
The problem will be zero.
The problem was with installation of GitHub. I had a master repository. After reinstall and resetup everything works like before.
EDIT: For anyone who has a problem with Xcode and GIT I have a best advice. Don't use it. Use for example Source Tree
When you start developing for a living, you are gonna have to use more reliable solution for GIT. Imagine you have 70 branches. Using Source Tree you can easily solve conflicts and other things about working in team. Xcode GIT solution is not reliable and you are gonna be only frustrated.

How to restore changes to local files

I just made a HUGE mistake. (I obviously don't know enough about git)
I was trying to update my directory on remote. I created a dev branch then typed git fetch && git checkout dev. Why? Because BitBucket said so! (I know. I'm a f****** idiot). Well, now all of my files have either been removed or changed to what I had days ago. I just lost A LOT of work.
Please tell me how I can get my work back. PLEASE!
EDIT: I'm not trying to revert to a previous commit. I'm trying to revert my local files back to what I had moments ago before my git fetch && git checkout dev mistake.
Woohoo, I figured it out! Here's what I did:
git reflog
2fe6344 HEAD#{0}: checkout: moving from master to dev
f1cc9bc HEAD#{1}: commit (initial): camera doesnt work
git reset f1cc9bc
git checkout .
That's it! I honestly couldn't find this anywhere on SO and I'm usually pretty darn good at researching. If this answer already exists, I'm sorry. But hopefully it helps someone out there in a tough jam.

Added a large file to a git branch, committed changes, now the file is in every branch (including master)

I'm at a point where I realized I took some actions that were the equivalent of entering a cave without a flashlight. Hopefully this retelling of events will contain an indication of what went wrong.
I began at my project's master branch. I performed a git pull from the remote master (to make sure I had the most recent build), then a git checkout -b newFeature. With this newFeature branch, I made some changes, including adding a 700mb .mp4 file. I then committed my changes with git commit -a -m "New features and a big mp4 file..." I never pushed the changes to the remote. Made some more changes, decided I didn't want them, so I did a git stash at the end of the day.
This morning, I switched to master branch, where I did a git/status. I noticed my local master branch was now ahead of the remote master, which was odd because they should have been exactly the same. I also noticed that when I built my iOS app (from master, NOT newFeature) that the app size was 700mb bigger than it should have been.
Now this part is where I started panicking, so I apologize if the order of events is not completely accurate...
I saw that my .mp4 file was an unstaged file after running git status.
I tried to do a git reset HEAD <file>, which seemed to remove the file, but it still showed up in my builds.
I then tried git rebase, but never got through it because I seemed to hit a loop where all git rebase --continue did was end up at the same place over and over, so I aborted (I've never done a rebase before).
Giving up, I deleted all of my local files (or at least I think I did), restarted my computer (you never know), cloned everything from GitHub... and my builds are still including the large mp4 file.
I cannot seem to find the mp4 file, though it is clearly there when I build the app. I never pushed it to the remote, not that it would have let me anyway due to GitHub's restraints.
Any solutions, bread crumbs, or whatever would be greatly appreciated!! Thanks!
EDIT:
I attempted to go back to the build before I ever made the newFeature branch using git reset --hard , still no luck, as my project will still build with the mp4 file.
Perhaps I could find where this mp4 file is store locally? I can not find it in my project folder.
SOLVED:
See my answer below... long story short, I needed to Clean my build in Xcode (Cmd-shift-K) to remove the MP4 from the build folder.
Try git clean to remove any extra files. You should also check the logs of your build system to find out where this file is getting included.
Of course it's something I should have done right from the get-go. I've read before, "Before building your project, do a Clean on your build" (Cmd-Shift-K in Xcode). After running a disk report on my drive (using JDiskReport), I found the mp4 file cached in Xcode's DerivedData folder in my Library folder. Doing a Clean on the build removed the file from this folder, and no other future builds included it.
I guess I never ran across a time when not performing a Clean was really evident. When I was restarting Xcode, I wrongly assumed any sort of cache clearing would be done then.
So turns out this wasn't a problem with git directly, but with Xcode. I'm not sure if it should be the correct behavior or not, but I will now be run a Clean whenever switching between branches.

Can't Push to Git Repository

I am trying to push my recent commits to a Git repository that I have set up on Bitbucket, and for some reason it never pushes.
Xcode just gets stuck on the screen saying "Pushing Changes..." and "Preparing to Push Changes..." but it never completes. Then ends with "The working copy of 'Master' is currently up to date."
But it's not.
I have made changes.
Also tried adding more commits, but that didn't work either.
Any suggestions?
Git doesn't always work with Xcode, usually because of the crap files Xcode generates (eg xcworkspace etc), and it's pretty buggy in general, so I would just try pushing from the command line instead of through Xcode (which should also give you a more detailed error message if it doesn't work).
Try doing a git add and then git commit

Moved file location in Xcode 4, can't push to Github

Git newbie here. Using Xcode 4.3.2. Had to move my project file directory. Commit still works fine but when I do a git push, I get Everything up-to-date, which is incorrect.
How do I get back on track?
Thanks
Check also if you are not in a DETACHED HEAD mode.
That happens if you checkout a tag or a file (see git checkout illustration in gotgit):
That was the case for the XCode question "Git (no branch) in xcode"
When you moved the project directory, did you move the .git folder with it? An easy way to check is to run git log and see if all of your previous commits are still there.
If you moved the .git folder with the rest of the files, then your remotes would still be setup correctly.
If it really isn't hooked up for some weird reason, try running git remote show origin and check to make sure that the url is correct and everything.

Resources