From: Johannes Sixt Date: Thu, 11 Oct 2007 14:37:57 GMT Subject: Re: yet another workflow question... Message-ID: <470E3545.4060005@viscovery.net> In-Reply-To: Patrick Doyle schrieb: > I've been working on my project and I realize that I have 3-4 files > modified with two orthogonal sets of changes. (I didn't realize this > until I said to myself -- "Self, I should really check in these files > before I go too much further down this path".) So I start "git > diff"-ing the files and I find that most files have differences > related to only one change or the other, but one file has differences > related to both changes. > > What do others do in this situation? > a) Not allow themselves to get into this situation in the first place > by careful planning? > > b) Copy the file to "file.bothchanges", edit out one set of changes, > commit that with one log message, edit back in the other set of > changes, edit in the other set of changes, commit that with another > log message? > > c) Use some sort of automation to do option (b) for them? > > d) Something else? Use git-gui. Stage the files relevant for the first change. In the file where you have an overlap with the second change, you can right-click in the diff pane and select "Stage Hunk for Commit" on the hunk relevant for the first change.[*] Commit with a message. Stage the remaining changes and commit again. At this point, I usually check out HEAD~1, i.e. the state *without* the second change, and compile and test to make sure I have a bisectable history. [*] Of course, this works only if the changes are not in the same hunk. If there are at least 3 unmodified lines between the changes, you can choose "Less context" until they are in separate hunks. -- Hannes