Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'doc/topics/git/rollback_commits.md')
-rw-r--r--doc/topics/git/rollback_commits.md81
1 files changed, 81 insertions, 0 deletions
diff --git a/doc/topics/git/rollback_commits.md b/doc/topics/git/rollback_commits.md
new file mode 100644
index 00000000000..34c2d9687bb
--- /dev/null
+++ b/doc/topics/git/rollback_commits.md
@@ -0,0 +1,81 @@
+---
+stage: none
+group: unassigned
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+comments: false
+---
+
+# Rollback Commits
+
+## Undo Commits
+
+- Undo last commit putting everything back into the staging area:
+
+ ```shell
+ git reset --soft HEAD^
+ ```
+
+- Add files and change message with:
+
+ ```shell
+ git commit --amend -m "New Message"
+ ```
+
+- Undo last and remove changes:
+
+ ```shell
+ git reset --hard HEAD^
+ ```
+
+- Same as last one but for two commits back:
+
+ ```shell
+ git reset --hard HEAD^^
+ ```
+
+**Don't reset after pushing**
+
+## Reset Workflow
+
+1. Edit file again 'edit_this_file.rb'
+1. Check status
+1. Add and commit with wrong message
+1. Check log
+1. Amend commit
+1. Check log
+1. Soft reset
+1. Check log
+1. Pull for updates
+1. Push changes
+
+## Commands
+
+```shell
+# Change file edit_this_file.rb
+git status
+git commit -am "kjkfjkg"
+git log
+git commit --amend -m "New comment added"
+git log
+git reset --soft HEAD^
+git log
+git pull origin master
+git push origin master
+```
+
+## Note
+
+- `git revert` vs `git reset`
+- Reset removes the commit while revert removes the changes but leaves the commit
+- Revert is safer considering we can revert a revert
+
+```shell
+# Changed file
+git commit -am "bug introduced"
+git revert HEAD
+# New commit created reverting changes
+# Now we want to re apply the reverted commit
+git log # take hash from the revert commit
+git revert <rev commit hash>
+# reverted commit is back (new commit created again)
+```