Skip to main content

Fixes for Common Git Mistakes



Spelled last commit message wrong


git commit --amend
This will open up your editor and allow you to make a change to that last commit message


Spelling mistake on branch name


We rename this branch in a similar way to how we rename a file with the mv command: by moving it to a new location with the correct name.
git branch -m feature-brunch feature-branch

If you have already pushed this branch, there are a couple of extra steps required. We need to delete the old branch from the remote and push up the new one:
git push origin --delete feature-brunch
git push origin feature-branch

Accidentally committed all changes to the master branch

git branch feature-branch
git reset HEAD~ --hard
git checkout feature-branch
This creates a new branch, then rolls back the master branch to where it was before you made changes, before finally checking out your new branch with all your previous changes intact.

Forgot to add a file to that last commit


Add that missed file then run that amend command.
git add missed-file.txt
git commit --amend

Added a wrong file in the repo

If all you did was stage the file and you haven’t committed it yet, it’s as simple as resetting that staged file:
git reset /assets/img/misty-and-pepper.jpg
If you have gone as far as committing that change, no need to worry. You just need to run an extra step before:
git reset --soft HEAD~1
git reset /assets/img/misty-and-pepper.jpg
rm /assets/img/misty-and-pepper.jpg
git commit
This will undo the commit, remove the image, then add a new commit in its place.

Go back to any point in the past


The following command prints the logs with commit messages and index

git reflog

Go back to any point in the history using following command, replace 
{index} with index from reflog  
git reset HEAD@{index}

Comments

Popular posts from this blog

Memory Management in iOS

The two basic rules of Memory Management are Objects obtained with  -alloc ,  -new ,  -copy , or  -mutableCopy  have a retain count of one. For objects created with any other method, assume they have a retain count of one but will be autoreleased . If you need to keep them in memory, you need to explicitly retain them. Lets see in detail how the memory management works, Memory management concepts are of critical importance and every Cocoa programmer should take the time to master them. Memory management in Cocoa comes in two flavors:  classic retain counts  and  garbage-collected . The question deals with the retain count flavor, so I will focus on that one. The retain count memory management scheme in Cocoa works on the basis that an object will remain in memory as long as other objects claim to be "interested in it." The Objective-C runtime keeps track of this "interested in" relationship with a simple number: the  retain c...

Advanced Debugging with Xcode and LLDB - WWDC 2018

Advanced Debugging Tips and Tricks: Injecting Code at runtime We can change values of variables at runtime while debugging (here variable_name is a Bool) expression variable_name = false  Here we are injecting value at runtime, so no need to run again to see the effect. (Other eg.,  expression animator.delegate = self) Under Xcode > Preferences > Behaviours > Running > Pauses > Check Show Tab Named, In order to show new tab while a breakpoint is hit. We can set other behaviours as well. We can add symbolic breakpoints on methods in frameworks. like This is in objective c because UIKit is in objective c. In order to find the values/parameter of a function inside framework, we can use For expression -[UILabel setText:] po $arg1 <UILabel ****> po (SEL)$arg2   "setText:" po $arg3 "0 ft" We can set symbolic breakpoints in 2 ways 1. By clicking plus in bottom left and choosing symbolic (Cons: Sets BP in all places) 2. By adding a breakpoi...