Importing Sources Importing already existing &debian; packages Imporing an already exsting debian package into a git repository is as easy as: &git-import-dsc; package_0.1-1.dsc This will put the upstream sources onto the upstream branch and the debian patch on the master branch. In case of a debian native package only the master branch is being used. You can specify different branch names via the and options. Importing a new upstream version Change into your git repository, make sure it has all local modifications committed and run either of: &git-import-orig; /path/to/package_0.2.orig.tar.gz &git-import-orig; /path/to/package_0.2.tar.bz2 &git-import-orig; /path/to/package-0.2/ This puts the upstream souces onto the upstream branch. The result of this is then merged onto the master branch and a new changelog entry is created. You can again specify different branch names via the and options. You can also filter out content you don't want imported: &git-import-orig; --filter='CVS/*' /path/to/package_0.2.orig.tar.gz If you expect a merge conflict you can delay the merge to master via the and pull in the changes from the upstream branch any time later. Converting an existing &git; repository If the &git; repository wasn't created with &git-import-dsc; you have to tell &git-buildpackage; and friends where to find the upstream sources. Upstream sources on a branch If the upstream sources are already on a separate branch things are pretty simple. You can either rename that branch to upstream with: mv .git/theupstream-branch .git/upstream or you can tell &git-buildpackage; the name of the branch: cat <<EOF > .git/gbp.conf [DEFAULT] # this is the upstream-branch: upstream-branch=theupstream-branch If you use &git-import-orig; to import new upstream sources, they will end up on theupstream-branch and merged to master. Upstream sources not on a branch If you don't have an upstream branch but started your repository with only the upstream sources (not the debian patch) you can simply branch from that point. So use &gitkcmd; or &gitcmd;-log to locate the commit-id of that commit and create the upstream branch from there, e.g.: COMMIT_ID=`&gitcmd; log --pretty=oneline | tail -1 | awk '{ print $1 }'` &gitcmd; branch upstream $COMMIT_ID The important thing here is that the COMMIT_ID specifies a point on the master branch that carried only the upstream sources and not the debian modifications. The above example assumes that this was the first commit to that repository. There's currently no easy way to create the upstream branch if you never had the upstream sources as a single commit. Using &git-import-orig; on such repositories might lead to unexpected merge results. In order to fix this you can prepend the upstream sources as a single commit to your tree using &git;'s grafts. Afterwards you can simply create a branch as explained above and &git-import-orig; should work as expected. Starting a Debian package from scratch So far we assumed you already have a &debian; package to start with but what if you want to start a new package? First create an empty repository: mkdir package-0.1 cd package-0.1 git-init Then you import the upstream sources, branch of the upstream branch and add the debian files (e.g. via dh_make): &git-import-orig -u 0.1 ../package-0.1.tar.gz git-branch upstream dh_make That's it, you're done.