I have a situation where I need to inactivate a feature in a branch, make adjustments to it and then activate again on future.
My initial scenario:
$ git log
14c9dcd (HEAD -> master) feature 3
af64271 feature 2
da0507a feature 1
- 14c9dcd -- created file3.txt
- af64271 -- edited the file1.txt; created file2.txt
- da0507a -- add the file1.txt
Now i need to revert the af64271
commit just on master
branch and keep the code changes avaliable to get back ( with some changes ) later.
I tried to do:
$ git checkout -b save_feature_2
$ git checkout master
$ git log --oneline
14c9dcd (HEAD -> master, save_feature_2) feature 3
af64271 feature 2
da0507a feature 1
#Reverting the "feature 2" commit changes
$ git revert af64271
[master 8fcee28] Revert "feature 2"
2 files changed, 1 insertion(+), 2 deletions(-)
delete mode 100644 file2.txt
# Checking the differences
$ git diff save_feature_2
diff --git a/file1.txt b/file1.txt
index ba36cc9..8e90503 100644
--- a/file1.txt
+++ b/file1.txt
@@ -1,2 +1 @@
-<somecode here>
-<more code here>
\ No newline at end of file
+<somecode here>
\ No newline at end of file
diff --git a/file2.txt b/file2.txt
deleted file mode 100644
index e69de29..0000000
# Checking log on master
$ git log --oneline
8fcee28 (HEAD -> master) Revert "feature 2"
14c9dcd (save_feature_2) feature 3
af64271 feature 2
da0507a feature 1
# Checking the save_feature_2 log branch
$ git checkout save_feature_2
$ git log --oneline
14c9dcd (HEAD -> save_feature_2) feature 3
af64271 feature 2
da0507a feature 1
# Making same improviments on "feature 2" addind some code just on "file3.txt"
$ git log --oneline
c4ff7f2 (HEAD -> save_feature_2) improvements on feature 2
14c9dcd feature 3
af64271 feature 2
da0507a feature 1
# Now i need to reactivate the "feature 2" on master
$ git checkout master
$ git diff save_feature_2
diff --git a/file1.txt b/file1.txt
index ba36cc9..8e90503 100644
--- a/file1.txt
+++ b/file1.txt
@@ -1,2 +1 @@
-<somecode here>
-<more code here>
\ No newline at end of file
+<somecode here>
\ No newline at end of file
diff --git a/file2.txt b/file2.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/file3.txt b/file3.txt
index f70ef26..e69de29 100644
--- a/file3.txt
+++ b/file3.txt
@@ -1 +0,0 @@
-<improvements on feature 2>
\ No newline at end of file
$ git merge save_feature_2
Merge made by the 'recursive' strategy.
file3.txt | 1 +
1 file changed, 1 insertion(+)
$ git log --oneline
b10eabc (HEAD -> master) Merge branch 'save_feature_2' - Reactivating the feature 2
c4ff7f2 (save_feature_2) improvements on feature 2
8fcee28 Revert "feature 2"
14c9dcd feature 3
af64271 feature 2
da0507a feature 1
# At this point the "file2.txt" was no merged!
$ ls (master)
file1.txt file3.txt
$ git checkout save_feature_2
$ ls (save_feature_2)
file1.txt file2.txt file3.txt
As you can see the file2.txt was not merged!