Remote Resolution of Git Conflicts
You are attempting to push when you experience a conflict:
[ksedgwic@lap2 bonsai-wiki]$ git push To ssh://ikiwiki@git.bonsai.com/~/public_git/bonsai-wiki.git ! [rejected] master -> master (non-fast forward) error: failed to push some refs to 'ssh://ikiwiki@git.bonsai.com/~/public_git/bonsai-wiki.git'
First, see if the conflict can be automatically resolved:
[ksedgwic@lap2 bonsai-wiki]$ git pull remote: Counting objects: 9, done. remote: Compressing objects: 100% (5/5), done. remote: Total 5 (delta 3), reused 0 (delta 0) Unpacking objects: 100% (5/5), done. From ssh://ikiwiki@git.bonsai.com/~/public_git/bonsai-wiki fe30702..b52b62c master -> origin/master Auto-merged howtos/vcs/git_conflict.mdwn CONFLICT (content): Merge conflict in howtos/vcs/git_conflict.mdwn Automatic merge failed; fix conflicts and then commit the result.
Git status shows that your state is conflicted:
[ksedgwic@lap2 bonsai-wiki]$ git status howtos/vcs/git_conflict.mdwn: needs merge # On branch master # Your branch and 'origin/master' have diverged, # and have 1 and 1 different commit(s) each, respectively. # # Changed but not updated: # (use "git add ..." to update what will be committed) # # unmerged: howtos/vcs/git_conflict.mdwn # no changes added to commit (use "git add" and/or "git commit -a")
IMPORTANT - If you can resolve the conflict do so (normal procedure), this procedure presumes you wish to write the conflicting updates to a branch.
Reset your tree to just your unmerged updates:
[ksedgwic@lap2 vcs]$ git reset --hard HEAD HEAD is now at e1497e3 Changed title.
Create a branch, use a name which suggests a conflict:
[ksedgwic@lap2 vcs]$ git branch master-conflict-20090125 [ksedgwic@lap2 vcs]$ git branch * master master-conflict-20090125
Reset your tree to the prior revision:
[ksedgwic@lap2 vcs]$ git reset --hard HEAD^ HEAD is now at fe30702 started test for creating dual headed branches upon push
Pull the other persons changes:
[ksedgwic@lap2 vcs]$ git pull
Switch back to your branch:
[ksedgwic@lap2 vcs]$ git checkout master-conflict-20090125 Switched to branch "master-conflict-20090125"
Push your conflict branch back to the repoistory:
[ksedgwic@lap2 vcs]$ git push origin master-conflict-20090125 Counting objects: 9, done. Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 406 bytes, done. Total 5 (delta 3), reused 0 (delta 0) To ssh://ikiwiki@git.bonsai.com/~/public_git/bonsai-wiki.git * [new branch] master-conflict-20090125 -> master-conflict-20090125 remote: Counting objects: 9, done. remote: Compressing objects: 100% (5/5), done. remote: Total 5 (delta 3), reused 0 (delta 0) From /home/ikiwiki/public_git/bonsai-wiki * [new branch] master-conflict-20090125 -> origin/master-conflict-20090125