Thank you for the detailed answer! It's really useful. Now I fetch the new source code to a new branch. Later I plan to replace master with merge --ours when it's ready. Thanks On Fri, Aug 6, 2010 at 4:07 PM, Ramkumar Ramachandra <artagnon@xxxxxxxxx> wrote: > Hi, > > PCMan writes: >> I want to rewrite a program totally from scratch rather than branching >> from current one. >> So I created a new repo for it and do the development there. >> Now it's finished and I want to replace the old program with it. >> Is it possible to replace the master branch of the old repo with the >> code in this new repo? >> I want to move the old code to a separate branch for backup, and >> replace the master branch with the master branch of the new repo. >> Since git rm -r * than git add all new files will lost history of new >> repo, it's not an option. >> The old repo is a public online repo used by multiple users. So just >> renaming the repo won't work since the users who pull code from the >> old repo will get troubles. >> What's the best strategy for smooth migration in this case? >> I'm not able to find the answer on Google. > > In your old repository: > $ git checkout master # Switch to branch master > $ git checkout -b backup # Create a branch backup of master > $ git remote add new <new_repository_url> # "new" is the name of the remote > $ git fetch new # Fetch all the objects from the remote "new" > $ git checkout master # Get ready to rewrite master > $ git reset --hard new/master # Use `reset --hard` with extreme caution > $ git checkout backup # Your backup is safe here > $ # Done! > > -- Ram > -- To unsubscribe from this list: 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