If I cannot remember what I did, I usually
$ git branch -lto see what I was working on
- use a diff against the last commit in my local repo and work on / commit with a useful message
- if I still dunno what I did
$ git reset --hard && git pull
- work on
If you cannot remember what you did, your changes are probably not important anyway. If your team has even made "huge progress" after "you have been away for a while" while not needing your commit, your contribution was probably not necessary either or already implemented by someone else.
Never commit stuff you do not understand. Never commit untested changes. Ideally, implement review and CI processes for pushes and pull-requests. Also try out a sane git branching strategy, using feature branches, so you at least know what you were working on. I really like gitflow , but depending on your situation, there are other good strategies as well.
When writing a commit message, I usually use a verb as the first word followed by the content, for example
$ git commit -am "implement .abc file format for asset loader" $ git commit -am "fix #123" $ git commit -am "add package.json" $ git commit -am "remove foo as a dependency"
Hashnode is a friendly and inclusive dev community.
Come jump on the bandwagon!
💬 Ask programming questions without being judged
🧠 Stay in the loop and grow your knowledge
🍕 More than 500K developers share programming wisdom here
❤️ Support the growing dev community!
If your company uses only sort of project management or ticketing system, you could leverage that. I use the GitFlow branching strategy. So when I start working on a new feature, I'll make a feature branch which I name with a ticket number. Example:
features/BRB-247. When the branch is named in this way, you can refer back to the associated ticket to remind yourself what you were working on.
2 things ...
- you should never commit what you don't understand.
- you write in the commit message what the changes are.
there are different philosophies ... I write in present tense
#ticketNr <summary headline> - does blabla - change blub - add moo as an example #1337 implements new menu endpoints - adds role model and references - adds new backend for menu customization - changes parts of the user model
Most work stuff I do is on a branch named with a JIRA issue key (and all commits prefixed with the key as well), so I can go read the JIRA if the commit messages aren't enough context.
If the changes are uncommitted there's a good chance they'll at least be on branch
abc-123 If there are commits the the log is likely to say something like
ABC-123 Progress commit with rough implemention of the new turboencabulator.
But realistically if the team had made lots of progress and even I couldn't remember what the changes were, I'd probably hard reset and move on. Not all code is worth keeping, particularly not code written just before going on a break ;)
If you're concerned it may actually be important and you'll remember in time, stick the changes in a branch like
20180609-mystery-changes and store them in a fork. Git branches are cheap after all.
If you really really have to work out what it was; you're going to have to check the log to see if a previous commit message jogs your memory; and look at the diff and just straight-up figure it out from first principles.