What if you don't want to stage/commit part of the "hunk"?

What if the "hunk" has a part you don't want to stage and commit? For example, I only want to commit lines 50-100, but not 1-50. SourceTree unfortunately sees this as one hunk (line 1-100). I don't know how to commit only the lines I want.

The reason is that the code is addressing two different issues, so we don't want to co-mingle the code if possible.

I guess another way to ask is how do I make SourceTree split into smaller hunks?

 

2 answers

1 accepted

This widget could not be displayed.

SourceTree offers the possibility to selct the lines you want to be part of the next commit ...

Simply select the lines you want to stage within the diff view and stage the selected lines - see attached videoCJ.gif

So this is a diff commit? I noticed a diff patch file shows up in the same folder after I commit. I did a discard hunk but the stage hunk line by line seems the best thing to do.

Not quite sure, I understood your question correctly.

The diff view shows the differences between your local version and the latest version from your repository. Within the staging area you build up a container which contains all changes which are part of the next commit - this might be complete changed files or only parts of the changed files (as you asked for) - while other changed parts are not part of the next commit: I do not unterstand the term "diff commit" here.

I never noticed a diff patch after I commit - but I have to admit, I never looked for it ... wink

Discarding a hunk is nothing else but reverting the changes within the hunk - the changes are gone then (and I think that's not what you want ...as the second part of your hunk should probably be part of a subsequent commit)). As I unterstood your original question, "stage lines" is definitly what you are looking for ..

 

BTW: SourceTree is by far the best git-GUI I've seen for building up a proper staging area, supporting staging complete files and parts of files (from complete hunks down to single lines) in a very easy way

I clicked on some lines, then clicked on stage hunk. Then this patch.diff showed up in my folder. That's what I meant by diff commit. I'm sorry if that term means something else. I'm new to git.

160330-08-00.jpg

This widget could not be displayed.

I don't know of a way to commit part of a file. I would assume that you should copy your fixes outside of your current tree. Reset the tree to the last commit and then put your first fix back in. Commit that chunk and then do it again.

When you see the diff between current and last committed file, you will see a button on the diff called stage hunk or discard hunk. This is the way to commit partial changes in the file. My issue is that the hunk sometimes includes more code than I want to include in the specific commit. I may be cleaning up code unrelated to the commit that I want to later commit separately.

Suggest an answer

Log in or Sign up to answer
Community showcase
Published Aug 21, 2018 in Bitbucket

Branch Management with Bitbucket

As a project manager, I have discovered that different developers want to bring their previous branching method with them when they join the team. Some developers are used to performing individual wo...

1,310 views 8 11
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you