How to Commit Multiline Messages in git commit
As developers, when using Git to commit code to a remote repository, we need to write information about this modification. On the command line, we use the git commit command, such as git commit -m which allows you to add a line of information. But sometimes a multi-line message with a title and a specific description may be more indicative of your intent, such as the following:
Commit Title: Briefly describe what I changed Commit Description: Detailed
instructions for changing it
So how to achieve this?
1. Use a text editor
Use git commit without the -m or git commit -v, which will take you to a text editor. So then you can add multiple lines of text using your favorite text editor.
2. Multiple -m options
If you don’t want to see wordy diffs, you can use multiple -m options. Just like this:
$ git commit -m "Commit Title" -m "Commit Description"
This is because if multiple -m options are given, their values will be concatenated into separate paragraphs, which can be found in the git documentation.
Next git log will look like this:
$ git log commit 1e8ec2c4e820fbf8045b1c7af9f1f4f23262f755 Author: Your Name
you@example.com Date: Sat Sep 24 20:18:15 2022 -0700 Commit Title Commit
Description
3. Open quotes, press Enter
Another easier way is to type git commit -m " and hit Enter to enter the multiline, and use closing quotes when closing. This looks like this:
$ git commit -m " > Commit Title > Commit Description"
Next git log will look like this:
$ git log commit 7d75a73e41b578a1e2130372a88a20ed1a0a81e4 Author: Your Name
you@example.com Date: Sat Sep 24 20:22:02 2022 -0700 Commit Title Commit
Description
4. Shell Environment Variables
Don’t forget that you can define environment variables in the shell, for example, you can define temporary environment variables with newlines:
$ msg=" > Commit Title > Commit Description" # or $ msg="$(printf "Commit
Title\nCommit Description")"
Next, you can:
$ git commit -m "$msg"
That’s it, git log will output:
$ git log commit 056e35c37d199c0f3904e47d2107140267608c4a Author: Your Name
you@example.com Date: Sat Sep 24 20:42:11 2022 -0700 Commit Title Commit
Description
5. Use the -F option
Introduction from the documentation:
-F
— file= Take the commit message from the given file. Use
-to read the message from the standard input.
So you can write a multi-line message in a temporary file before committing. Like the following:
$ printf "Commit Title\nCommit Description" > "temp.txt" $ git commit -F
"temp.txt"
Or use standard input instead of temporary files:
$ printf "Commit Title\nCommit Description" | git commit -F-
Conclusion
Here are a few methods I saw, you can choose one of them according to your preference. If you have other ways, feel free to share.
If you found this helpful, consider subscribing to my newsletter for weekly web development insights and updates. Thanks for reading!
4 Quick Commands to Find Things in Linux
Learn how to use which, whereis, locate, and find to search files and directories in Linux.
Why to Avoid Default Exports in JavaScript Modules
Learn why to avoid default exports in JavaScript modules. Discover the problems with discoverability, refactoring, and naming conventions. Get practical alternatives and best practices for better code maintainability.