git
এই উত্তরে গিটহাব অন্তর্ভুক্ত রয়েছে কারণ অনেক লোকেরা এটি সম্পর্কে জিজ্ঞাসা করেছে।
স্থানীয় সংগ্রহস্থল
গিটের (স্থানীয়ভাবে) একটি ডিরেক্টরি রয়েছে ( .git
) যা আপনি নিজের ফাইল প্রতিশ্রুতিবদ্ধ এবং এটি আপনার 'স্থানীয় সংগ্রহস্থল'। এটি এসভিএন এর মতো সিস্টেমের থেকে পৃথক যেখানে আপনি তত্ক্ষণাত দূরবর্তী সংগ্রহস্থলে যুক্ত এবং প্রতিশ্রুতিবদ্ধ।
গিট একটি ফাইলের প্রতিটি সংস্করণ সংরক্ষণ করে যা পুরো ফাইলটি সংরক্ষণ করে পরিবর্তিত হয়। এটি এই ক্ষেত্রে এসভিএন থেকেও আলাদা কারণ আপনি ডেল্টা পরিবর্তনের মাধ্যমে 'পুনরায় তৈরি' না করে যে কোনও স্বতন্ত্র সংস্করণে যেতে পারেন।
গিট ফাইলগুলিকে মোটেও 'লক' করে না এবং এটি সম্পাদনার জন্য 'এক্সক্লুসিভ লক' কার্যকারিতা এড়িয়ে চলে (পিভিসি-র মতো পুরানো সিস্টেমগুলি মাথায় আসে), তাই সমস্ত ফাইল সর্বদা সম্পাদনা করা যায়, এমনকি লাইনটি অফ-লাইন থাকা অবস্থায়। এটি আসলে গিটহাবের মতো দূরবর্তী সংগ্রহস্থলে টানা বা আনার সময় / পুশ করার সময় একসাথে ফাইল পরিবর্তনগুলি (একই ফাইলের মধ্যে!) একত্রিত করার এক আশ্চর্যজনক কাজ করে। আপনার কেবলমাত্র একবার ম্যানুয়াল পরিবর্তনগুলি করতে হবে (আসলে কোনও ফাইল সম্পাদনা করা) যদি দুটি পরিবর্তন একই কোডের লাইন (গুলি) জড়িত।
শাখা
শাখাগুলি আপনাকে প্রধান কোডটি ('মাস্টার' শাখা) সংরক্ষণ করার অনুমতি দেয়, একটি অনুলিপি তৈরি করে (একটি নতুন শাখা) এবং তারপরে সেই নতুন শাখার মধ্যে কাজ করতে পারে। যদি কাজটি কিছুটা সময় নেয় বা মাস্টার শাখাটি তৈরি হওয়ার পর থেকে প্রচুর আপডেট হয়ে যায় তবে মাস্টার ব্রাঞ্চের বিরুদ্ধে মার্জিং বা রিবেসিং (প্রায়শই ভাল ইতিহাসের পক্ষে পছন্দসই এবং বিরোধগুলি সমাধানের পক্ষে সহজ) করা উচিত। আপনি যখন শেষ করেছেন, আপনি শাখায় করা পরিবর্তনগুলি আবার মাস্টার সঞ্চিত্রে পুনরায় মার্জ করবেন। অনেকগুলি সংস্থা প্রতিটি কাজের জন্য শাখা ব্যবহার করে তা কোনও বৈশিষ্ট্য, বাগ বা কোরি আইটেম। অন্যান্য সংস্থাগুলি কেবল সংস্করণ আপগ্রেডের মতো বড় পরিবর্তনের জন্য শাখা ব্যবহার করে।
কাঁটাচামচ: একটি শাখার সাহায্যে আপনি শাখাটি নিয়ন্ত্রণ এবং পরিচালনা করেন, অন্যদিকে কাঁটাচামচ দিয়ে অন্য কেউ কোডটি স্বীকার করে আবার নিয়ন্ত্রণ করে।
বিস্তৃতভাবে বলতে গেলে, শাখাগুলি করার জন্য দুটি প্রধান পন্থা রয়েছে। প্রথমটি হ'ল মাস্টার শাখায় সর্বাধিক পরিবর্তন রাখা, কেবল বৃহত্তর এবং দীর্ঘ-চলমান জিনিসের জন্য শাখা ব্যবহার করা যেমন সংস্করণ পরিবর্তন যেখানে আপনি বিভিন্ন প্রয়োজনের জন্য দুটি শাখা রাখতে চান। দ্বিতীয়টি হল যার মাধ্যমে আপনি প্রতিটি বৈশিষ্ট্য অনুরোধ, বাগ ফিক্স বা কাজকর্মের জন্য মূলত একটি শাখা তৈরি করেন এবং তারপরে ম্যানুয়ালি সিদ্ধান্ত নেন যে কখন সেই শাখাগুলি মূল মাস্টার শাখায় মিশে যাবে। যদিও এটি ক্লান্তিকর বলে মনে হচ্ছে, এটি একটি সাধারণ পদ্ধতির এবং এটি বর্তমানে যা আমি ব্যবহার করি এবং এটিই সুপারিশ করি কারণ এটি মাস্টার ব্রাঞ্চকে ক্লিনার রাখে এবং এটি সেই মাস্টার যা আমরা উত্পাদনকে প্রচার করি, সুতরাং আমরা কেবল প্রত্যাবর্তনের মাধ্যমে সম্পূর্ণ, পরীক্ষিত কোড চাই এবং শাখা মার্জ করা।
মাস্টারগুলিতে একটি শাখা 'ইন' আনার স্ট্যান্ডার্ড উপায় হ'ল একটি merge
। ইতিহাস 'ক্লিন আপ' করতে শাখাগুলিকে "পুনর্বাসিত" করা যেতে পারে। এটি বর্তমান অবস্থায় প্রভাবিত করে না এবং এটি একটি 'ক্লিনার' ইতিহাস দেওয়ার জন্য করা হয়।
মূলত, ধারণাটি হ'ল আপনি একটি নির্দিষ্ট পয়েন্ট (সাধারণত মাস্টার থেকে) থেকে ব্রাঞ্চ করেছিলেন। যেহেতু আপনি ব্রাঞ্চ করেছেন, 'মাস্টার' নিজে থেকেই সেই ব্রাঞ্চিং পয়েন্ট থেকে এগিয়ে গেছে। আপনি যদি কোনও শাখায় যে সমস্ত পরিবর্তন করেছেন তার সর্বশেষ পরিবর্তনগুলির সাথে বর্তমানের মাস্টারের অবস্থার বিরুদ্ধে খেলা হয় তবে এটি 'ক্লিনার' হবে (সমস্যাগুলি সমাধান করা সহজ এবং ইতিহাস বোঝা সহজ হবে)) সুতরাং, প্রক্রিয়াটি হ'ল: পরিবর্তনগুলি সংরক্ষণ করুন; 'নতুন' মাস্টার পান এবং তারপরে আবার পরিবর্তনগুলি প্রয়োগ করুন (এটি রিবেসের অংশ)। সচেতন থাকুন যে পুনর্বাসনা ঠিক মার্জ হওয়ার মতোই দ্বন্দ্বের ফলস্বরূপ আপনাকে ম্যানুয়ালি সমাধান করতে হবে (যেমন সম্পাদনা এবং সংশোধন)।
একটি লক্ষণীয় গাইডলাইন:
শাখাটি স্থানীয় হলে কেবল পুনরায় চালু করুন এবং আপনি এখনও এটিকে দূরবর্তী স্থানে না ঠেকিয়েছেন!
এটি মূলত কারণ রিবাইজিং সেই ইতিহাসকে পাল্টে দিতে পারে যা অন্যান্য লোকেরা দেখেন যার মধ্যে তাদের নিজস্ব কমান্ড অন্তর্ভুক্ত থাকতে পারে।
শাখা ট্র্যাকিং
এই শাখাগুলি নাম দেওয়া হয়েছে origin/branch_name
(ন্যায়বিচারের বিপরীতে branch_name
)। আপনি যখন দূরবর্তী সংগ্রহস্থলগুলিতে / থেকে কোডটি চাপছেন এবং টানছেন তখন এটি আসলে সেই প্রক্রিয়া যার মাধ্যমে ঘটে। উদাহরণস্বরূপ, আপনি যখন git push
একটি শাখা কল করেন , তখন building_groups
আপনার শাখাটি প্রথমে যায় origin/building_groups
এবং তারপরে এটি দূরবর্তী সংগ্রহস্থলে যায়। একইভাবে, আপনি যদি git fetch building_groups
এটি করেন তবে পুনরুদ্ধার করা ফাইলটি আপনার origin/building_groups
শাখায় স্থাপন করা হবে । তারপরে আপনি এই শাখাটি আপনার স্থানীয় অনুলিপিতে মার্জ করতে বেছে নিতে পারেন। আমাদের অনুশীলনটি হ'ল সর্বদা একটি git fetch
এবং একটি ম্যানুয়াল মার্জ করার পরিবর্তে সর্বদা একটি git pull
(যা উপরের দু'টি এক ধাপে করে)।
নতুন শাখা আনা হচ্ছে।
নতুন শাখা নেওয়া: ক্লোনটির প্রাথমিক পর্যায়ে আপনার সমস্ত শাখা থাকবে। তবে, যদি অন্য বিকাশকারীরা শাখা যোগ করে সেগুলিকে সেখানকার দূরবর্তী স্থানে ঠেলে দেয় তবে স্থানীয়ভাবে এগুলি নীচে টেনে আনতে সক্ষম হওয়ার জন্য সেই শাখাগুলি এবং তাদের নামগুলি সম্পর্কে 'জানার' উপায় হওয়া দরকার। এটি একটি এর মাধ্যমে সম্পন্ন হয়েছে git fetch
যা ট্র্যাকিং শাখাগুলি (যেমন, origin/
) ব্যবহার করে সমস্ত নতুন এবং পরিবর্তিত শাখা স্থানীয়ভাবে সংগ্রহস্থলগুলিতে পাবে । একবার fetch
সম্পাদনা করা গেলে , git branch --remote
ট্র্যাকিং শাখাগুলি git checkout [branch]
তালিকাবদ্ধ করতে এবং কোনও প্রদত্ত একটিতে স্যুইচ করতে পারেন।
মার্জ
মার্জিং হ'ল কোডগুলি বিভিন্ন শাখা থেকে, বা একই শাখার বিভিন্ন সংস্করণ (উদাহরণস্বরূপ যখন কোনও স্থানীয় শাখা এবং দূরবর্তী সিঙ্কের বাইরে থাকে) থেকে কোড পরিবর্তনগুলি একত্রিত করার প্রক্রিয়া। যদি কেউ একটি শাখায় কাজ বিকশিত করে থাকে এবং কাজটি সম্পূর্ণ, প্রস্তুত এবং পরীক্ষিত হয় তবে এটি master
শাখায় একীভূত করা যেতে পারে । এটি তখন শাখায় git checkout master
স্যুইচ করার মাধ্যমে করা হয় । একত্রীকরণটি একই ফাইলগুলিতে সমস্ত বিভিন্ন ফাইল এবং এমনকি বিভিন্ন পরিবর্তন আনবে । এর অর্থ এটি সমস্ত পরিবর্তনগুলিকে একীভূত করতে ফাইলগুলির অভ্যন্তরে কোডটি পরিবর্তন করবে।master
git merge your_branch
যখন করছেন checkout
এর master
এটি একটি করতে সুপারিশ করা হচ্ছে git pull origin master
দূরবর্তী মাস্টার খুব সর্বশেষ সংস্করণ পেতে আপনার স্থানীয় মাস্টার মধ্যে মিশে গিয়ে তৈরি। যদি রিমোট মাস্টার পরিবর্তিত হয়, অর্থাৎ moved forward
, আপনি এমন তথ্য দেখতে পাবেন যা সেই সময়ের মধ্যে এটি প্রতিফলিত করে git pull
। যদি এটি হয় (মাস্টার পরিবর্তিত) আপনার পরামর্শ দেওয়া হয় git checkout your_branch
এবং তারপরে rebase
এটি মাস্টার করার জন্য যাতে আপনার পরিবর্তনগুলি আসলে 'নতুন' মাস্টারের উপরে 'রিপ্লেড' হয়। তারপরে আপনি পরবর্তী অনুচ্ছেদে বর্ণিত হিসাবে মাস্টার আপ টু ডেট পাচ্ছেন।
যদি কোনও বিরোধ নেই, তবে মাস্টারের নতুন পরিবর্তনগুলি যুক্ত হবে If যদি বিরোধ রয়েছে, এর অর্থ এই একই ফাইলগুলির কোডের একই লাইনের চারপাশে পরিবর্তন রয়েছে যা এটি স্বয়ংক্রিয়ভাবে মার্জ হতে পারে না। এই ক্ষেত্রে git merge new_branch
রিপোর্ট হবে সেখানে দ্বন্দ্ব (গুলি) সমাধান করতে যে। আপনি ফাইলগুলি সম্পাদনা করে তাদের সমাধান করেছেন (যার মধ্যে উভয় পরিবর্তন থাকবে) আপনি যে পরিবর্তনগুলি চান তা নির্বাচন করে, আক্ষরিকভাবে আপনি চান না এমন পরিবর্তনগুলির লাইনটি মুছে ফেলা এবং তারপরে ফাইলটি সংরক্ষণ করে। পরিবর্তনগুলি পৃথককারী যেমন ========
এবং হিসাবে চিহ্নিত করা হয় <<<<<<<<
।
একবার আপনি কোনও দ্বন্দ্ব নিরসন করলে আপনি আবার একবারে git add
এবং git commit
মার্জগুলি চালিয়ে যাওয়ার জন্য এই পরিবর্তনগুলি করবেন (আপনাকে গাইড করার জন্য এই প্রক্রিয়া চলাকালীন গিটের কাছ থেকে প্রতিক্রিয়া পাবেন)।
প্রক্রিয়াটি ভালভাবে কাজ না করলে আপনি দেখতে পাবেন যে git merge --abort
জিনিসগুলি পুনরায় সেট করতে খুব সহজ।
ইন্টারেক্টিভ রিবেসিং এবং স্কোয়াশিং / পুনঃক্রম / কমিটগুলি অপসারণ
আপনি যদি অনেকগুলি ছোট পদক্ষেপে কাজ করে থাকেন, যেমন, আপনি প্রতিদিন 'ওয়ার্ক-ইন-প্রগ্রেস' হিসাবে কোড করেন তবে আপনি এই ছোট ছোট কয়েকটি কমিটকে কয়েকটি বড় কমিটে 'স্কোয়াশ' করতে চাইতে পারেন। আপনি সহকর্মীদের সাথে কোড পর্যালোচনা করতে চাইলে এটি বিশেষভাবে কার্যকর হতে পারে। আপনি যে সমস্ত 'পদক্ষেপ' নিয়েছেন তা পুনরায় খেলতে চান না (প্রতিশ্রুতি দিয়ে), আপনি কেবল বলতে চান এখানে একটি প্রতিশ্রুতিবদ্ধভাবে এই কাজের জন্য আমার সমস্ত পরিবর্তনের শেষ প্রভাব (পৃথক)।
এটি করার ক্ষেত্রে মূল্যায়ন করার মূল বিষয়টি হ'ল একাধিক কমিটি একই ফাইল বা একাধিকবার ফাইলের বিপরীতে রয়েছে কিনা (সেই ক্ষেত্রে স্কোয়াশ কমিট করার চেয়ে ভাল)। এটি ইন্টারেক্টিভ রিবেসিং সরঞ্জাম দিয়ে করা হয়। এই সরঞ্জামটি আপনাকে স্কোয়াশ করে, কমিটগুলি মুছে ফেলতে, বার্তাগুলি পুনরায় পাঠাতে দেয় example উদাহরণস্বরূপ, git rebase -i HEAD~10
( দ্রষ্টব্য: এটি একটি ~
নয়,-
) নিম্নলিখিতগুলি নিয়ে আসে:
তবে সাবধান থাকুন এবং এই সরঞ্জামটি 'আদা' ব্যবহার করুন। একবারে একটি স্কোয়াশ / মুছুন / পুনঃক্রম করুন, প্রস্থান করুন এবং সেই প্রতিশ্রুতিটি সংরক্ষণ করুন, তারপরে সরঞ্জামটি পুনরায় প্রবেশ করুন। যদি কমিটগুলি সংগত না হয় তবে আপনি সেগুলি পুনরায় অর্ডার করতে পারেন (এবং তারপরে প্রয়োজন অনুযায়ী স্কোয়াশ)। আপনি প্রকৃতপক্ষে এখানেও কমিটগুলি মুছতে পারেন, তবে আপনি যখন যা করছেন তখন আপনার সত্যিকারের নিশ্চিত হওয়া দরকার!
কাটাচামচ
গিট সংগ্রহস্থলগুলিতে সহযোগিতার জন্য দুটি প্রধান পন্থা রয়েছে। উপরে বর্ণিত প্রথমটি হ'ল সরাসরি এমন শাখাগুলির মাধ্যমে যা লোকেরা টেনে নিয়ে যায় এবং থেকে / তে চাপায়। এই সহযোগীদের তাদের এসএসএইচ কীগুলি দূরবর্তী সংগ্রহস্থলের সাথে নিবন্ধিত রয়েছে। এটি তাদের সরাসরি rep ভান্ডারের দিকে ধাক্কা দিতে দেবে। ক্ষতিটি হ'ল আপনাকে ব্যবহারকারীদের তালিকা বজায় রাখতে হবে। অন্য পদ্ধতি - কাঁটাচামচ - যেকোনকেই সংগ্রহস্থলকে 'কাঁটাচামচ' করতে দেয়, মূলত তাদের নিজস্ব গিট সংগ্রহস্থল অ্যাকাউন্টে একটি স্থানীয় অনুলিপি তৈরি করে। তারপরে তারা পরিবর্তন করতে পারবেন এবং কোডটি স্বীকৃতি পেতে একটি 'পুল অনুরোধ' (সত্যিকার অর্থে এটি তাদের কাছ থেকে 'ধাক্কা' এবং প্রকৃত সংগ্রহস্থল রক্ষণাবেক্ষণকারীটির জন্য 'পুল' অনুরোধ) প্রেরণ করুন।
এই দ্বিতীয় পদ্ধতিটি কাঁটাচামচ ব্যবহার করে, কারও কাছে रिपাইজিটরির ব্যবহারকারীর তালিকা বজায় রাখতে হবে না ।
GitHub
গিটহাব (একটি রিমোট রিপোজিটরি) এমন একটি রিমোট উত্স যা আপনি সাধারণত এই প্রতিশ্রুতিবদ্ধ (বা যুক্ত হয়ে থাকেন) যদি প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলিকে ধাক্কা দিয়ে টানেন এবং স্থানীয় এবং দূরবর্তী আসলে আলাদা আলাদা। রিমোট রিপোজিটরিটি ভাবার আরেকটি উপায় হ'ল এটি একটি .git
ডিরেক্টরি কাঠামো যা দূরবর্তী সার্ভারে থাকে।
যখন আপনি 'কাঁটাচামচ' করেন - গিটিহাব ওয়েব ব্রাউজার জিইউআইতে আপনি এই বোতামটিতে ক্লিক করতে পারেন - আপনি নিজের গিটহাব অ্যাকাউন্টে কোডটির একটি অনুলিপি ('ক্লোন') তৈরি করতে পারেন । এটি করার পরে এটি প্রথম সূক্ষ্ম কিছু সূক্ষ্ম হতে পারে, সুতরাং আপনি যে কোডের নীচে একটি বেস বেস তালিকাভুক্ত রয়েছে তার সংগ্রহস্থলটি দেখেছেন কিনা তা নিশ্চিত করে রাখুন - হয় আসল মালিক বা 'ফোরকড' এবং আপনি যেমন:
একবার আপনার স্থানীয় অনুলিপি হয়ে গেলে আপনি নিজের ইচ্ছামত পরিবর্তন করতে পারেন (এটিকে স্থানীয় মেশিনে টান দিয়ে এবং ধাক্কা দিয়ে)। আপনার কাজ শেষ হয়ে গেলে আপনি মূল সংগ্রহস্থল মালিক / প্রশাসকের কাছে একটি 'পুল অনুরোধ' জমা দিন (অভিনব মনে হয় তবে বাস্তবে আপনি কেবল এটিতে ক্লিক করেন :) এবং তারা এটিকে 'টান' দেয়।
এক সাথে কোডে কাজ করা একটি দলের পক্ষে আরও সাধারণ হ'ল रिपোটারিটি 'ক্লোন' করা (ভাণ্ডারের মূল পর্দার 'অনুলিপি' আইকনে ক্লিক করুন)। তারপরে, স্থানীয়ভাবে টাইপ করুন git clone
এবং পেস্ট করুন। এটি আপনাকে স্থানীয়ভাবে সেট আপ করবে এবং আপনি (ভাগ করা) গিটহাব অবস্থানটি ধাক্কা দিতে এবং টানতে পারবেন।
ক্লোনের যোগান দেয়
গিটহাবের বিভাগে উল্লিখিত হিসাবে, একটি ক্লোন হ'ল ভাণ্ডারের অনুলিপি। আপনার কাছে যখন কোনও রিমোট রিপোজিটরি থাকে আপনি git clone
তার ইউআরএলটির বিরুদ্ধে কমান্ডটি সরবরাহ করেন এবং তারপরে আপনি সংগ্রহস্থলের স্থানীয় অনুলিপি বা ক্লোনটি সমাপ্ত করেন। এই ক্লোনটিতে সমস্ত কিছু রয়েছে , ফাইলগুলি, মাস্টার শাখা, অন্যান্য শাখা, সমস্ত বিদ্যমান কমিট, পুরো শেবাং। এই ক্লোনটিই আপনি আপনার যুক্ত করেন এবং তার বিরুদ্ধে প্রতিশ্রুতি দেন এবং তারপরে রিমোট রিপোজিটরি নিজেই আপনি সেই প্রতিশ্রুতিগুলিতে চাপ দেন। এটি এই স্থানীয় / দূরবর্তী ধারণা যা গিটকে (এবং এটির মতো সিস্টেমগুলি যেমন মার্কুরিয়াল) একটি ডিভিসিএস করে ( বিতরণ করে ) সংস্করণ কন্ট্রোল সিস্টেম) যেমন SVN, PVCS, জীবনবৃত্তান্ত, ইত্যাদি যেখানে যেমন অধিক প্রথাগত CVSS (কোড ভারশনিং সিস্টেমস) বিরোধিতা আপনি সরাসরি দূরবর্তী সংগ্রহস্থলে প্রতিশ্রুতিবদ্ধ।
কল্পনা
মূল ধারণাগুলির ভিজ্যুয়ালাইজেশন
http://marklodato.github.com/visual-git-guide/index-en.html এবং http://ndpsoftware.com/git-cheatsheet.html#loc=index এ দেখা যাবে
যদি আপনি কীভাবে পরিবর্তনগুলি কাজ করছে তার একটি ভিজ্যুয়াল প্রদর্শন চান তবে আপনি জিইউআই দিয়ে ভিজ্যুয়াল সরঞ্জামটিকে gitg
( gitx
ম্যাকোএসের জন্য) পরাজিত করতে পারবেন না যে আমি 'পাতাল রেল মানচিত্র' (যেমন লন্ডন আন্ডারগ্রাউন্ড) বলছি, কে কী করেছে তা দেখানোর জন্য দুর্দান্ত, কীভাবে জিনিসগুলি পরিবর্তন হয়, ডাইভার্জ হয়ে যায় এবং একত্রী হয় ইত্যাদি
আপনি নিজের পরিবর্তনগুলি যুক্ত করতে, প্রতিশ্রুতিবদ্ধ করতে ও পরিচালনা করতে এটি ব্যবহার করতে পারেন!
যদিও gitg / gitx মোটামুটি ন্যূনতম, জিইউআই সরঞ্জামগুলির সংখ্যা প্রসারিত অবিরত রয়েছে। অনেক ম্যাক ব্যবহারকারী ব্রাদারবার্ডের গিটক্সের কাঁটাচামচ ব্যবহার করে এবং লিনাক্সের জন্য, দুর্দান্ত বিকল্পটি একটি স্বজ্ঞাত কিন্তু শক্তিশালী ইন্টারফেস সহ স্মার্ট গিট:
মনে রাখবেন যে একটি জিইউআই সরঞ্জাম সহ, আপনি সম্ভবত কমান্ড লাইনে প্রচুর কমান্ড করবেন।
এর জন্য আমার আমার ~/.bash_aliases
ফাইলে নিম্নলিখিত উপাধি রয়েছে (যা ~/.bashrc
প্রতিটি টার্মিনাল সেশনের জন্য আমার ফাইল থেকে ডাকা হয় ):
# git
alias g='git status'
alias gcob='git checkout -b '
alias gcom='git checkout master'
alias gd='git diff'
alias gf='git fetch'
alias gfrm='git fetch; git reset --hard origin/master'
alias gg='git grep '
alias gits='alias | grep "^alias g.*git.*$"'
alias gl='git log'
alias gl1='git log --oneline'
alias glf='git log --name-status'
alias glp='git log -p'
alias gpull='git pull '
alias gpush='git push '
এবং আমার ~/.gitconfig
ফাইলে আমার নিম্নলিখিত "গিট এলিয়াস" রয়েছে - এগুলি কেন?
সুতরাং সেই শাখার সমাপ্তি (টিএবি কী সহ) কাজ করে!
সুতরাং এইগুলি:
[alias]
co = checkout
cob = checkout -b
উদাহরণস্বরূপ ব্যবহার: git co [branch]
<- শাখাগুলির জন্য ট্যাব সমাপ্তি কাজ করবে।
জিইউআই শেখার সরঞ্জাম Tool
কিছু বেস ধারণাগুলি শিখতে আপনি https://learngitbranching.js.org/ দরকারী খুঁজে পেতে পারেন । স্ক্রিন শট:
ভিডিও: https://youtu.be/23JqqcLPss0
অবশেষে, 7 কী জীবনকালীন!
আপনি পরিবর্তন করেন, এগুলি যুক্ত করুন এবং প্রতিশ্রুতিবদ্ধ করুন (তবে ধাক্কা দেবেন না) এবং তারপর ওহ! আপনি বুঝতে পারেন আপনি মাস্টার হয়!
git reset [filename(s)]
git checkout -b [name_for_a_new_branch]
git add [file(s)]
git commit -m "A useful message"
Voila! You've moved that 'master' commit to its own branch !
স্থানীয় শাখায় কাজ করার সময় আপনি কিছু ফাইল বিশৃঙ্খলা করে ফেলেছেন এবং আপনি সর্বশেষ সময়টি যা করেছিলেন তাতে ফিরে যেতে চান git pull
:
git reset --hard origin/master # You will need to be comfortable doing this!
আপনি স্থানীয়ভাবে পরিবর্তনগুলি শুরু করতে পারেন, আপনি অর্ধ ডজন ফাইল সম্পাদনা করুন এবং তারপরে ওহ ক্রাপ, আপনি এখনও মাস্টার (বা অন্য) শাখায় রয়েছেন:
git checkout -b new_branch_name # just create a new branch
git add . # add the changes files
git commit -m"your message" # and commit them
আপনি আপনার বর্তমান শাখায় একটি নির্দিষ্ট ফাইল গণ্ডগোল করছেন এবং মূলত সেই ফাইলটি 'রিসেট' করতে চান (পরিবর্তনগুলি হারাবেন) এটি কীভাবে আপনি শেষবারের রিমোটোরিটি থেকে শেষ বার টানছিলেন তা:
git checkout your/directories/filename
এটি আসলে ফাইলটি পুনরায় সেট করে (অনেক গিট কমান্ডের মতো এটি এখানে এটি কী করছে তার নাম দেওয়া হয়নি)।
আপনি স্থানীয়ভাবে কিছু পরিবর্তন করেন, আপনি এটি নিশ্চিত করতে চান যে আপনি কোনও করার সময় সেগুলি হারাবেন না git reset
বা rebase
: আমি প্রায়শই পুরো প্রকল্পের একটি ম্যানুয়াল অনুলিপি তৈরি cp -r ../my_project ~/
করি ( ) যখন আমি নিশ্চিত না যে আমি গিটের মধ্যে জড়িয়ে পড়ি বা গুরুত্বপূর্ণ হারাতে পারি পরিবর্তন।
আপনি মুক্তি দিচ্ছেন তবে জিনিসগুলি গোলমেলে:
git rebase --abort # To abandon interactive rebase and merge issues
আপনার PS1
প্রম্পটে আপনার গিট শাখা যুক্ত করুন ( https://unix.stackexchange.com/a/127800/10043 দেখুন ), উদাহরণস্বরূপ
শাখাটি হ'ল selenium_rspec_conversion
।