lab 32 Applying Patches
Goals
- Create a patch and apply it manually to the 
greetbranch. 
A patch is simply a special file that records changes to other files. Git can create these patches for you to send to other collaborators and it can apply patches from collaborators to your local repository.
Create the Patch
Switch back to the excited branch and add this change.
Execute:
git checkout excitement
lib/greeter.rb
  def initialize(who, excited = true, unsure = true)
    @who = who
    @excited = excited
    @unsure = unsure
  end
  def greet
    "Hello, #{@who}#{punctuation}"
  end
  def punctuation
    punct = ""
    if @excited
        punct += "!"
    else
        punct += "."
    end
    if @unsure
        punct += "?"
    end
    punct
  end
end
Now to create the patch all you need to do is show the changes and save the output.
Execute:
git diff git diff > suspicion.patch
Output:
$ git diff
diff --git a/lib/greeter.rb b/lib/greeter.rb
index 95d9419..6fbb8b1 100644
--- a/lib/greeter.rb
+++ b/lib/greeter.rb
@@ -1,12 +1,21 @@
-class Greeter
-  def initialize(who, excited = true)
+  def initialize(who, excited = true, unsure = true)
     @who = who
     @excited = excited
+    @unsure = unsure
   end
   def greet
     "Hello, #{@who}#{punctuation}"
   end
   def punctuation
-    @excited ? "!" : "."
+    punct = ""
+    if @excited
+        punct += "!"
+    else
+        punct += "."
+    end
+    if @unsure
+        punct += "?"
+    end
+    punct
   end
 end
$ git diff > suspicion.patch
Switch Back to the Greet Branch
Switch back to the greet branch, resetting any local changes to the files to allow applying the patch manually.
Execute:
git checkout -f greet
Apply the Patch
Now you can apply the patch using git apply. Make sure to also confirm it applied successfully. The output from git diff should match the output from above.
Execute:
git apply suspicion.patch git diff
Output:
$ git apply suspicion.patch
$ git diff
diff --git a/lib/greeter.rb b/lib/greeter.rb
index 95d9419..6fbb8b1 100644
--- a/lib/greeter.rb
+++ b/lib/greeter.rb
@@ -1,12 +1,21 @@
-class Greeter
-  def initialize(who, excited = true)
+  def initialize(who, excited = true, unsure = true)
     @who = who
     @excited = excited
+    @unsure = unsure
   end
   def greet
     "Hello, #{@who}#{punctuation}"
   end
   def punctuation
-    @excited ? "!" : "."
+    punct = ""
+    if @excited
+        punct += "!"
+    else
+        punct += "."
+    end
+    if @unsure
+        punct += "?"
+    end
+    punct
   end
 end
Notice that this did not commit the changes. You can commit them as usual.
Execute:
git add lib/greeter.rb git commit -m "Add some suspicion"
Cleanup
You can remove the patch file now that it’s been applied.
Execute:
rm suspicion.patch