<story><title>My Git Habits</title><url>http://blog.plover.com/prog/git-habits.html</url></story><parent_chain></parent_chain><comment><author>Osiris</author><text>I&apos;m fairly new to git. I&apos;ve only been using it for about two months.  It seems like this is a lot of work with the end result only being that the commit log is cleaner and perhaps makes cherry-picking a feature/fix a bit easier.&lt;p&gt;I can understand the need for this kind of cleanup when pushing a fix to an open-source repository that needs pull requests to be self-contained, but for an internal company repo, how important is it to keep the commit history this clean?&lt;p&gt;If I have changes I&apos;m not ready to commit and need to switch branches to work on another issue, I find that doing a STASH is an easier way to go. I can just stash my working copy changes, switch branches, then come back and apply the stash and keep going and then make one final commit with just the final changes I want to commit.&lt;p&gt;Other DVCS actually believe that being able to modify commit history is a bad thing and lean toward immutable commit history (e.g., Veracity).  Git makes it pretty easy to modify commit history which is ok for local branches but can be easily misunderstood to break your branch if you&apos;re trying to modify commits that have already been pushed to a remote repo.&lt;p&gt;I like the idea of keeping the commit history clean but I&apos;m not sure that it&apos;s worth the effort that it takes to manage the process. In the end, only your final good code is going to be merged into an integration or master branch anyway.</text></comment>
<story><title>My Git Habits</title><url>http://blog.plover.com/prog/git-habits.html</url></story><parent_chain></parent_chain><comment><author>DavidWoof</author><text>This seems like a pretty terrible workflow to me, do others here actually work like this?&lt;p&gt;I only use git-add -p when I&apos;ve screwed up and didn&apos;t commit when I should have, so I have to split the current commit into two.  It seems to me that rebase -i and merge --squash are better suited to re-writing history in the way that&apos;s being done here.  I&apos;m especially distrustful of any workflow that includes the line &quot;I eyeball the diff&quot;.&lt;p&gt;But I&apos;m no git guru.  Is this a common way to work? Are there advantages over the alternatives?</text></comment>