M-x git-merge will ask for an commitish, and merge with it. A new submenu is also available for merging with local and remote branch. --- The problem here, which is similar to the one that exist now when one merge from outside Emacs, is that in case of conflict, Emacs doesn't look to the index, and so, when one commit the resolved conflict, one might forget to select all file that should be selected for the commit to be what is needed. This problem could be even worse with rebasing, as rebasing is a more destructive action than merging. contrib/emacs/git.el | 22 +++++++++++++++++++++- 1 files changed, 21 insertions(+), 1 deletions(-) diff --git a/contrib/emacs/git.el b/contrib/emacs/git.el index f180421..60553d3 100644 --- a/contrib/emacs/git.el +++ b/contrib/emacs/git.el @@ -1213,6 +1213,25 @@ use a prefix arg if git should merge while checking out" (list ["checkout any commitish" git-checkout t] ["change to new" git-branch t]))) +(defun git-merge (commitish) + "merge with commitish + +Note that in case of conflict, after resolving everty conflict, +one have to select every concerned file before commiting" + (interactive (list (git-read-commitish "Merge with: "))) + (git-call-process-display-error "merge" commitish) + (git-refresh-status)) + +(defun git-merge-menu-filter (rest) + "define the merge branch menu" + (append + (mapcar + (lambda (branch) + `[,(car branch) + (git-merge ,(car branch)) :visible ,(not (cdr branch))]) + (git-list-branches :all)) + (list ["merge with any commitish" git-merge t]))) + (defun git-diff-file () "Diff the marked file(s) against HEAD." (interactive) @@ -1555,7 +1574,8 @@ amended version of it." ["Refresh" git-refresh-status t] ["Commit" git-commit-file t] ("Checkout Branch" :filter git-checkout-menu-filter) - ("Merge" + ("Merge" :filter git-merge-menu-filter) + ("Resolve Merge" ["Next Unmerged File" git-next-unmerged-file t] ["Prev Unmerged File" git-prev-unmerged-file t] ["Mark as Resolved" git-resolve-file t] -- 1.5.4.1.123.gcb68-dirty - 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