From: Peter Krefting Date: Mon, 02 Nov 2009 12:26:37 GMT Subject: git pull --rebase and losing commits Message-ID: Hi! I have put my web site under Git control, and am running into some problems. Whenever I push changes, I go via a bare repository, which then is pulled into a checked out tree in my "public_html" directory. However, some scripts I have does create files directly under the "public_html", and some of them I want to push into the Git history. I am trying to use --rebase everywhere to get a linear history in the cases where I have pushed changes to the bare repository while there were uncommited changes to the public_html directory. I have come up with a script that does this (I have removed the uninteresting non-git commands): # Commit local changes git add path/to/script/output/* for file in $(git diff-index --cached --name-only HEAD); do havenew=1 done if [ $havenew = 1 ]; then git commit --quiet -m 'Automatic' path/to/script/output/* fi # Update tree (--strategy=ours avoids merge conflicts) git pull --rebase --strategy=ours origin master # Push rebased local changes git push origin master # Update all references git fetch origin master:remotes/origin/master However, this seems to lose commits. When I ran it today, it commited an automatic change, and then pulled a tree that did not contain that change, making the changed file just disappear. I had to dig through the reflog to find it: - This is the auto-commit: 608b7eda553552841f4a16167c680fc74ed3c55a 509926edd306bb2f09f563a7cfda800a4f0fdaed Peter Krefting 1257162580 +0100 commit: Automatisk bloggkommentarsuppdatering - This is the "git pull": 509926edd306bb2f09f563a7cfda800a4f0fdaed 9088bd4801a9008fe3fca0d351f97544cee014f1 Peter Krefting 1257162583 +0100 rebase finished: refs/heads/master onto 9088bd4801a9008fe3fca0d351f97544cee014f1 The history of 9088bd... does not contain the rebased version of 509926..., it just went missing. I guess I am missing something vital here. $ git --version git version 1.5.6.5 -- \\// Peter - http://www.softwolves.pp.se/