> For the complete documentation index, see [llms.txt](https://git.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://git.howtocode.dev/6-multiple-remote-repo.md).

# একাধিক রিমোট রিপো

একই রিপোজিটরিতে একাধিক ডেভেলপার কাজ করলে একজন ডেভেলপার অন্য একজন ডেভেলপারের কাজ pull করার প্রয়োজন হতে পারে। এছাড়াও admin যখন কোন ডেভেলপারের কাজ পর্যবেক্ষণ করবেন তখন ঐ ডেভেলপারের রিপোজিটরির সাথে admin এর রিপোজিটরির সংযোগ দিতে হবে। চলুন দেখে নেয়া যাক কিভাবে রিমোট রিপোজিটরির সাথে সংযোগ দেয়া যায়। রিমোট রিপোজিটরির সাথে সংযোগ দেয়ার জন্য আমাদেরকে git remote কমান্ডটি ব্যবহার করতে হবে। সম্পূর্ণ কমান্ডটি নিচে দেয়া হলো-

```
$ git remote add <name> <remote-repo-url>
```

এখানে name এর জায়গায় আপনি রিমোট রিপোজিটরিটিকে যে নামে ডাকতে চান সে নাম হবে। remote-repo-url এর জায়গায় রিমোট রিপোজিটরিটির HTTPS/SSH clone address দিতে হবে। ধরুন আমরা একটি কেন্দ্রীয় রিপোজিটরি তৈরি করলাম যার নাম হচ্ছে rms এবং রিপোজিটরিটির HTTPS clone address হচ্ছে <https://bitbucket.org/precursortechnology/rms.git> । এখন এতে যতজন ডেভেলপার কাজ করবে সবাই এই রিপোজিটরিটি fork করতে হবে। এখন ডেভেলপাররা যদি তাদের রিপোজিটরিকে কেন্দ্রীয় রিপোজিটরির (<https://bitbucket.org/precursortechnology/rms.git>) সাথে সংযোগ দিতে চান তাহলে তাদেরকে লিখতে হবে

```
$ git remote add upstream https://bitbucket.org/precursortechnology/rms.git
```

এখানে আমরা কেন্দ্রীয় রিপোজিটরিকে চেনার জন্য *upstream* নাম ব্যবহার করেছি। আপনি চাইলে অন্য যে কোন নাম ব্যবহার করতে পারেন। এখন নিশ্চিত হওয়ার জন্য *upstream* এর মান দেখতে পারেন।

```
$ git remote show upstream
```

একটি রিপোজিটরি চাইলে একাধিক রিমোট রিপোজিটরির সাথে সংযুক্ত হতে পারবে। সবগুলো remote এর মান একসাথে দেখার কমান্ড -

```
$ git remote -v
```

এখন কোন ডেভেলপার যদি কেন্দ্রীয় রিপোজিটরির (`upstream`) তথ্য pull করতে চান তাহলে তাকে লিখতে হবে -

```
$ git pull upstream master
```

pull করা মানে হচ্ছে ঐ রিপোজিটরির সর্বশেষ তথ্যগুলো আপনার রিপোজিটরির সাথে একীভূত করে নেয়া। pull কমান্ড দিয়ে মূলত দুটি কাজ করা হয়। প্রথমে রিমোট রিপোজিটরিটির তথ্যগুলো fetch করে নেয়া হয় এবং পরে সেগুলো লোকাল রিপোজিটরির সাথে merge করা হয়। উপরের কমান্ড দিয়ে আমরা upstream নামক রিমোট রিপোজিটরির `master` branch এর সব তথ্যগুলো/commits লোকাল repository এর বর্তমান ব্রাঞ্চ এ merge করে নিলাম।

এখন আপনার নিজের রিপোজিটরি (*origin*) তে *upstream* এর সব তথ্যগুলো পাঠাতে হলে লিখতে হবে -

```bash
$ git push origin HEAD    # এখানে HEAD = বর্তমান লোকাল ব্রাঞ্চ এর নাম।
```

যেকোন রিমোট remove করার কমান্ড `git remote rm <remote-name>` . সুতরাং, `upstream` রিমোট remove করতে হলে কমান্ড হবে -

```
$ git remote rm upstream
```

কোন রিমোট rename করার কমান্ড `git remote rename <present-name> <new-name>` . সুতরাং, `upstream` রিমোট কে `origin2` করতে হলে কমান্ড হবে -

```
$ git remote rename upstream origin2
```
