Re: [PATCH v3 5/5] pull: add warning on non-ff merges
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- Sep 9, 2013, 01:49 UTC
- Message-ID
- <CAMP44s0z2=-SEJD8=K31MBcuPx=Xx__6BKaqd-MmXjAVTOr7mQ@mail.gmail.com>
- In-Reply-To
- <1378689796-19305-6-git-send-email-felipe.contreras@gmail.com>
On Sun, Sep 8, 2013 at 8:23 PM, Felipe Contreras <felipe.contreras@gmail.com> wrote:
Show 8 quoted lines
> To prepare our uses for the upcoming changes we should warn them and let > them know that they will need to specify a merge or a rebase in the > future (when a non-fast-forward situation arises). Also, let them know > we fallback to 'git pull --merge', so when the obsoletion of this mode > comes, they know what to type without interrupting or changing their > workflow. > > Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
On top of this, we probably would want to update the documentation, so the user can already read about what's going on when they type 'git pull --help' as the warning suggests.
commit 60a2f5de7da2e119b858c7ab57b5f02cce9bdb9f Author: Felipe Contreras <felipe.contreras@gmail.com> Date: Sun Sep 8 20:40:21 2013 -0500
pull: add documentation about non-ff merges
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
diff --git a/Documentation/git-pull.txt b/Documentation/git-pull.txt index 6d55737..d503924 100644 --- a/Documentation/git-pull.txt +++ b/Documentation/git-pull.txt @@ -23,6 +23,7 @@ More precisely, 'git pull' runs 'git fetch' with the given parameters and calls 'git merge' to merge the retrieved branch heads into the current branch. With `--rebase`, it runs 'git rebase' instead of 'git merge'. +With `--merge`, it forces the merge, even if it's non-fast forward. <repository> should be the name of a remote repository as passed to linkgit:git-fetch[1]. <refspec> can name an @@ -41,9 +42,26 @@ Assume the following history exists and the current branch is ------------ A---B---C origin/master / + D---E master +------------ + +Then `git pull` will merge in a fast-foward way up to the new master. + +------------ + D---E---A---B---C master, origin/master +------------ + +However, a non-fast-foward case looks very different. + +------------ + A---B---C origin/master + / D---E---F---G master ------------ +In the future, `git pull` will fail on these situations, however, most likely +you would want to force a merge, which you can do with `git pull --merge`. + Then "`git pull`" will fetch and replay the changes from the remote `master` branch since it diverged from the local `master` (i.e., `E`) until its current commit (`C`) on top of `master` and record the
-- Felipe Contreras