আমার নিবন্ধের লজিক্যাল এক্সটেনশন । গিট সম্পর্কে নিবন্ধে, আমি কমান্ড লাইনে গিটের সাথে কীভাবে কাজ করব তা বর্ণনা করেছি। আজ আমি আপনাদের দেখাবো কিভাবে IntelliJ IDEA তে সব করতে হয়। একজন বিকাশকারী হিসাবে আমার যাত্রার শুরুতে, আমি কমান্ড লাইন ব্যবহার করেছি এবং ভেবেছিলাম যে এর জন্য আমার একটি GUI দরকার নেই। সর্বোপরি, সবকিছু যেমন ছিল তেমনই পরিষ্কার ছিল... কিন্তু এটি সেই মুহুর্ত পর্যন্ত ছিল যখন আমি IntelliJ IDEA-তে Git ব্যবহার শুরু করি... শুরু থেকেই, আমি বলতে চাই যে আমি আমার ব্যক্তিগত অভিজ্ঞতা বর্ণনা করছি। IntelliJ IDEA-তে যে কোনো সমস্যা সমাধানের বিভিন্ন উপায় রয়েছে। আমি নিবন্ধে যা বর্ণনা করব তার চেয়ে আপনি যদি আরও ভাল উপায় জানেন তবে মন্তব্যে এটি লিখুন এবং আমরা এটি নিয়ে আলোচনা করব।
প্রয়োজনীয় ইনপুট:
- গিট সম্পর্কে আমার নিবন্ধটি পড়ুন, অনুসরণ করুন এবং বুঝুন । এটি নিশ্চিত করতে সাহায্য করবে যে সবকিছু সেট আপ করা হয়েছে এবং যাওয়ার জন্য প্রস্তুত।
- IntelliJ IDEA ইনস্টল করুন।
- সম্পূর্ণ দক্ষতা অর্জনের জন্য এক ঘন্টা ব্যক্তিগত সময় বরাদ্দ করুন।
স্থানীয়ভাবে প্রকল্পটি ক্লোন করুন
এখানে দুটি বিকল্প আছে:- আপনার যদি ইতিমধ্যেই একটি GitHub অ্যাকাউন্ট থাকে এবং পরে কিছু পুশ করতে চান তবে প্রকল্পটি কাঁটাচামচ করা এবং আপনার নিজের অনুলিপি ক্লোন করা ভাল।
- আমার সংগ্রহস্থল ক্লোন করুন এবং সার্ভারে পুরো জিনিসটি পুশ করার ক্ষমতা ছাড়াই স্থানীয়ভাবে সবকিছু করুন। সর্বোপরি, এটি আমার সংগ্রহস্থল :)
-
প্রকল্পের ঠিকানা অনুলিপি করুন:
![স্বর্গে তৈরি একটি ম্যাচ: Git এবং IntelliJ IDEA - 2]()
-
IntelliJ IDEA খুলুন এবং "সংস্করণ নিয়ন্ত্রণ থেকে পান" নির্বাচন করুন:
![স্বর্গে তৈরি একটি ম্যাচ: Git এবং IntelliJ IDEA - 3]()
-
প্রকল্প ঠিকানা কপি এবং পেস্ট করুন:
![স্বর্গে তৈরি একটি ম্যাচ: Git এবং IntelliJ IDEA - 4]()
-
আপনাকে একটি IntelliJ IDEA প্রকল্প তৈরি করতে বলা হবে। অফারটি গ্রহণ করুন:
![স্বর্গে তৈরি একটি ম্যাচ: Git এবং IntelliJ IDEA - 5]()
-
যেহেতু কোনও বিল্ড সিস্টেম নেই এবং এটি এই নিবন্ধের সুযোগের বাইরে, আমরা বিদ্যমান উত্স থেকে প্রকল্প তৈরি করুন নির্বাচন করি :
![স্বর্গে তৈরি একটি ম্যাচ: Git এবং IntelliJ IDEA - 6]()
-
এরপরে আপনি এই সুন্দর পর্দাটি দেখতে পাবেন:
এখন যেহেতু আমরা ক্লোনিং বের করেছি, আপনি চারপাশে একবার নজর দিতে পারেন।
Git UI হিসাবে IntelliJ IDEA-তে প্রথম নজর
ক্লোন করা প্রকল্পটি ঘনিষ্ঠভাবে দেখুন: আপনি ইতিমধ্যে সংস্করণ নিয়ন্ত্রণ সিস্টেম সম্পর্কে অনেক তথ্য পেতে পারেন। প্রথমত, আমরা নীচের বাম কোণে সংস্করণ নিয়ন্ত্রণ ফলক আছে. এখানে আপনি সমস্ত স্থানীয় পরিবর্তনগুলি খুঁজে পেতে পারেন এবং কমিটগুলির একটি তালিকা পেতে পারেন ("গিট লগ" এর অনুরূপ)। আসুন লগ- এর একটি আলোচনায় চলে যাই । একটি নির্দিষ্ট ভিজ্যুয়ালাইজেশন রয়েছে যা আমাদের বুঝতে সাহায্য করে যে কীভাবে উন্নয়ন এগিয়েছে। উদাহরণস্বরূপ, আপনি দেখতে পাচ্ছেন যে txt কমিট-এ যুক্ত শিরোনাম দিয়ে একটি নতুন শাখা তৈরি করা হয়েছে, যা পরে মাস্টার শাখায় মার্জ করা হয়েছিল। আপনি যদি একটি প্রতিশ্রুতিতে ক্লিক করেন, আপনি ডান কোণে কমিট সম্পর্কে সমস্ত তথ্য দেখতে পাবেন: এর সমস্ত পরিবর্তন এবং মেটাডেটা।
তাছাড়া, আপনি প্রকৃত পরিবর্তন দেখতে পারেন. আমরা আরও দেখি যে সেখানে একটি বিরোধের সমাধান হয়েছিল। আইডিইএও এটি খুব ভালভাবে উপস্থাপন করে। আপনি যদি এই কমিটের সময় পরিবর্তন করা ফাইলটিতে ডাবল-ক্লিক করেন, তাহলে আমরা দেখতে পাব যে কীভাবে বিরোধটি সমাধান করা হয়েছে:
আমরা লক্ষ্য করি যে বাম এবং ডানদিকে আমাদের একই ফাইলের দুটি সংস্করণ রয়েছে যা একটিতে একত্রিত করা প্রয়োজন। এবং মাঝখানে, আমরা চূড়ান্ত মার্জ ফলাফল আছে. যখন একটি প্রকল্পের অনেকগুলি শাখা, কমিট এবং ব্যবহারকারী থাকে, তখন আপনাকে শাখা, ব্যবহারকারী এবং তারিখ অনুসারে আলাদাভাবে অনুসন্ধান করতে হবে: আমরা
শুরু করার আগে শেষ যে জিনিসটি আমি ব্যাখ্যা করতে চাই তা হল আমরা কোন শাখায় আছি তা কীভাবে বোঝা যায়৷ আমি আপনাকে দেব। এটা বের করার জন্য এক মিনিট... আপনি কি এটি খুঁজে পেয়েছেন? ছেড়ে দেত্তয়া? :D নীচের ডানদিকে, গিট: মাস্টার লেবেলযুক্ত একটি বোতাম রয়েছে. "Git:" যা অনুসরণ করে তা হল বর্তমান শাখা। যদি আপনি বোতামটি ক্লিক করেন, আপনি অনেক দরকারী জিনিস করতে পারেন: অন্য শাখায় স্যুইচ করুন, একটি নতুন তৈরি করুন, একটি বিদ্যমান একটির নাম পরিবর্তন করুন এবং আরও অনেক কিছু।
একটি সংগ্রহস্থল সঙ্গে কাজ
দরকারী হটকি
ভবিষ্যতের কাজের জন্য, আপনাকে কয়েকটি খুব দরকারী হটকি মনে রাখতে হবে:- CTRL+T — রিমোট রিপোজিটরি (গিট টান) থেকে সর্বশেষ পরিবর্তনগুলি পান।
- CTRL+K - একটি প্রতিশ্রুতি তৈরি করুন / সমস্ত বর্তমান পরিবর্তনগুলি দেখুন। এতে আনট্র্যাক করা এবং পরিবর্তিত ফাইল উভয়ই অন্তর্ভুক্ত রয়েছে (গিট সম্পর্কে আমার নিবন্ধটি দেখুন, যা এটি ব্যাখ্যা করে) (গিট কমিট)।
- CTRL+SHIFT+K — এটি রিমোট রিপোজিটরিতে পরিবর্তনগুলি পুশ করার কমান্ড। সমস্ত কমিট স্থানীয়ভাবে তৈরি করা হয়েছে এবং এখনও রিমোট রিপোজিটরিতে নেই তা পুশ করা হবে (গিট পুশ)।
- ALT+CTRL+Z — স্থানীয় সংগ্রহস্থলে তৈরি করা শেষ প্রতিশ্রুতির অবস্থায় একটি নির্দিষ্ট ফাইলে পরিবর্তন করা হয়। আপনি যদি উপরের বাম কোণে পুরো প্রকল্পটি নির্বাচন করেন, আপনি সমস্ত ফাইলের পরিবর্তনগুলি ফিরিয়ে আনতে পারেন৷
আমরা কি চাই?
কাজ সম্পন্ন করার জন্য, আমাদের একটি মৌলিক পরিস্থিতি আয়ত্ত করতে হবে যা সর্বত্র ব্যবহৃত হয়। উদ্দেশ্য হল একটি পৃথক শাখায় নতুন কার্যকারিতা প্রয়োগ করা এবং তারপরে এটিকে একটি দূরবর্তী সংগ্রহস্থলে ঠেলে দেওয়া (তারপর আপনাকে মূল শাখায় একটি টান অনুরোধও তৈরি করতে হবে, তবে এটি এই নিবন্ধের সুযোগের বাইরে)। এটি করার জন্য কি প্রয়োজন?-
প্রধান শাখার সমস্ত বর্তমান পরিবর্তনগুলি পান (উদাহরণস্বরূপ, "মাস্টার")।
-
এই প্রধান শাখা থেকে, আপনার কাজের জন্য একটি পৃথক শাখা তৈরি করুন।
-
নতুন কার্যকারিতা প্রয়োগ করুন।
-
প্রধান শাখায় যান এবং আমরা কাজ করার সময় কোন নতুন পরিবর্তন হয়েছে কিনা তা পরীক্ষা করে দেখুন। যদি না হয়, তাহলে সবকিছু ঠিক আছে। কিন্তু যদি পরিবর্তন হয়, তাহলে আমরা নিম্নলিখিতগুলি করি: কর্মরত শাখায় যান এবং প্রধান শাখা থেকে আমাদের শাখায় পরিবর্তনগুলি পুনঃস্থাপন করুন। যদি সবকিছু ঠিকঠাক হয়, তাহলে দারুণ। কিন্তু এটা সম্পূর্ণভাবে সম্ভব যে সেখানে সংঘর্ষ হবে। এটি যেমন ঘটবে, দূরবর্তী সংগ্রহস্থলে সময় নষ্ট না করে সেগুলি আগে থেকেই সমাধান করা যেতে পারে।
আপনি ভাবছেন কেন আপনি এই কাজ করা উচিত? এটি ভাল আচরণ এবং স্থানীয় সংগ্রহস্থলে আপনার শাখাকে ঠেলে দেওয়ার পরে সংঘাত ঘটতে বাধা দেয় (অবশ্যই, দ্বন্দ্ব এখনও ঘটবে, তবে এটি অনেক ছোট হয়ে যায় )।
- রিমোট রিপোজিটরিতে আপনার পরিবর্তনগুলি পুশ করুন।
রিমোট সার্ভার থেকে পরিবর্তন পান?
আমি একটি নতুন প্রতিশ্রুতি সহ README-এ একটি বিবরণ যোগ করেছি এবং এই পরিবর্তনগুলি পেতে চাই৷ যদি পরিবর্তনগুলি স্থানীয় সংগ্রহস্থলে এবং দূরবর্তী উভয় ক্ষেত্রেই করা হয়, তাহলে আমরা একটি মার্জ এবং একটি রিবেসের মধ্যে বেছে নিতে আমন্ত্রিত। আমরা একত্রীকরণ চয়ন. CTRL+T লিখুন :
আপনি এখন দেখতে পাচ্ছেন কিভাবে README পরিবর্তিত হয়েছে, অর্থাৎ রিমোট রিপোজিটরি থেকে পরিবর্তনগুলি টেনে আনা হয়েছে, এবং নীচের ডানদিকে আপনি সার্ভার থেকে আসা পরিবর্তনগুলির সমস্ত বিবরণ দেখতে পাবেন৷
মাস্টারের উপর ভিত্তি করে একটি নতুন শাখা তৈরি করুন
এখানে সবকিছু সহজ.-
নীচে ডান কোণায় যান এবং Git: master এ ক্লিক করুন । + নতুন শাখা নির্বাচন করুন ।
![স্বর্গে তৈরি একটি ম্যাচ: Git এবং IntelliJ IDEA - 15]()
চেকআউট শাখার চেকবক্সটি নির্বাচন করুন এবং নতুন শাখার নাম লিখুন। আমার জন্য, এটি readme-উন্নতকারী হবে ।
Git: master তারপর Git: readme-improver এ পরিবর্তিত হবে ।
সমান্তরাল কাজ অনুকরণ করা যাক
দ্বন্দ্ব প্রদর্শিত হওয়ার জন্য, কাউকে সেগুলি তৈরি করতে হবে :D আমি ব্রাউজারের মাধ্যমে একটি নতুন প্রতিশ্রুতি সহ README সম্পাদনা করব, এইভাবে সমান্তরাল কাজ অনুকরণ করে৷ আমি এটিতে কাজ করার সময় কেউ একই ফাইলে পরিবর্তন করেছে। ফলে সংঘর্ষ হবে। আমি লাইন 10 থেকে "fully" শব্দটি সরিয়ে দেব।আমাদের কার্যকারিতা বাস্তবায়ন
আমাদের কাজ হল README পরিবর্তন করা এবং নতুন নিবন্ধে একটি বিবরণ যোগ করা। অর্থাৎ Git-এ কাজ IntelliJ IDEA এর মাধ্যমে হয়। এটি যোগ করুন:
পরিবর্তনগুলি সম্পন্ন হয়েছে। এখন আমরা একটি প্রতিশ্রুতি তৈরি করতে পারি। CTRL+K টিপুন , যা আমাদের দেয়:
একটি প্রতিশ্রুতি তৈরি করার আগে, আমাদের এই উইন্ডোটি কী অফার করে তা ঘনিষ্ঠভাবে দেখতে হবে। আপনাকে কোথায় দেখতে হবে তা দেখানোর জন্য আমি লাল তীর যোগ করেছি। এখানে আকর্ষণীয় জিনিস অনেক আছে. কমিট মেসেজ বিভাগে , আমরা কমিটের সাথে যুক্ত টেক্সট লিখি। তারপর এটি তৈরি করতে, আমাদের কমিট ক্লিক করতে হবে. আমি এখনও হটকি দিয়ে এটি কীভাবে করব তা খুঁজে পাইনি। যদি কেউ খুঁজে পায় কিভাবে, দয়া করে আমাকে লিখুন - এটি আমাকে খুব খুশি করবে। আমরা লিখি যে README পরিবর্তিত হয়েছে এবং কমিট তৈরি করুন। কমিটের নাম সহ নীচের বাম কোণে একটি সতর্কতা পপ আপ হয়:
প্রধান শাখা পরিবর্তিত হয়েছে কিনা পরীক্ষা করুন
আমরা আমাদের কাজ সম্পন্ন করেছি। এটা কাজ করে। আমরা পরীক্ষা লিখেছি। সবকিছু ঠিক আছে. কিন্তু সার্ভারে পুশ করার আগে, আমাদের এখনও চেক করতে হবে যে এর মধ্যে মূল শাখায় কোন পরিবর্তন হয়েছে কিনা। কিভাবে ঘটতে পারে? বেশ সহজে: কেউ আপনার পরে একটি টাস্ক গ্রহণ করে এবং কেউ আপনার কাজটি শেষ করার চেয়ে দ্রুত তা শেষ করে। তাই আমাদের মাস্টার ব্রাঞ্চে যেতে হবে। এটি করার জন্য, নীচের স্ক্রীনশটে নীচের ডানদিকের কোণায় যা দেখানো হয়েছে তা করতে হবে:
মাস্টার শাখায়, দূরবর্তী সার্ভার থেকে এর সর্বশেষ পরিবর্তনগুলি পেতে CTRL+T টিপুন। কী পরিবর্তন হয়েছে তা দেখে আপনি সহজেই দেখতে পারবেন কী হয়েছে:
"fully" শব্দটি সরানো হয়েছে৷ হয়তো মার্কেটিং থেকে কেউ সিদ্ধান্ত নিয়েছে যে এটি এমনভাবে লেখা উচিত নয় এবং বিকাশকারীদের এটি আপডেট করার জন্য একটি টাস্ক দিয়েছে। আমাদের কাছে এখন মাস্টার শাখার সর্বশেষ সংস্করণের একটি স্থানীয় অনুলিপি রয়েছে। রিডমি-ইম্প্রোভার- এ ফিরে যান । এখন আমাদের মাস্টার শাখা থেকে আমাদের শাখায় পরিবর্তনগুলিকে পুনঃস্থাপন করতে হবে। আমরা এটি করি:
আপনি যদি সবকিছু সঠিকভাবে করেন এবং আমার সাথে অনুসরণ করেন, ফলাফলটি README ফাইলে একটি দ্বন্দ্ব দেখাবে:
এখানে আমাদের বোঝার এবং ভিজিয়ে রাখার জন্য অনেক তথ্য রয়েছে। এখানে ফাইলগুলির একটি তালিকা দেখানো হয়েছে (আমাদের ক্ষেত্রে, একটি ফাইল) যেগুলির মধ্যে দ্বন্দ্ব রয়েছে৷ আমরা তিনটি বিকল্প থেকে বেছে নিতে পারি:
- আপনার গ্রহণ করুন — শুধুমাত্র readme-improver থেকে পরিবর্তন গ্রহণ করুন।
- তাদের গ্রহণ করুন - শুধুমাত্র মাস্টার থেকে পরিবর্তন গ্রহণ করুন।
- একত্রিত করুন - আপনি কী রাখতে চান এবং কী বাতিল করতে চান তা বেছে নিন।
এখানে আমরা দেখতে পাচ্ছি যে তিনটি অংশ রয়েছে:
- এই রিডমি-ইম্প্রোভারের পরিবর্তন।
- একত্রিত ফলাফল. আপাতত, পরিবর্তনের আগে এটিই ছিল।
- মাস্টার শাখা থেকে পরিবর্তন.
সেখানে! আমরা IntelliJ IDEA এর মাধ্যমে আমাদের প্রথম বিরোধের সমাধান করেছি :D
রিমোট সার্ভারে পরিবর্তনগুলি পুশ করুন
পরবর্তী ধাপ হল রিমোট সার্ভারে পরিবর্তনগুলি পুশ করা এবং একটি টান অনুরোধ তৈরি করা। এটি করতে, কেবল CTRL+SHIFT+K টিপুন । তারপরে আমরা পাব:
বাম দিকে, কমিটগুলির একটি তালিকা থাকবে যা দূরবর্তী সংগ্রহস্থলে ঠেলে দেওয়া হয়নি। ডানদিকে পরিবর্তন করা সমস্ত ফাইল থাকবে। এবং এটাই! পুশ টিপুন এবং আপনি সুখ অনুভব করবেন :) যদি পুশ সফল হয়, আপনি নীচের ডানদিকের কোণায় এরকম একটি বিজ্ঞপ্তি দেখতে পাবেন:
বোনাস অংশ
প্রথমে, আমি এই নিবন্ধটিতে একটি পুল অনুরোধের সৃষ্টি যোগ করতে চাইনি, তবে এটি ছাড়া এটি সম্পূর্ণ নয়। সুতরাং, চলুন একটি গিটহাব রিপোজিটরিতে যাই (অবশ্যই আপনার একটি :)) এবং আমরা দেখতে পাই যে গিটহাব ইতিমধ্যেই জানে আমরা কী চাই: তুলনা করুন
ক্লিক করুন এবং অনুরোধ করুন । তারপর Create pull request এ ক্লিক করুন । কারণ আমরা দ্বন্দ্বগুলি আগেই সমাধান করেছি, এখন যখন একটি টান অনুরোধ তৈরি করছি, আমরা অবিলম্বে এটিকে একত্রিত করতে পারি:
এবং আমি এইবার বলতে চেয়েছিলাম। অবশ্যই, আমি আপনার জন্য দরজাটি একটু খুলেছি এবং আপনাকে একটি ছোট অংশ দেখিয়েছি। আপনার প্রয়োজন অনুসারে আপনি বাকিগুলি সম্পর্কে শিখবেন। গিটহাবে আমাকে অনুসরণ করার জন্য আপনাকে আমন্ত্রণ জানানোর অভ্যাস আমার আছে, যেখানে আমি বিভিন্ন প্রযুক্তির সাথে জড়িত আমার প্রকল্পগুলি পোস্ট করি যা আমি কাজে ব্যবহার করি। আমি সম্প্রতি একটি ব্যক্তিগত কৃতিত্ব করেছি: আমার প্রকল্পগুলির মধ্যে একটিকে শতাধিক বিকাশকারীরা তারকা দিয়েছিলেন। যখন আপনি জানেন যে আপনি যা করেছেন তা অন্য কেউ ব্যবহার করছে তখন আনন্দের একটি অবিশ্বাস্য অনুভূতি হয়। এবং ভাল জন্য এটি ব্যবহার.





এখন যেহেতু আমরা ক্লোনিং বের করেছি, আপনি চারপাশে একবার নজর দিতে পারেন।
GO TO FULL VERSION