Published Nov 10, 2023

GIT Usage Notes

These are a list of some common GIT usage notes the developers of FreePBX have come across.

Remove Merged Local Branches

git branch --merged | egrep -v "(^\*|master|release|dev)" | xargs git branch -d


Remove Merged Remote Branches

git branch -r --merged | egrep -v "(^\*|master|release|dev)" | sed 's/origin\///' | xargs -n 1 git push --delete origin git remote prune origin

Submodule Updating Recursive:

# Update the submodule URLs git submodule foreach --recursive sync # Update the submodule files git submodule update --init --recursive 

Reverting Pushed Commits:

A single commit

# Find the commit you want to revert using 'git log' or 'git blame' and find the hash for that commit git blame Performance.class.php | grep true 09098ae9 (Rob Thomas 2013-12-28 10:29:19 +1000  7)      public function On() { $this->doperf = true; } # Make sure you want to revert the ENTIRE commit git show 09098ae9 [..output of diff here..] # If you're sure you want to revert the entire commit git revert 09098ae9 # This will open up an editor, with the default saying you've reverted the commit. It would be nice if you could explain why. 

Note that if you're reverting a commit that has since been changed by a DIFFERENT commit, you will get conflicts and you'll need to manually resolve them. This is one of the (many) reasons why it's good to do a few small, easily compartmented changes per commit.

The last couple of commits were written when I was well past the Ballmer Peak, and should be thrown away for the good of humanity. So I'm just going to revert everything I've done for the past few commits. 

# reset the index to the desired tree git reset 56e05fced # move the branch pointer back to the previous HEAD git reset --soft HEAD@{1} git commit -m "Revert to 56e05fced" # Update working copy to reflect the new commit git reset --hard # Update Remote git push origin <branch>