NOTE: this page is for archival only, see the note at the end of the page.

Git guide for Linux wireless users and developers

This is a quick git-guide for Linux users and developers with emphasis on Linux wireless. The latest Linux wireless development takes place on John Linville's wireless-testing git tree.

Cloning latest wireless-testing

First, clone the wireless-testing.git tree

git-clone git://
cd wireless-testing

Get the latest updates

You will want to update your local git repository to match what John has last committed. You can do this as follows.


Review the changes last registered


To review changes made to wireless drivers

git-log -p drivers/net/wireless/

To review changes made to mac80211

git-log -p net/mac80211/

You get the idea.

Hacking on Linux wireless

If you'd like to hack on Linux wireless you can create own branch based on the one you are using. This is so you don't screw your current branch up.

git-checkout -b my-fix-for-foo
# hack hack hack
# To get a diff of your work:
git-diff > my_changes.diff
# Or if you just want to read them:
# To revert to the original state of the branch:
git-checkout -f
# If instead you want to commit
git-commit -a

Check available branches

Suppose you have created a few branches, and just are not sure what you have anymore.

# To view local branches
git-branch -l
# To view all remote branches
git-branch -r

Reviewing changes between commmits

Suppose you want to get the log and diff between two commits.

# get the SHA of two commits
# Then get the diff of them, by showing the logs in between
git-log -p d8a285c8f83f728be2d056e6d4b0909972789d51..9202ec15da36ca060722c363575e0e390d85fb71
# Since SHAs are pretty unique you can just give it a short version
# and it will try to match what is right:
git-log -p d8a28..9202e

Merging git branches

Say you have two local branches, and I want to merge them. If you're on local branch my-latest and I want to merge with local branch my-fix-for-foo, you would do:

git-pull . my-fix-for-foo

Checkout code as it was from specific commit

Suppose you want to checkout what the codebase looked like at a specific commit SHA. You can do this with branches.

# Long form:
git-checkout -b view-commit-foo d8a285c8f83f728be2d056e6d4b0909972789d51
# Or short form:
git-checkout -b view-commit-foo d8a28

Delete branches

If you are fed up with a branch delete it. You must not be on that branch so go into another one.

git-checkout master
git-branch -D old-branch

No need to download more kernel tarballs

You can simply make your current directory look like a specific tag blessed by Linus (or Linville).

git-checkout -b v2.6.27-rc7 v2.6.27-rc7

Generate patches

Say you have 3 commits and you want to send the patches now.

git format-patch -o some-dir d8a285c8f83f728be2d056e6d4b0909972789d51..9202ec15da36ca060722c363575e0e390d85fb71
# this is equivalent to, this is the short form
git format-patch -n -o some-dir d8a28..9202e

Where d8a28 was the last commit before you started hacking and 9202e is the current head, meaning the commit ID of your latest commit.

Generating patches for renames

If you are going to rename files you can add "-M" to the arguments to git-format-patch, this way the patches don't generate useless endless removals and adds for a simple rename.

Sending patches

Read git-send-email man page. But here is a quick summary for those who just want to get it to work. Keep in mind git-send-email is a perl script and is usually shipped separately from git core.

You can install your favorite mailer, one option is to use ssmtp.

Setting up ssmtp

Below is an example config that works with an exchange server, in etc/ssmtp/ssmtp.conf:


Here is an example /etc/ssmtp/revaliases

user can be the username (whoami) on the system.

Sending e-mails

Once you have your mailer setup and patches in a directory, review them so they are correct. Once all done send them out using:

This is a static dump of the wiki, taken after locking it in January 2015. The new wiki is at
versions of this page: last, v25, v24, v23, v22, v21, v20, v19, v18, v17, v16, v15, v14, v13, v12, v11, v10, v9, v8, v7, v6, v5, v4, v3, v2, v1