Git Cheat Sheet

This is a short list of commands. If you are not familiar with the workflow yet, make sure you follow the link at the beginning of each section and read the detailed description.

The following commands assume you are in the working directory of the TYPO3 core repository.

git clone

Clone TYPO3 CMS Git repository into current directory:

git clone .


For detailed setup instructions, please see: Git Setup

Workflow - common commands

For details see Create a Patch

Reset repo to last remote commit in (remote) main branch:

git reset --hard origin/main && git pull origin main

Stage and commit all changes:

git commit -a

Is the same as:

git add .
git commit

Stage and commit all changes to already existing commit:

git commit -a --amend

Push changes to remote main branch on gerrit (default method):

git push

This assumes, you have correctly configured your remote as described in Setting up Your Remote. If not, you must explicitly push using the refs/for namespace:

git push origin HEAD:refs/for/main


Pushing to refs/publish is deprecated, we now push to refs/for.

Workflow - work in progress

In case you want to push a “Work in progress”, use the following instead:

git push origin HEAD:refs/for/main%wip

You can also configure Gerrit to always mark your pushes as WIP. In order to do this head over to and configure “Set new changes” to “work in progress” by default”.


Workflow -other branches

Show all branches:

git branch -a

Checkout 10.4 branch:

git checkout 10.4

Checkout 9.5 branch:

git checkout 9.5


Pushing to a branch other than main only makes sense if the bug only exists on that branch and does not exist on main. Backporting of a fix to a branch is done by the core team member who merges the original fix to the main branch.

Long story short: In most cases, push to main. The rest is being taken care of by core team members!

Push 10.4 branch:

git push origin HEAD:refs/for/10.4

Push 9.5 branch:

git push origin HEAD:refs/for/9.5

Workflow - commit msg

Details: Commit Message rules for TYPO3 CMS

Example commit message for a bugfix:

[BUGFIX] Subject line


Resolves: #12345
Releases: main, 10.4

Other keywords:

  • subject < 52 chars
  • other lines <= 72 chars

Workflow - Undoing / fixing things

Throw away all changes since last commit:

git reset HEAD --hard

Unstage a file (remove file from index, but keep in working dir):

git reset <path>

Change author for last commit:

git commit --amend --author "Some Name <some@email>"

Squash last 2 commits:

git rebase -i HEAD~2

In the editor, replace ‘pick’ with ‘squash’ in the line describing the latest commit

This is very handy, in case you accidentally created a new commit instead of adding to an existing commit (with git commit --amend). This way, you can merge the last 2 commits and the commit messages.


See also these not TYPO3 specific cheat sheets for git if you are not very familiar with git:

To learn more about the internal working of Git, check out these resources: