Patching Nextcloud
Obtaining a patch
If you found a related pull request on GitHub that solves your issue, or you want to help developers and verify a fix works, you can get a patch for the pull request.
Using https://github.com/nextcloud/server/pull/26396 as an example.
Append .diff to the URL: https://github.com/nextcloud/server/pull/26396.diff
Download the patch to your server e.g. via wget https://github.com/nextcloud/server/pull/26396.diff (this will place 26396.diff in the local directory)
Follow the Applying a patch steps.
If you are on an older Nextcloud version, you might first need to go to the correct backported patch for your version.
You can find the appropriate version by looking for a link posted by backportbot-nextcloud to the backport pull request for your release, or by checking for a developer comment with a manual backport link. Use the .diff URL of that backport PR.
Applying a patch
Patching server
Navigate to your Nextcloud server's root directory (the one that contains the status.php file).
Download the patch to your server e.g. via wget https://github.com/nextcloud/server/pull/26396.diff (this will place 26396.diff in the local directory)
Apply the patch with the following command:
patch -p 1 < ./26396.diff
Alternatively, if the patch command is not available, use:
git apply --check ./26396.diff git apply ./26396.diff
Patching apps
Navigate to the root of the app (usually apps/[APPID]/). If you cannot find the app there, use the sudo -E -u www-data php occ app:getpath APPID command to find the path.
Download the patch to your server e.g. via wget https://github.com/nextcloud/<app>/pull/26396.diff (this will place 26396.diff in the local directory)
Apply the patch with the same command as in Patching server.
Reverting a patch
Navigate to the directory where you applied the patch.
Revert the patch with the -R option:
patch -R -p 1 < ./26396.diff
Alternatively, if the patch command is not available, use:
git apply --reverse ./26396.diff