Git Hacks

Whenever you do git pull and you find some files modified locally as part of build and want to overwrite it with the contents in the git repository.

git checkout HEAD^ file/to/overwrite
git pull

To checkout a new git branch and to create a new git branch and checkout

git checkout <branch>

git checkout -b <branch>

To delete a remote branch and local branch

git push –delete origin bugfix/
git branch -d bugfix/

To copy a directory without its history and add as a new folder in git

cp -R old_dir new_dir

git add new_dir

git commit -m "first revision of new_dir's copied files"

Creating a diff file

git diff > 1.patch

Applying a git generated patch file

git apply 1.patch

Saving your changes while checking out a branch

git stash save

if you have to save again

git stash save

stash@{1} – older changes…newest will become stash{0}

git stash list – lists all stash

git stash drop

stash@{0} dropped. stash@{1} will become stash@{0}

git stash apply stash@{2} – to apply changelist in stash{2}

git stash drop stash@{2} – to drop the changelist in stash{2}

git stash pop - To get everything back
git checkout -b newbranch
git stash pop

git stash pop - Restore back to the saved state, but it deletes the stash from the temporary storage.
git stash apply - Restore back to the saved state and leaves the stash list for possible later reuse. Need to use below command to drop them.
git stash drop

git stash apply 1 is equal to git stash@{1} apply

To rename a git local branch

Use -m option to rename a branch. Here I forgot to add bugfix/ prefix int he branch name. So -m command helped me to add it.
git checkout bugfix-branch
git branch -m bugfix/bugfix-branch

To cherry pick a pull request

Create a new branch form the origin branch where you want to add the fix.

git branch cherry-branch origin/master

switch to the new branch

git checkout cherry-branch

Cheery pick the commit using commit id.

Use git log to find the commit id.

git cherry-pick COMMIT-ID

Push the new branch to your fork

git push origin cherry-branch

  • References

To Backport changes

To fetch all upstream changes
git fetch –all

create the cherrypick branch from the branch intended to check-in

git branch my_cherrypick_branch rel/release_branch_to_checkin

checkout temporary cherry pick branch

git checkout my_cherrypick_branch

cherry pick the commit

git cherry-pick dc4264056167c7ef9d496b276e9f2699d1b91106

push the cherry pick branch to upstream.

git push –set-upstream origin my_cherrypick_branch

Now create the pull requests.

to download again the artifact

git lfs uninstall

git pull

git lfs install

git lfs checkout

About the Author


21 years of experience in various layers of software. Primarily experienced in system side software design and development on server management software. Interested in linux development in x86 and arm architecture.