Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

gerrit - git (pull vs checkout vs cherrypick) which is for what?

Tags:

git

gerrit

In Android's gerrit ex: link, to download the patch, I see 4 options.

  1. repo download
  2. checkout
  3. pull
  4. cherry-pick

What is the difference between them?

Here is what I think of them. Please clarify

  1. repo download --> Downloads full source code(of all git repos in the project) till this commit
  2. checkout --> Not sure what it is.
  3. pull --> Not sure what it does?
  4. cherry-pick --> It tries to download only this change and merge it into the source code.

I know that pull and checkout are different from cherry-pick. But how are they different?

like image 438
Sandeep Avatar asked Oct 20 '14 07:10

Sandeep


People also ask

What is the difference between Cherrypick and checkout?

Besides being used for different tasks, the most significant difference is that git-cherry-pick changes the history of a branch, while git checkout is being used only to jump to a specific point in time (a specific commit) in the branch's history, without changing it.

What does git checkout vs pull?

With checkout you switch to a specific revision. You want to do this, if you just started using this. Now if you are already following a remote branch, you might only need to update your local branch. That's what pull does for you.

What is Cherrypick in git?

git cherry-pick is a powerful command that enables arbitrary Git commits to be picked by reference and appended to the current working HEAD. Cherry picking is the act of picking a commit from a branch and applying it to another. git cherry-pick can be useful for undoing changes.

What is git checkout?

The git checkout command lets you navigate between the branches created by git branch . Checking out a branch updates the files in the working directory to match the version stored in that branch, and it tells Git to record all new commits on that branch.


1 Answers

You are right about the first one. Here are the rest of them:

  1. Checkout: Fetches the latest changes. You should already have this repo downloaded. It does not merge those new changes but makes your working directory reflect them. And a name-less commit is created to include these changes in your working directory. And a detached HEAD pointing to it. You can merge them at your leisure later.

  2. Pull: Fetches the changes AND merges them into the local branch of the same name.

  3. Cherry-pick: Fetches the commit and plays it on top of the current local branch, thus creating an entirely new commit which happens to have same changes as the one it fetched.

They are a little different than what they actually mean in git. checkout and cherry-pick don't automatically fetch the changes. checkout just takes HEAD to a commit you specify, thus making working directory exactly as it was at that commit. Likewise, cherry-pick is used to replay commits which you already have local access to.

like image 137
Akash Avatar answered Sep 29 '22 21:09

Akash