Fetch vs pull => http://aperdifer.nnmcloud.ru/d?s=YToyOntzOjc6InJlZmVyZXIiO3M6MjE6Imh0dHA6Ly9iaXRiaW4uaXQyX2RsLyI7czozOiJrZXkiO3M6MTM6IkZldGNoIHZzIHB1bGwiO30= Git Merge You can apply changes downloaded through fetch using the merge command. See for more information on the fastest way to read data out of a buffer. Cherry-Pick Cherry-pick, in simple terms, is selective merge, or selecting only limited files out of multiple commits for merging operation. Great quote describing when to use each: Rebases are how changes should pass from the top of hierarchy downwards and merges are how they flow back upwards. After Clicking Sync, it will show three options: Sync, Fetch and Pull. After Clicking Sync, it will show three options: Sync, Fetch and Pull. However, code can be merged into master using pull-request. The git remote command is one piece of the broader system which is responsible for syncing changes. You can check that when you update the code by fetching once fetch and see; the code it won't change. Branches are, technically, nothing more than meaningful names of commits. This clone has everything, the files, the master branch, the other branches, all the existing commits, the whole shebang. If one has developed work in a branch and the work is complete, ready and tested, then it can be merged into the master branch. When you are ready to push your local commits, including your new merge commit, to the remote server, run git push. Difference between git checkout vs. git clone and git pull vs. git fetch - However, code can be merged into master using pull-request. Nothing here is drastically wrong, but some clarifications should help. I wanted to know what the differene between pull, fetch and clone is. Git clone Git clone will clone a repo int a newly created directory. You can see which are remotes and which are local. This is a good headsup before you start to break things. So, to me, it sounds like it pulls everything down. You will only see unstaged modifications if you had fetch vs pull modifications before you fetched. Git fetch will not change any unstaged modifications at all. This is what git fetch really does. Your master branch will be unchanged and your staged files will also be unchanged. Can you help me with it. But so do clone, fetch, and pull. What I end up doing instead is to completely delete my local tree and then I clone the repository anew. Yeah, Git is more powerful but what I fetch vs pull need is ease of use. Yeah, got so confused with checkout. I only did checkout and thought the staged changes will be based to the related remote origin. My colleague came and did a fetch. When I push, I had to merge remote branch with my local branch. Just the source tree looks bad. And this can be done by modifying the same file.