Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "reflog"
-
!rant.
Here's some useful git tricks. Use with care and remember to be careful to only rewrite history when noones looking.
- git rebase: powerful history rewriting. Combine commits, delete commits, reorder commits, etc.
- git reflog: unfuck yourself. Move back to where you were even if where you were was destroyed by rebasing or deleting. Git never deletes commits that you've seen within at least the last 50 HEAD changes, and not at all until a GC happens, so you can save yourself quite often.
- git cherry-pick: steal a commit into another branch. Useful for pulling things out of larger changesets.
- git worktree: checkout a different branch into a different folder using the same git repository.
- git fetch: get latest commits and origin HEADs without impacting local braches.
- git push --force-with-lease: force push without overwriting other's changes5 -
OH FOR HEAVENS SAKE!!!
*I* take care of my food in the department fridge, *NOT* you!
And start to fucking realize:
IT IS CALLED: "Best Before End"
and ABSOLUTELY FUCKING NOT: "Guaranteed To Be Deadly From"
Next time you throw away my perfectly fine food, I'll dig into the reflog, throw a dice and throw away 3 random commits of yours claiming that THEY EXPIRED!
YOU ARSE!5 -
git reflog, git reflog...git FUCKING reflog!!!! Ah fuck this, I'm taking the kids out. 3hrs later.... Oh shit, i was in the wrong directory. A good fresh air clears the mind.2
-
Thank you, GIT. Thank you. Your reflog saved work of months after someone deleted the wrong branch.1
-
Am I the only one who pronounces git reflog as re-flog rather than ref-log? As in being whipped again6
-
Me: Ok I've updated the docs, I'll open a PR with the changes
Maintainer: Looks great! Can you remove the changes to the package-lock.json? (I assume it got updated when you ran npm install to start the webserver)
Me: Ok sure, I'll update it soon
And this is where the troubles begin. The file was commited 2 commits ago, so I have to roll back to then. However, the remote repository has been updated since then, so I git fetch to keep up to date.
This makes the rollback a hell of a lot harder, so I run git log to see the history. I try a reset, but I went back to the wrong commit, and now a shit ton of files are out of sync.
I frantically google 'reset a git reset', and come across the reflog command. Running that fucks things up even worse, and now so much shit is out of sync that even git seems confused.
I try to fix the mess I've created, and so I git pull from my forked repo to get myself back to where I was. Git starts screaming at me about out of sync files, so I try to find a way to overwrite local changes from the origin.
And by this point, the only way to describe what the local repo looks like is a dumpster fire clusterfuck that was involved in a train wreck
I resolved the mess by just deleting the local copy and git cloning again from my fork.
I gotta learn how to use Git better5 -
I'm so bad about keeping track of my time, that I just use `git reflog --date=iso` to figure out when I was working and not working 😂
-
So, I was doing some basic engineering project at uni with a teammate but we didn't realize that we were working in a detacted head state in git (due to poor set up of the working environment on his part).
After a 3,5 hours of work, we need to push to the repo and we get an error.
I take control to try to understand what was going on, and in doing so, I (mistakenly?) check out to another branch.
Git garbage collector kicks in and we can't checkout to the previous branch anymore (where all the work was made).
My friend panics and calls the professor, who explains to us how we lost everything and there is "a 100% no hope of recovering our work".
Felt like poop. But wasn't satisfied. I had read somewhere that you don't lose stuff so easily on git. Went home.
After five minutes I was able to recover everything through git reflog feature.
Moral #1: professors should know about the existence of reflog
Moral #2: please use git plug-in in your bash /zsh. Please.1 -
Git - Because it has saved my ass more often than I would like to admit and thanks to reflog almost any fuck up is salvageable.
I also like it because it makes a handy multi-game mod manager on a pinch.