I estimated the effort for different issues in different ways depending on what the issue was related to. For things that involved actually contributing to the codebase I always estimated more because there is often coding as well as non coding effort and I almost always run into bugs or have merge conflicts so these kinds of issues always took a long time. I assumed that for any coding task that I had an idea of how to do it would take approximately one to three hours depending on complexity and for coding tasks that I did not know how to approach off the top of my head I assumed these would take at least an additional hour to figure out how to handle the issue and learn anything knew that I would need to know in order to do the issue. For non-coding tasks my group broke them up into super manageable chunks so these issues normally took about an hour or less to complete.
Despite the inaccuracy of effort estimates they were still super valuable to the management of the project and the fair distribution of the work. I think the estimates gave some level of understanding of the complexity of each issue which was useful in deciding what to do for the amount of time that you had.
I think tracking my effort was even more important and helpful than estimating the amount of time that each issue would take. Tracking my efforts helped me to stay focused and on task so that I would get accurate measurements of my effort. It also helped me understand what I am able to get done in certain amounts of time as well as understanding at what amount of working time I start to work less efficiently.
I tracked my effort through recording the time that I started and stopped. I chose to do this because it motivated me to stay on task since I would work in large chunks of time without breaks and it made me work more continuously than I usually would, which I think helped me immensely.