I always use goland's keyboard shortcut ctrl+alt+L (reformat code) to format my goland code. And when I use go fmt command,it still make some changes. So... What is differences between goland reformat(ctrl+alt+l) and go fmt?
The builtin formatter, available via ctrl+alt+L (reformat code), is what the IDE implements in order to format the code. It currently (as of 2018.2) is not 100% on-par with gofmt so I recommend using gofmt before committing the files.
As for the changes you mention in DVCS, you need to provide more details either here or on the issue tracker, in order to understand what's happening.
You can use GoLand to gofmt your code when you commit it. It is easy to do, just check the Go fmt
check box in the Before Commit section in the commit box. I don't care as much not which one do I do, if any while working on the code.
There are few things that Go fmt doesn't do. Things around arbitrary line length which doesn't contradict with Go fmt. That is Go fmt will not reformat them