= Android and Github =
How to use github for android developmen
== Local manifest ==
In .repo create a file called local_manifest.xml to replace the original parts with your github forks. It should look like:
{{{
}}}
== Local branch and push ==
Create your local branch to work on:
{{{
git remote add origin git@github.com:guhl/android_frameworks_base.git
git remote show origin
}}}
If the remote branches are not shown as tracked do:
{{{
git fetch
git remote show origin
}}}
Checkout a branch
{{{
git checkout -b jb origin/jellybean
}}}
Now you can work on your local branch jb and push to the remote origin/jellybean
== Update from original repo ==
Create a remote for the upstream:
{{{
git remote add upstream git://github.com/Andromadus/android_frameworks_base.git
}}}
Fetch the remote
{{{
git fetch upstream
}}}
Merge the changes
{{{
git merge upstream/jellybean
}}}
=== Update the fork from the local merge ===
Syntax is:
{{{
git push {remote} {localbranch}:{remotebranch}
}}}
which is in my case
{{{
git push origin jb:jellybean
}}}
== Patches ==
=== create patch from uncommitted stuff ===
Write down die Hash of the last commit
do a temporary commit.
create the patch for the temporary commit:
{{{
git format-patch -1
}}}
reset the temporary commit:
{{{
git reset --mixed
}}}
=== Check and apply patch ===
Check the patch:
{{{
git apply --check
}}}
Apply the pathc with am (that allows to sign off the patch)
{{{
git am --signoff
}}}
=== apply a patch an make it uncommitted ===
On the receiving side apply the patch as described above and the reset to the last commit before the patch using the "git reset --mixed " again
== Squashing several commits into one ==
After cherry-picking serveral commits into one new clean base one can consolidate the commits into one using the following commands:
In the following example i have been working on the cm-10.2 branch and now want to consolidate all my last commits into one. The result should be in the cm-10.2 branch again.
Move the current branch
{{{
git branch -m cm-10.2 cm-10.2_pff
}}}
Checkout the original branch again and merge the working branch.
{{{
git checkout -b cm-10.2 origin/cm-10.2
git merge cm-10.2_pff
}}}
Reset the cm-10.2 branch to the original state.
{{{
git reset origin/cm-10.2
}}}
Now all the changes are unstaged and one can add and commit them again in one consolidated commit.
{{{
git add -A
git commit
}}}