# গিট চেরি-পিক

কোন গিট রিপোজিটরিতে একাধিক [ব্রাঞ্চ](https://git.howtocode.dev/8-git-branch) থাকলে এক ব্রাঞ্চের কাজ সহজেই অন্য ব্রাঞ্চে নেওয়া যায় `git cherry-pick` কমান্ড ব্যবহার করে।

ধরা যাক, আমাদের রিপোজিটরিতে `master` ব্রাঞ্চ ছাড়াও আরও দুটো ব্রাঞ্চ আছে: `feature` ও `hotfix`। তিনটি ব্রাঞ্চে আলাদা আলাদাভাবে [লগ](https://git.howtocode.dev/9-git-log) খুললে এরকম দেখা যাচ্ছে:

**`master` ব্রাঞ্চ:**

![git log on master](https://961002615-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMxxbt_K0maf3giuWQj%2Fsync%2Fc88f6c67deb3a76f89e983e33e4bc108b81efa49.png?generation=1594073591122904\&alt=media)

**`feature` ব্রাঞ্চ:**

![git log on feature](https://961002615-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMxxbt_K0maf3giuWQj%2Fsync%2Fc9743c3cb3a385c8b7af2a17638ccfe49ec0278d.png?generation=1594073592154850\&alt=media)

**`hotfix` ব্রাঞ্চ:**

![git log on hotfix](https://961002615-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMxxbt_K0maf3giuWQj%2Fsync%2F92cf6dd6f96c2b5f4032a2a2b1e8ef71ba0ae809.png?generation=1594073593192554\&alt=media)

দেখা যাচ্ছে, `master` ব্রাঞ্চে প্রথম কমিটটি দেওয়ার পরই দুটি আলাদা ব্রাঞ্চ খোলা হয়েছে এবং ব্রাঞ্চ দুটিতে পরস্পর থেকে স্বাধীনভাবে কাজ চলছে।

এখন ধরা যাক, আমরা `feature` ব্রাঞ্চে কাজ করছি, আর অন্য কেউ `hotfix` ব্রাঞ্চে কাজ করছেন। `hotfix` ব্রাঞ্চের `Solution to a very specific problem` কমিটে যে কাজটা করা হয়েছে, সেই কাজটি আমাদের বর্তমান ব্রাঞ্চে যোগ করা প্রয়োজন। এর আগের কমিটটি না হলেও চলবে। তাহলে কীভাবে আমরা সেই কমিটটি পেতে পারি?

এটি পাওয়ার উপায় হলো `git cherry-pick`। উক্ত কমিটের হ্যাশ নাম্বার হচ্ছে `ffe3e1f1e516fe73c913796213cfa0a31c60809a`। তাহলে আমরা আমাদের `feature` ব্রাঞ্চে থাকা অবস্থায় নিচের কমান্ডটি দিতে পারি:

```bash
git cherry-pick ffe3e1f
```

তাহলেই `hotfix` ব্রাঞ্চ থেকে ওই একটি কমিট আমাদের `feature` ব্রাঞ্চে চলে আসবে। এখন যদি আমরা `git log` কমান্ড দেই, তাহলে দেখতে পাবো,

![git log on feature after cherry-pick](https://961002615-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMxxbt_K0maf3giuWQj%2Fsync%2Fc24cee40362bd906be9be0a6fc70d579161a945c.png?generation=1594073590349300\&alt=media)

দেখা যাচ্ছে, `hotfix` ব্রাঞ্চ থেকে শুধুমাত্র ওই একটি কমিট `feature` ব্রাঞ্চে যোগ হয়েছে এবং `feature` ব্রাঞ্চে করা আগের কমিটগুলো আগের মতই রয়ে গেছে।
