Is it possible to create merge requests in pure Git from the command line?

Solution 1:

The answer given by svick is not correct. It is possible.

There's git request-pull which is part of the Git suite. Using that command line tool, you could create a pull request that could be sent per E-Mail.

Example:
your origin holds a branch master. Now you create a local bugfix branch fix, implement the bug fix and push that fix branch to origin:

git push origin fix:fix

Then, you want someone to merge the changes made in the fix branch into master. Create the pull request with

git request-pull master origin

This will create a text formatted as follows:

The following changes since commit <SHA of master>:

  <commit message of SHA of mster>

are available in the git repository at:
  <repo location> fix

<User Name> (<Number of Commits>):
      <messages of the commits>
      ...

 <changed files>
 ...
 <file statistics>

If the merge request shall go to somebody that cannot access your repo where you pushed your changes, there's always the opportunity of doing it with git format-patch.

After pushing your fix branch to origin (you don't even need to do that), while being on the fix branch create the patch using

git format-patch master..

This will create a patch file for each commit you did in fix since branching off master. You could bundle the generated .patch files with

tar czf fix.tgz *.patch

and then send to someone e.g. via E-Mail to review and apply.

For the sake of completeness: applying the patches could be done with git am.

Solution 2:

Gitlab add this feature from v11.10. After committing your final changes, instead of push simply use:

git push -o merge_request.create

to create a merge request. More details in push docs or merge request docs.