Skip to main content

Posts tagged with 'git'

Welcome to another "Weekly Concerns". This is a post-a-week series of interesting links, relevant to programming and programmers. You can check out previous Weekly Concerns posts in the archive.

It's Seth Petry-Johnson's birthday this weekend. That doesn't really tie into this week's Weekly Concerns, but I guess you could check out Seth's blog! It will also be David Giard's birthday as well: you should check out his excellent Technology and Friends podcast/TV show. Episode 144 is particularly good.

If you have an interesting link that you'd like to see in Weekly Concerns, leave a comment or contact me.

It's easy to use git stash

February 25, 2014 mgroves 0 Comments
Tags: git

I'll admit that git sometime baffles me, and I muddle my way through it. That isn't to say that I don't like using it, or it's not valuable, just that I don't have an encyclopedic knowledge of everything about git. However, an opportunity recently came up to expand my knowledge of git:

I have been trying to make some more open source contributions recently. For one of the projects, I had to make some minor changes to the web.config and csproj files in order to get it working on my local machine. No big deal, except that these are changes that I don't want to commit to my fork, and certainly not to the upstream project.

What I could do is simply copy these changes into a text file somewhere, merge with the upstream project, and then copy/paste the changes so I could go back to work. That's an okay workaround, but it turns out that using git stash might be a better solution. git stash simply takes all the changes to files and stores them "away" into a stash list.

Here's an example, starting with the two files that I modified to get the site working, but don't want to actually commit:

Now, I'll stash everything by using "git stash". After a git stash, if you type "git status", you'll see that the working directory is "clean": no pending changes. If you then type "git stash list", you'll see a list of all your stashes (which is just one, right now).

So, now that my working directory is clear, I can go ahead and, say, "git merge upstream" or something like that without any problem. Once that merge is done, I can bring back the changes with "git stash apply" or, more explicity, "git stash apply [email protected]{0}", bringing back my working changes.

So that's kinda convenient and way quicker than the whole text file/copy/paste deal.

P.S. If you are struggling with Git, I recommend checking out Git Immersion. It's quick and easy, and I guarantee you that you'll start to see the benefits of using git.

Matthew D. Groves

About the Author

Matthew D. Groves lives in Central Ohio. He works remotely, loves to code, and is a Microsoft MVP.

Latest Comments