Log, Checkout: trying to check out remote branch with behind tracking branch should offer fast-forward merge
Example: current branch is branch1; want to checkout 'develop' but develop diverged and requires a pull (an extra step).
The idea is using an existing local branch that is already tracking it, not create a new local branch. (I do not want to checkout as "develop2" just because develop has diverged!)
- Submodules: Over time submodules can be changed (added/removed). This is not an operation that is well done when performing a checkout and submodules directories gets in the way when switching back & forth in history.
- PR workflow : PR systems often merges a PR branch to develop/master, locally switching from a PR branch that just got merged by such system to the latest "develop" would often yield near-zero change and would be more "friendly" with system that looks for changes on disk to "reload" pages and such.
- Optimization; large repo with long history: switching to a branch that has diverged for a long time on a large repo can be very slow (because of the large number of files to change). Git needs to restore a very old state. In the case that the pull step would presumable restore the branch to a fairly recent state, then we could have saved us the heavy back&forth in history. From a Git standpoint, we could have saved lot of time by going directly to the other commit without going through a very old commit first.
Currently this case is already detected in SmartGit and a dialog with a few options are shown to the user. I think we could safely add another option.
Customer support service by UserEcho