The process I've been using to keep my patches current with the latest development is this: git checkout linus && git pull linus git checkout work When I'm ready to merge, git resolve work linus "Update with head" git tag basis This lets me diff against basis even when the linus branch continues to follow the latest developments. Today, I wanted to move everything forward. But the resolve failed to merge some files. In fact, one file was apparently so thorny that resolve just gave up and left no working file. Bothersome, but I recovered by moving back to the previous work point. Then, I found git-rebase which seems to be more what I'd like to use since it moves my patches along on top of the main development line. git rebase linus This time, almost everything merged without a hitch except for the thorny file from before. I edited the file, removing the conflict markers, and started a build. But what I found was that some of the changes I'd made were no longer present. Several files showed no sign of the patches even though the kernel versions hadn't changed. So, I have a couple of questions: 1) Am I using rebase correctly? 2) If not, did it leave some of my changes uncommitted and hidden somewhere? git-ls-files --unmerged shows no sign of them. 3) Do I have to pull all of my patches off, apply them to the head of the tree, and only use git-rebase to make this work? 4) Should I prefer rebase over resolve? - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html