Version 14 (modified by johnnyg, 13 years ago) (diff)

add how to merge a topic branch

Git Tips


  1. Apply a commit to multiple branches
  2. Ignore changes in a tracked file
  3. Stash untracked files
  4. Merge a remote branch
  5. Delete the last commit
  6. Delete a remote branch
  7. Merge a topic branch

This page is a collection of useful git tips.

Apply a commit to multiple branches

  1. Checkout master branch
    git checkout master
  2. Make commit
    git commit -m "Fixed bug"
  3. Checkout stable branch
    git checkout stable
  4. Apply the last commit from master to this branch
    git cherry-pick master
  5. Repeat steps 3-4 as necessary
  6. PROFIT!

Ignore changes in a tracked file

To ignore:

git update-index --assume-unchanged <tracked-file>

To stop ignoring:

git update-index --no-assume-unchanged <ignored-tracked-file>

Stash untracked files

At times you will be working on a branch with untracked files (new files) and you'll need to checkout master to apply a bug fix.

First, add the untracked files to the index:

git add <untracked-files>

Now do a regular stash:

git stash

At this point you can checkout whatever branch you want and do what you need to do. When you're done, checkout your original working branch again and pop the changes from your stash:

git stash pop

You can remove the files you indexed from the index if you want, as to not pollute your next commit:

git rm --cached <files>

Merge a remote branch

First, add the repo:

git remote add <reponame> <location>

Now fetch in the changes:

git fetch <reponame>

You'll want to do a diff against your branch to see what will be merged:

git diff master <reponame>/<branch>

If you're happy with the changes, go ahead and merge it:

git merge <reponame>/<branch>

Delete the last commit

git reset --hard HEAD~1

Delete a remote branch

git push <repo> :<branch>

Merge a topic branch

In this example we assume that your topic branch, <topic>, is off master and that you are currently in your topic branch

  1. Squash/reword/edit any commits if need be
    git rebase -i master
  2. Rebase your topic branch on top of current master
    git rebase master
  3. Change to master
    git checkout master
  4. (Fast-forward) merge your topic branch into master
    git merge <topic>
  5. Delete your local topic branch (see above tip for remote deletion)
    git branch -d <topic>