Making Changes Without Fear

Using Simple Git Commands to Tame Website Updates

In my last post, I talked in general about how I use Git to provide version control for my website. In this post, I’ll describe the simple Git commands I use to manage changes to my website.

Simple Example: Edit a File

I have a master version of my website that I push via FTP to a web server. I also have a development version of my website that I use to test changes before deciding to take them live. Git manages those versions seamlessly so I can concentrate on the changes. Here is a typical exchange:

$ git checkout development ⇒ Tells Git I want to work on the development version of my website

Next I make changes to my files. For example, I fixed a typo in image017.jpg. Git now recognizes image017.jpg has changed. NOTE: This change is not yet associated with the development version of my website. See git add command.

$ git add image017.jpg ⇒ Git gets ready to add the updated image017 file to the development version of my website by adding it to a staging area. You can collect several related changes in the staging area before committing them as a change Git will track in the log file.

git commit –m “Fixed Typo in image017.jpg Image Process.” ⇒ Takes all changes in the staging area and commits them, making them part of the development version of my website. In this case, it’s just one file.

Now, I can test the changes. If I’m happy with them, the next step is to move the change to my master copy.

$ git checkout master ⇒ This command tells Git I now want to work with my master copy. (The one I use to update my live website.)

$ git merge development ⇒ Tells Git to take all the development version changes and add them to the master version.

Done! I’m ready to push the changes via FTP to my live website.

$ git log –oneline ⇒ The log file shows the changes I’ve made to the master version of my website. Each committed change has an alphanumeric identifier. Now the log file includes this message:

4fd9061 Fixes typo in image017.jpg Import Process

More Complex Example: Switching Between Versions

The example I used at the end of my last post (stop working on the development copy to fix an issue with the live site) would look like this:

$ git checkout master ⇒ Switches to my master copy.

$ git branch fix_issue ⇒ Creates a new copy of master (AKA, a new branch) called fix_issue.

$ git checkout fix_issue ⇒Switches to my fix_issue copy.

Make the file changes in the fix_issue copy.

$ git add <changed files> ⇒Adds the changes to the fix_issue staging area.

$ git commit -m "Write a good commit message here" ⇒ Makes changes part of the fix_issue copy.

Test.

$ git checkout master ⇒ Switches to the master copy.

$ git merge fix_issue ⇒ Adds the changes from fix_issue to the master copy.

Final test and push changes via FTP to web server.

$ git checkout development ⇒ Switches back to development branch, so I can continue working.

Conclusion

Although I decided on Git website version control primarily to become more comfortable with Git, it didn’t take long for me to see the benefits, even with a local files. (I haven’t even touched on the benefits of version control when your are collaborating on a project.) Of course, people most often use Git to contribute to open-source projects by interacting with remote repositories, and you can even manage your website that way. But, for now, I’ll continue updating my website using the approach I outlined above. Using Git for version control frees me up to make changes without fear, while improving my Git skills.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s