diff options
-rw-r--r-- | docs/README.md | 1 | ||||
-rw-r--r-- | docs/Stacked_Branches.md | 18 |
2 files changed, 19 insertions, 0 deletions
diff --git a/docs/README.md b/docs/README.md index acce8338c..604c8a07a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,4 +6,5 @@ * [Keybindings](./keybindings)
* [Undo/Redo](./Undoing.md)
* [Searching/Filtering](./Searching.md)
+* [Stacked Branches](./Stacked_Branches.md)
* [Dev docs](./dev)
diff --git a/docs/Stacked_Branches.md b/docs/Stacked_Branches.md new file mode 100644 index 000000000..b73e4aca5 --- /dev/null +++ b/docs/Stacked_Branches.md @@ -0,0 +1,18 @@ +# Working with stacked branches + +When working on a large branch it can often be useful to break it down into +smaller pieces, and it can help to create separate branches for each independent +chunk of changes. For example, you could have one branch for preparatory +refactorings, one for backend changes, and one for frontend changes. Those +branches would then all be stacked onto each other. + +Git has support for rebasing such a stack as a whole; you can enable it by +setting the git config `rebase.updateRfs` to true. If you then rebase the +topmost branch of the stack, the other ones in the stack will follow. This +includes interactive rebases, so for example amending a commit in the first +branch of the stack will "just work" in the sense that it keeps the other +branches properly stacked onto it. + +Lazygit visualizes the invidual branch heads in the stack by marking them with a +cyan asterisk (or a cyan branch symbol if you are using [nerd +fonts](Config.md#display-nerd-fonts-icons)). |