简体   繁体   中英

Export git with version history

I need to export a git repository content and import it in a target repository. I know of two alternatives to do it, but they do not solve my problem

a) Add the source repository as a remote and do a merge to the target. I cannot use this as both repositories are not on the same network

b) Use git archive and copy the contents to the target. In this git archive the revision info is lost.

I need something that does an archive along with the version history and enables me to merge in the target. How can this be done?

git bundle is provided for this exact purpose.

Example:

  1. Bundle your source repository in its entirety

    git bundle create my_repo.bundle --all

  2. Take ``my_repo.bundle'' to where your target is

  3. From your target, load up your source commit objects

    git bundle unbundle my_repo.bundle

    ...from which point you can merge/rebase/cherry-pick your desired source commits into your target repository to your heart's content.

    Otherwise, pulling works just the same:

    git pull my_repo.bundle

Compared to cloning, bundles are easier to transfer because they're smaller as your files aren't carried in their checked out state.

Other reasons for using bundle:

  • Unlike using clone --bare (which doesn't checkout your files), bundles are created and packed as a single file so you don't need additional compressing/tarballing.

  • You could also simply tarball your source repository (or just the .git directory), but you'll be carrying over all the excess cache and garbage that builds up under .git/.

Git clone the repository onto a USB stick, laptop, or some other data transfer medium. Hook that up to the other machine, add add the medium as a remote and pull/merge the changes from there...

Any clone from the repository actually contains all the history, so the question is really how can you get a clone to the other machine.

Also see: this question

You want to create a fork of your current repository it would seem. Let me know if I got this right: You wish to clone a particular git repository. Work on the clone and then merge the changes into the original repository?

This is done my creating a fork of your repository and then pulling the changes from the original source for commit changes.

You can just zip the complete repository folder, then copy it to the destination workstation (via usb stick, etc.), and add that local repository as remote repository. Then you can fetch and merge.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM