In an ideal world, you only ever work on one thing at a time, and your working tree contains only one set of logical changes. OK, back to reality. It often happens that you have to work on several unrelated tasks at once, and when you look in the commit dialog, all the changes are mixed in together. The changelist feature helps you group files together, making it easier to see what you are doing. Of course this can only work if the changes do not overlap. If two different tasks affect the same file, there is no way to separate the changes.
There is a similar functionality in Git called stashing (the section called “Stash Changes”).
Generally you should consider to create a new branch as Git commits are just local, you're not messing with everybody's repository, but just your own.
You can see changelists in several places, but the most important ones are the commit dialog and the check-for-modifications dialog. Let's start in the check-for-modifications dialog after you have worked on several features and many files. When you first open the dialog, all the changed files are listed together. Suppose you now want to organize things and group those files according to feature.
Select one or more files and use
→ to add an item to a changelist. Initially there will be no changelists, so the first time you do this you will create a new changelist. Give it name which describes what you are using it for, and click . The dialog will now change to show groups of items.
In the commit dialog you can see those same files, grouped by changelist. Apart from giving an immediate visual indication of groupings, you can also use the group headings to select which files to commit.
Click on the group header to select all entries, then check one of the selected entries to check all.
TortoiseGit reserves one changelist name for its own use, namely ignore-on-commit
. This is used to mark versioned files which you almost never want to commit even though they have local changes. This feature is described in the section called “Excluding Items from the Commit List”.
When you commit files belonging to a changelist then normally you would expect that the changelist membership is no longer needed. So by default, files are removed from changelists automatically on commit.
Changelists are purely a local TortoiseGit client feature. Creating and removing changelists will not affect the repository, nor anyone else's working copy. They are simply a convenient way for you to organize your files.