Re: yet another workflow question...
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- Oct 11, 2007, 14:37 UTC
- Message-ID
- <470E3545.4060005@viscovery.net>
- In-Reply-To
- <e2a1d0aa0710110711m77ca967bmd1d5ffd5d3099aab@mail.gmail.com>
Patrick Doyle schrieb:
Show 20 quoted lines
> 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