Sat, 16 Oct 2010 23:23:46 -0600, Charles R Harris wrote: [clip] > And I just managed the same result on a push to maintenance/1.5.x :-/ > But I know how it happened, I cherry picked from master for a backport > before updating the 1.5.x branch from github. In Retrospect I probably > should have reset the head, pulled from 1.5.x, and then reapplied the > backport.
I think the main problem is in using $ git pull The solution is: DO NOT USE "git pull" Instead, use "git fetch" and after that either "git merge" or "git rebase". Then it is explicit what you are doing, and it is more difficult to get wrong. OTOH, $ git pull --ff-only is "safe" in this sense. So you could in principle drop #!/bin/bash CMD="$1" shift case "$CMD" in pull) exec /usr/bin/git pull --ff-only "$@" ;; *) exec /usr/bin/git "$CMD" "$@" ;; esac on your $PATH. > Live and learn. I do it like this: 1) Work in a separate topic branch. 2) Do not merge from master while working. Rebasing is OK, but often not needed. 3) When done, a) If it's just a single commit or a bunch of unrelated commits, rebase on upstream/master. $ git fetch upstream $ git branch tmp HEAD # make a backup in case you mess up $ git rebase upstream/master # do the rebase In case of conflicts: $ git add numpy/.../somefile # mark conflict resolved $ git rebase --continue If you mess up, you can do $ git rebase --abort and if you notice the mess-up after rebase has completed, you can do $ git reset --hard tmp # set branch to same point as `tmp` b) If it's a work consisting of multiple commits that build on each other, you can merge. $ git fetch upstream $ git merge --no-ff upstream/master 4) Then, check what is going to be pushed: $ git log --graph somebranch $ git log -p somebranch Finally, push directly from the branch: $ git push upstream somebranch:master _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion