问题
I wanted to know what the difference is between discarding a file and and stop tracking a file in git using source-tree. If I deleted a file in my updated code and I want that file deleted on the repository too should I mark it as stop tracking or should I discard it during the commit process
回答1:
In SourceTree, selecting "discard" on a file just throws away your local changes; stop tracking removes it from the repository. However, as long as you have deleted the file on your local drive, and you can see that deletion in the "Staged Files" section of SourceTree, it will be deleted in the repository as well when you commit.
回答2:
The one detail not covered by the first answer is that Stop Tracking does not delete the local file. It only removes it from source control.
- If you want to keep the file locally (maybe it's a .suo file storing Visual Studio settings that you decide shouldn't have been in source control) but remove it from the repository, you should use Stop Tracking. After this, if you see the file listed in Unstaged files, you can use right-click > Ignore... in SourceTree to update your .gitignore file to ignore the file in future.
- If you want to delete your file both locally and in the repository, you should use Remove. (to use the SourceTree term)
- Finally, if you only want to revert your local changes without
changing the repository at all, use Discard.
来源:https://stackoverflow.com/questions/30857183/what-is-the-difference-between-stop-tracking-and-discard-file-in-git-sourcetree