I've been working on a project that has recently migrated from Subversion to Git. I had been committing to the Subversion repo via git-svn prior to the migration. After the migration, I noticed a fair amount of history has been lost because each of my merge commits from topic branches have been squashed (either via the git-svn bridge, or due to the migration), losing some of the commit messages I want to keep. Is it possible to use my local copy of the pre-migration repo to unsquash the merge commits in the post-migration repo, perhaps via something like cherry-picking?
How do I rewrite Git history to undo squashed merge commits?
320 Views Asked by Geoff Oxberry At
1
There are 1 best solutions below
Related Questions in GIT
- Push mysql database script to server using git
- Git show's file path
- Git > diffs filtered, show only certain changed classes/files
- Pushing to git repository hosted by Visual studio online without entering user name and password
- How do I create my own Git branch to work on?
- Git init --bare giving error fatal: Out of memory? mmap failed: No such device
- Sub-directory into independent repository and later merge back into main repository
- How to find the Git Revision Hash in a synced SVN repo using SubGit?
- eclipse errors when try to change to master git branch
- How to have Heroku build my development branch on a staging server?
- Is "Merged in" a commit message created by bitbucket, or git?
- Git: Multiple projects under one directory
- Permission denied hg-git
- Is it possible to clone a private git repo without adding ssh keys
- Track file in master repository which is ignored in submodule
Related Questions in SVN
- Why does the Jenkins SVN plugin give error E170001 when connecting to my VisualSVN server?
- How to find the Git Revision Hash in a synced SVN repo using SubGit?
- In SVN, what's the different between "merge from a to b" an "merge from b to a"?
- Revert back to older version in TortoiseSVN and Commit
- SVN - folder checkout and merges
- Automatically Compile .Net UserControls
- SVN update not working
- maven-scm-plugin 1.9.4 - too old to work with working copy
- git-svn problems creating tags
- Sonarqube SVN Plugin fails with code E155007 'is not a working copy'
- Install Subversion 1.7 on Debian jessie
- How to customize svn date format
- Reverse Merge and svn:mergeinfo
- Automatically deploy latest revision to website from SVN server
- What is a generic name for SVN's "trunk", "tags" and "branches" directories?
Related Questions in MERGE
- Sub-directory into independent repository and later merge back into main repository
- R: Avoid loop or row apply function
- neo4j load csv invalid "ON MATCH"
- PIG merge two lines in the log
- In SVN, what's the different between "merge from a to b" an "merge from b to a"?
- git merge "deleted by us"
- Merge sort using CUDA: efficient implementation for small input arrays
- Merge project from other branch git
- Get a single line representation for multiple close by lines clustered together in opencv
- merge or mutate a summary (dplyr)
- How to I combine data from two XML files into the same structure?
- Merging PDF files with similar names using PDFTK and a bash script
- git has problems with squashing commits once there is "Merge branch"
- How can I combine elements at the same index from separate lists?
- Merging two sorted stacks
Related Questions in GIT-SVN
- Import Git SVN cloned repository into existing Git repository
- git-svn problems creating tags
- Migrating source code from PVCS to SVN
- How to completly turn off git line endings auto correction
- Git - xcode - single project multiple developer on LAN
- Adding older history from svn project with git svn
- Migrating Codeplex SVN to Git with git svn clone
- How to tell git-svn that files are NOT binary
- Is there any way to compare two files in Git without their formatting changes?
- Error with git rebase ("could not apply...")
- GIT Cherry-picking one commit X times
- git tag: fatal: Failed to resolve 'refs/remotes/my_tag_name' as a valid ref
- 'Can't create session Unable to connect to repo' when trying to migrate svn to git
- SVN to Git Migration. How to migrate a non standard SVN layout to Git
- How to handle SVN externals when migrating to Git
Related Questions in GIT-REWRITE-HISTORY
- Git Remove Large Files from History
- Switching Git workflow from merge to rebase: how to clean up a merge commit history?
- How to remove a file at the origin of multiple branches from the git history?
- Remove unused assets from git history
- Merge 2 branches into single branch
- Removing nested folders with BFG Repo Cleaner
- how to re-order commits in Git non-interactively
- How to amend several commits in Git to change author
- Shrinking Git Repo - Object in packet, not in commits
- git-filter-branch to remove strings, but where strings contain $ ' \ and other characters
- Is it possible for github to remove my email adress from public repositories from a purely technical standpoint?
- Make git `replace` commits permanent (or such)
- Rebasing specific part of git history
- How to amend older Git commit?
- How do I rewrite Git history to undo squashed merge commits?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You can use git graft to augment squashed commits with another parent pointing to the real commit(s) that were merged in. Once you've added grafts for all squashed commits, you can permanently incorporate them by rewriting git history with
git filter-branchThis SO answer provides details on how to do it: Setting git parent pointer to a different parent