Magit provides many commands for changing the visibility of sections, but all you need to get started are the next two.
Toggle the visibility of the body of the current section.
Cycle the visibility of current section and its children.
Cycle the visibility of diff-related sections in the current buffer.
Cycle the visibility of all sections in the current buffer.
Show sections surrounding the current section up to level N.
Show all sections up to level N.
Some functions, which are used to implement the above commands, are also exposed as commands themselves. By default no keys are bound to these commands, as they are generally perceived to be much less useful. But your mileage may vary.
Show the body of the current section.
Hide the body of the current section.
Recursively show headings of children of the current section. Only show the headings. Previously shown text-only bodies are hidden.
Recursively show the bodies of children of the current section. With a prefix argument show children down to the level of the current section, and hide deeper children.
Recursively hide the bodies of children of the current section.
Toggle visibility of bodies of children of the current section.
When a buffer is first created then some sections are shown expanded
while others are not. This is hard coded. When a buffer is refreshed
then the previous visibility is preserved. The initial visibility of
certain sections can also be overwritten using the hook
This hook is run when first creating a buffer and also when refreshing an existing buffer, and is used to determine the visibility of the section currently being inserted.
Each function is called with one argument, the section being
inserted. It should return
show, or to leave the visibility
nil. If no function decides on the visibility and the
buffer is being refreshed, then the visibility is preserved; or if
the buffer is being created, then the hard coded default is used.
Usually this should only be used to set the initial visibility but
not during refreshes. If
magit-insert-section--oldroot is non-nil,
then the buffer is being refreshed and these functions should