"গিট কমিট" এবং "গিট পুশ" এর মধ্যে পার্থক্য কী?


895

একটি গিট টিউটোরিয়ালে আমি যা করছি git commitসেগুলি আপনার করা পরিবর্তনগুলি সংরক্ষণ করার জন্য ব্যবহৃত হয়।

তখন কি git pushব্যবহার করা হয়?


83
আপনি "গিট চিটশীট" টিও পরীক্ষা করে দেখতে পারেন যা ধারণাটি বুঝতে আমাকে অনেক সহায়তা করেছে: ndpsoftware.com/git-cheatsheet.html
adenderenat

এখানে আরও একটি চিট শীট রয়েছে: atlassian.com/git/tutorials/atlassian-git-cheatsheet
ক্যানিয়ন

2
এটি ইতিমধ্যে সরবরাহ করা হয়েছে যেহেতু কোন উত্তর। শুধু একটি পর্যবেক্ষণ আমার কাছে মনে হয় একটি প্রতিশ্রুতি সত্যই একটি সেভ বলা উচিত এবং ধাক্কা কমিট বলা উচিত। ক্লাসিক নামকরণ দৃশ্যের সমস্যা।
ডাবলিন্স

উত্তর:


1618

মূলত git commit" সংগ্রহস্থলের পরিবর্তনগুলি রেকর্ড করে " যখন git push" সম্পর্কিত বিষয়গুলির সাথে দূরবর্তী রেফগুলি আপডেট করে "। সুতরাং প্রথমটি আপনার স্থানীয় সংগ্রহস্থলের সাথে সংযোগে ব্যবহৃত হয়, তবে পরেরটি দূরবর্তী সংগ্রহস্থলের সাথে ইন্টারেক্ট করার জন্য ব্যবহৃত হয়।

অলিভার স্টিলের একটি সুন্দর ছবি এখানে , যা গিট মডেল এবং আদেশগুলি ব্যাখ্যা করে:

গিট ডেটা ট্রান্সপোর্ট কমান্ড

সম্পর্কে আরও পড়ুন git pushএবং git pullউপর GitReady.com (নিবন্ধটি আমি প্রথম উল্লেখ করা হয়েছে)


20
এখানে আসল উত্সটি: osteele.com/archives/2008/05/my-git- ওয়ার্কফ্লো একটি গিট ওয়ার্কফ্লো এর অন্য ছবি সহ
টানাসিয়াস

9
@ বেন গিথুব আপনার জনসাধারণকে হোস্ট করার একমাত্র সমাধান, "অন-ক্লাউড", git pushকাজ করার জন্য ভান্ডার । বাস্তবে, গন্তব্য কোনও গিট সংগ্রহস্থল git pushহতে পারে । এটি অন্য ডিরেক্টরিতে ( বা উদাহরণস্বরূপ) আপনার নিজের স্থানীয় হার্ড ড্রাইভে থাকতে পারে , বা আপনার নিজস্ব হোস্ট পরিবেশন করে এমন একটি গিট সংগ্রহস্থল । git remote add clone ~/proj/clone.git; git push clone mastergit push ~/proj/clone.git master
সান্তা 18

2
সুতরাং ... আপনার কি প্রথমে ধাক্কা দেওয়া বা প্রথমে প্রতিশ্রুতিবদ্ধ হওয়া দরকার?
কোকোডোকো

5
@ পেট এটি আপনার কর্মক্ষেত্র থেকে শুরু হয়, যেখানে আপনি ফাইলগুলি পরিবর্তন করেন। তারপরে আপনি এগুলি সূচীতে যুক্ত করুন, স্থানীয় সংগ্রহস্থলে তাদের প্রতিশ্রুতিবদ্ধ করুন এবং - অবশেষে - এগুলি দূরবর্তী সংগ্রহস্থলে চাপ দিন
টানাসিয়াস

2
@ মিঃ হাইড নো, এটি সম্ভব নয়। বিতরণকৃত সংস্করণ নিয়ন্ত্রণ হিসাবে গিটের জন্য স্থানীয় কপি থাকা দরকার।
টানাশিয়াস

215

প্রতিশ্রুতিবদ্ধ : স্থানীয় সংগ্রহস্থলগুলিতে পরিবর্তন যুক্ত করুন

চাপ দিন : শেষ প্রতিশ্রুতি (গুলি) দূরবর্তী সার্ভারে স্থানান্তর করতে


56

ঠিক আছে, গিট কমিট আপনার স্থানীয় রেপোতে আপনার পরিবর্তনগুলি রাখে, যখন গিট পুশ আপনার পরিবর্তনগুলি দূরবর্তী অবস্থানে প্রেরণ করে।


9
জিআইটি ব্যবহারের এটি আমার দ্বিতীয় দিন। আমি উপরের উত্তরগুলিতে যেমন দেখি, তবুও আমি একটি পরিষ্কার ছবি পাই না, তবে আপনার উত্তরটি কেবল এটি নখ করে। ধন্যবাদ।
বোফা

1
নেই git pushপ্রকৃত আপডেট ফাইল বা কিছু বিশেষ "পরিবর্তন" ফাইল আপলোড করে?
বহুগুণে

27

git pushআপনি স্থানীয় সংগ্রহস্থলে রিমোটের সাথে করা কমিটগুলি যুক্ত করতে ব্যবহৃত হয় - এর সাথে git pullএটি লোকজনকে সহযোগিতা করতে দেয়।


26

যেহেতু গিটটি একটি বিতরণযোগ্য সংস্করণ নিয়ন্ত্রণ সিস্টেম, তফাতটি হ'ল কমিট আপনার স্থানীয় সংগ্রহস্থলগুলিতে পরিবর্তন আনতে বাধ্য করবে, যেখানে ধাক্কা একটি দূরবর্তী রেপোতে পরিবর্তনগুলিকে চাপ দেবে।


19

কমিট : স্ন্যাপশট | চেঞ্জসেট | ইতিহাস_রেকর্ড | সংস্করণ | একটি সংগ্রহস্থলের 'সেভ- এএস ' Git সংগ্রহস্থল = সিরিজের (গাছ) করে

স্থানীয় সংগ্রহস্থল: আপনার কম্পিউটারে সংগ্রহস্থল।

রিমোট রিপোজিটরি: একটি সার্ভারে ( গিথুব ) সংগ্রহস্থল ।

git commit: পরিশেষে একটি নতুন কমিট (শেষ কমিট + + মঞ্চস্থ পরিবর্তন) এর স্থানীয় সংগ্রহস্থল। (সমস্ত কমিট এতে জমা থাকে /.git)

git push, git pull: স্থানীয় রিপোজিটরিটি সম্পর্কিত রিমোট রিপোজিটরির সাথে সিঙ্ক করুন । push- থেকে পরিবর্তনগুলি প্রয়োগ স্থানীয় মধ্যে দূরবর্তী , pull- থেকে পরিবর্তনগুলি প্রয়োগ দূরবর্তী মধ্যে স্থানীয়


11

git commitস্থানীয় সংগ্রহস্থলে আপনার পরিবর্তনগুলি রেকর্ড করুন ।

git push স্থানীয় পরিবর্তনগুলির সাথে দূরবর্তী সংগ্রহস্থল আপডেট করুন ।


20
আপনার উত্তরটি মূলত এই উত্তরের মতো , এটি নতুন কিছু যুক্ত করে না।

7

তিনটি বিষয় লক্ষণীয়:

1) ওয়ার্কিং ডিরেক্টরি ----- যেখানে আমাদের কোড ফাইল উপস্থিত থাকে সেই ফোল্ডার

2) স্থানীয় সংগ্রহস্থল ------ এটি আমাদের সিস্টেমে রয়েছে। আমরা যখন প্রথমবার COMMIT কমান্ড করি তখন এই স্থানীয় সংগ্রহস্থলটি তৈরি হয়। আমাদের ওয়ার্কিং ডিরেক্টরি যেখানে একই জায়গায়,
চেকিট (.git) ফাইল তৈরি হবে।
এর পরে যখনই আমরা প্রতিশ্রুতিবদ্ধ তখন এটি আমাদের ওয়ার্কিং ডিরেক্টরী ফাইলের স্থানীয় রিপোজিটরিতে (.git) পরিবর্তন করে সংরক্ষণ করবে

3) রিমোট রিপোজিটরি ----- এটি বিশ্বের যে কোনও জায়গায় অবস্থিত সার্ভারগুলির মতো আমাদের সিস্টেমের বাইরে অবস্থিত। গিথুবের মতো আমরা যখন পুশ কমান্ডটি তৈরি করি তখন আমাদের স্থানীয় সংগ্রহশালা থেকে কোডগুলি এই দূরবর্তী সংগ্রহস্থলে সংরক্ষণ করা হয় to


7

শুধু নিম্নলিখিত পয়েন্টগুলি যুক্ত করতে চান:

আপনি git pushআপনার স্থানীয় শাখায় করা কমিটগুলি একটি প্রত্যন্ত ভাণ্ডারে ঠেলাতে ব্যবহার না করা পর্যন্ত আপনি প্রতিশ্রুতি না দেওয়া পর্যন্ত আপনি চাপ দিতে পারবেন না ।

git pushকমান্ড দুটি আর্গুমেন্ট লাগে:

একটি প্রত্যন্ত নাম, উদাহরণস্বরূপ, origin একটি শাখার নাম, উদাহরণস্বরূপ,master

উদাহরণ স্বরূপ:

git push  <REMOTENAME> <BRANCHNAME> 
git push  origin       master

4

খুব অপরিশোধিত উপমা: আমরা যদি git commitকোনও সম্পাদিত ফাইল সংরক্ষণের সাথে তুলনা করি , তবে git pushসেই ফাইলটি অন্য কোনও স্থানে অনুলিপি করা হবে।

অনুগ্রহ করে এই সাদৃশ্যটিকে এই প্রসঙ্গের বাইরে রাখবেন না - প্রতিশ্রুতিবদ্ধ এবং চাপ দেওয়া কোনও সম্পাদিত ফাইল সংরক্ষণ এবং অনুলিপি করার মতো নয়। এটি বলেছে যে এটি তুলনা করার জন্য রাখা উচিত।


1

গিট কমান্ডের ব্যবহার বোঝা আরও সহজ addএবং commitযদি আপনি কল্পনা করেন যে গিথুবটিতে আপনার ভাণ্ডারে কোনও লগ ফাইল রক্ষণাবেক্ষণ করা হচ্ছে। আমার জন্য একটি আদর্শ প্রকল্পের লগ ফাইলটি দেখতে দেখতে দেখতে পারে:

---------------- Day 1 --------------------
Message: Completed Task A
Index of files changed: File1, File2

Message: Completed Task B
Index of files changed: File2, File3
-------------------------------------------

---------------- Day 2 --------------------
Message: Corrected typos
Index of files changed: File3, File1
-------------------------------------------
...
...
...and so on

আমি সাধারণত আমার দিনটি একটি git pullঅনুরোধ দিয়ে শুরু করি এবং একটি git pushঅনুরোধের সাথে শেষ করি । তাই এক দিনের রেকর্ডের মধ্যে থাকা সমস্ত কিছু তাদের মধ্যে যা ঘটে তা তার সাথে মিলিয়ে যায়। প্রতিটি দিনের সময়, আমি এক বা একাধিক যৌক্তিক কাজগুলি সম্পন্ন করি যা কয়েকটি ফাইল পরিবর্তন করার প্রয়োজন। এই কাজের সময় সম্পাদিত ফাইলগুলি একটি সূচীতে তালিকাভুক্ত থাকে।

এই প্রতিটি সাব টাস্ক (এখানে টাস্ক এ এবং টাস্ক বি) স্বতন্ত্র কমিটগুলি। git addকমান্ড 'ফাইল -এর সূচী পরিবর্তিত তালিকায় ফাইল যোগ করা হয়েছে। এই প্রক্রিয়াটিকে স্টেজিংও বলা হয় এবং বাস্তবে রেকর্ডে ফাইল এবং সম্পাদিত পরিবর্তনগুলি রেকর্ড করা হয়। git commitকমান্ড রেকর্ড / পরিবর্তন এবং যা পরে রেফারেন্সের জন্য ব্যবহার করা যেতে পারে একটি বার্তা লিখে তার সাথে সংশ্লিষ্ট সূচক তালিকা চূড়ান্ত করেছে।

মনে রাখবেন আপনি এখনও আপনার সংগ্রহশালার স্থানীয় অনুলিপি পরিবর্তন করছেন এবং গিথুব-র একটি নয়। এর পরে, আপনি যখন git pushপ্রতিটি প্রতিশ্রুতি দেওয়ার জন্য আপনার সূচি ফাইলগুলি সহ এই সমস্ত রেকর্ডকৃত পরিবর্তনগুলি করেন কেবল তখনই মূল সংগ্রহস্থলটিতে (গিথুব) লগইন করুন।

উদাহরণস্বরূপ, সেই কাল্পনিক লগ ফাইলে দ্বিতীয় প্রবেশের জন্য, আমি এটি করতাম:

git pull
# Make changes to File3 and File4
git add File3 File4
# Verify changes, run tests etc..
git commit -m 'Corrected typos'
git push

সংক্ষেপে, git addএবং git commitআপনাকে প্রধান সংগ্রহস্থলটির পরিবর্তিত ব্যবস্থাটি নিয়মিত যৌক্তিক উপ-পরিবর্তনগুলিতে ভাঙতে দেয়। অন্যান্য উত্তর এবং মন্তব্যগুলি যেমন নির্দেশ করেছে, তাদের আরও অবশ্যই ব্যবহার রয়েছে। যাইহোক, এটি এসভিএন এর মতো অন্যান্য জনপ্রিয়গুলির তুলনায় গিট মাল্টি-স্টেজ রিভিশন কন্ট্রোল সিস্টেম হওয়ার পিছনে অন্যতম সাধারণ ব্যবহার এবং ড্রাইভিং নীতি।


0

গিট কমিট আনুষ্ঠানিকভাবে আমাদের পরিবর্তনগুলি সংরক্ষণ ছাড়া কিছুই নয়, প্রতিটি প্রতিশ্রুতির জন্য আমরা প্রতিশ্রুতিবদ্ধ বার্তা দিই, প্রতিশ্রুতিবদ্ধতাগুলি সম্পন্ন করার পরে আমরা বিশ্বব্যাপী আমাদের পরিবর্তন দেখতে এটি প্রত্যন্তে ঠেলে দিতে পারি

যার অর্থ আমরা রিমোটে ধাক্কা দেওয়ার আগে আমরা অনেকগুলি কমিট করতে পারি (কমিটের তালিকাটি ঘটেছে এবং ম্যাসেজগুলিও দেখতে পাচ্ছি) গিট প্রতিটি কমিটকে 40 টি সংখ্যার কোড হিসাবে সংরক্ষণ করে

এবং আমি গিট পুশ তখনই ব্যবহার করি যখন আমি আমার দূরবর্তীতে পরিবর্তন দেখতে চাই (আমার কোড জেনকিনসে কাজ করেছে কিনা তা পরে আমি সেখানে যাব


-1

ঠিক আছে, গিট কমিট আপনার স্থানীয় রেপোতে আপনার পরিবর্তনগুলি রাখে, যখন গিট পুশ আপনার পরিবর্তনগুলি দূরবর্তী অবস্থানে প্রেরণ করে। যেহেতু গিট একটি বিতরণযোগ্য সংস্করণ নিয়ন্ত্রণ সিস্টেম, তফাতটি হ'ল কমিট আপনার স্থানীয় সংগ্রহস্থলগুলিতে পরিবর্তন আনতে বাধ্য করবে, অন্যদিকে ধাক্কা একটি দূরবর্তী রেপোতে পরিবর্তনগুলিকে চাপ দেবে

উত্স গুগল

http://gitref.org/basic/ এই লিঙ্কটি খুব কার্যকর হবে

https://git-scm.com/docs/git-commit


এই উত্তরটি শব্দের জন্য অন্য উত্তরগুলিকে এক সাথে অনুলিপি করে।
জেফারি ওপোকু-মেনসাহ

ইতোমধ্যে যা বলা হয়েছিল
সেটিতে

-1

সাধারণ git commitলোকের কথায়, git pushআপনার ফাইলটি গিথুবকে সাফল্যের সাথে গিট করার জন্য আপনি সেগুলি চালানোর আগে এই পদক্ষেপ ।


-2

git commitস্থানীয় রেপোতে প্রদর্শিত ফাইলগুলি প্রতিশ্রুতিবদ্ধ করা। git pushস্থানীয় পক্ষের মাস্টার শাখাটি দূরবর্তী মাস্টার শাখায় দ্রুত-ফরওয়ার্ড করা merge তবে মার্জটি সবসময় সফল হয় না won't যদি প্রত্যাখ্যান উপস্থিত হয়, আপনাকে এমন করতে হবে pullযাতে আপনি একটি সফল করতে পারেন git push


কিছু লোক টানার পরিবর্তে চাপ দিতে বাধ্য করতে পারে। এটা পরিস্থিতির উপর নির্ভর করে। প্রকৃতপক্ষে, যদি আপনি এমন শাখায় শৃঙ্খলাবদ্ধ হন যা আপনি অন্য লোকের সাথে ভাগ করে নিচ্ছেন না (এমনকি দূরবর্তী রেপোতেও) তবে আপনি কী করতে চান তা টানতে না পারা অবশ্যই ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.