diff --git a/doc/topics/git/advanced.md b/doc/topics/git/advanced.md new file mode 100644 index 0000000000000000000000000000000000000000..3cd01d899c1d669de76f9f18d6e01f087609fd97 --- /dev/null +++ b/doc/topics/git/advanced.md @@ -0,0 +1,76 @@ +--- +stage: Create +group: Source Code +info: "To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments" +description: "Introduction to Git rebase and force push, methods to resolve merge conflicts through the command line." +--- + +# Advanced Git operations + +Advanced Git operations help you perform tasks to maintain and manage your code. +They are more complex actions that go beyond [basic Git operations](basics.md). +These operations enable you to: + +- Rewrite commit history. +- Revert and undo changes. +- Manage remote repository connections. + +They provide you with the following benefits: + +- Code quality: Maintain a clean, linear project history. +- Problem solving: Provide tools to fix mistakes or adjust your repository's state. +- Workflow optimization: Streamline complex development processes. +- Collaboration: Facilitate smoother teamwork in large or complex projects. + +To use Git operations effectively, it's important to understand key concepts such as +repositories, branches, commits, and merge requests. +For more information, see [Get started learning Git](get_started.md). + +## Best practices + +When you use advanced Git operations, you should: + +- Create a backup or work on a [separate branch](branch.md). +- Communicate with your team before when you use operations that affect shared branch history. +- Use descriptive [commit messages](../../tutorials/update_commit_messages/index.md) + when you rewrite history. +- Update your knowledge of Git to stay current with best practices and new features. + For more information, see the [Git documentation](https://git-scm.com/docs). +- Practice advanced operations in a test repository. + +## Rebase and resolve conflicts + +The `git rebase` command updates your branch with the contents of another branch. +It confirms that changes in your branch don't conflict with changes in the target branch. +If you have a [merge conflict](../../user/project/merge_requests/conflicts.md), +you can rebase to fix it. + +For more information, see [Rebase to address merge conflicts](git_rebase.md). + +## Revert and undo changes + +The following Git commands help you to revert and undo changes: + +- `git revert`: Creates a new commit that undoes the changes made in a previous commit. + This helps you to undo a mistake or a change that you no longer need. +- `git reset`: Resets and undoes changes that are not yet committed. +- `git restore`: Restores changes that are lost or deleted. + +For more information, see [Revert changes](undo.md). + +## Update Git remote URLs + +The `git remote set-url` command updates the URL of the remote repository. +Use this if: + +- You imported an existing project from another Git repository host. +- Your organization moved your projects to a new GitLab instance with a new domain name. +- The project was renamed to a new path in the same GitLab instance. + +For more information, see [Update Git remote URLs](../../tutorials/update_git_remote_url/index.md). + +## Related topics + +- [Getting started](get_started.md) +- [Basic Git operations](basics.md) +- [Common Git commands](commands.md)