আমাকে "গিট টান", "গিট অ্যাড, গিট কমিট" করার আগে বা পরে কখন করা দরকার?


97

সঠিক উপায় কি?

git add foo.js
git commit foo.js -m "commit"
git pull
git push

বা

git pull
git add foo.js
git commit foo.js -m "commit"
git push

বা

git add foo.js
git pull
git commit foo.js -m "commit"
git push

ইউপিডি:

আমি উল্লেখ করতে ভুলে গেছি যে এই ক্ষেত্রে আমি git addএকটি ট্র্যাক এবং পরিবর্তিত ফাইল স্টেজ করতে ব্যবহার করি । ভান্ডারগুলিতে কোনও ব্র্যান্ড নতুন ফাইল অন্তর্ভুক্ত করা উচিত নয়। এটি কি আদেশের আদেশ পরিবর্তন করে?


সংশ্লিষ্ট প্রশ্ন: stackoverflow.com/questions/813822/...
leo9r

উত্তর:


101

আমি মনে করি এটি করার সর্বোত্তম উপায় হ'ল:

আপনার স্থানীয় পরিবর্তনগুলি সংরক্ষণ করুন:

git stash

সর্বশেষ কোডে শাখাটি আপডেট করুন

git pull

আপনার স্থানীয় পরিবর্তনগুলি সর্বশেষতম কোডে মার্জ করুন:

git stash apply

আপনার পরিবর্তনগুলি যোগ করুন, প্রতিশ্রুতিবদ্ধ এবং ধাক্কা দিন

git add
git commit
git push

আমার অভিজ্ঞতায় এটি গিটের সাথে কমপক্ষে প্রতিরোধের পথ (যেভাবেই কমান্ড লাইনে)।


4
কেন আপনি ভাল এটি ব্যাখ্যা করতে পারেন ? এটি কোন সমস্যা এড়ায়? বিশেষত, কেন একটি সাধারণ কমিট> টান> ধাক্কা থেকে ভাল? (আমি মনে করি এটি সেরা উত্তর হতে পারে তবে এখন পর্যন্ত যথেষ্ট তথ্য নেই এমনকি একটি ভাল উত্তর হিসাবে বিবেচনা
করাও

8
সম্ভবত এটি খুব কৌতূহলোদ্দীপক ছিল তবে আমি সর্বদা এই পদ্ধতিটি খুঁজে পেয়েছি (কমান্ড লাইনে সোর্সট্রি জাতীয় কিছু না দিয়ে) আরও সহজ। একটি প্রতিশ্রুতিবদ্ধতা করা এবং তারপরে টানুন, একটি বড় দলে কাজ করার সময় সর্বদা বৃহত মার্জ সংঘাতের দিকে নিয়ে যায় কারণ আগমনকারীগুলির সাথে ফাইলগুলিতে আমার পরিবর্তনগুলি মার্জ করাতে গিট খুব ভাল ছিল না। স্ট্যাশ করে, এটি আমাকে নতুন পরিবর্তনগুলি টানতে এবং তারপরে আমার পরিবর্তনগুলিতে যোগ করার জন্য বেস হিসাবে আপডেট কোডটি ব্যবহার করার অনুমতি দেয়। দ্বন্দ্বগুলি মোকাবেলা করা আরও সহজ ছিল যেহেতু তারা আমার কাছে পরিষ্কার ছিল (কারণ আমার পরিবর্তনগুলি এখন দ্বন্দ্ব ছিল)। অনিশ্চিতিতে, এটি আমার পরিস্থিতির পক্ষে কেবল সহজ ছিল।
jhnjo

4
সুতরাং এটি "ধরণের কীভাবে আপনি হাতি খাবেন? একবারে একটি কামড়" ধরণের জিনিস বলে মনে হচ্ছে। অর্থাত্ আরও কম কয়েকটি ধাপে প্রক্রিয়া ভঙ্গ করা আরও কম এবং সম্ভবত পরিষ্কার পরিবর্তন হতে পারে মার্জগুলিকে সহজ করার জন্য। ইন্দ্রিয় তোলে।
ডালিন

এখানে গিট অ্যাড প্রয়োজনীয়? সমস্ত ফাইল যদি ইতিমধ্যে মঞ্চে যুক্ত হয়!
শার্প এজ

আপনি যদি ব্যবহার না করছেন তবে কী হবে git stash?
অ্যারন ফ্র্যাঙ্ক

77

টান = আনয়ন + মার্জ করুন।

মার্জ হওয়ার আগে আপনি যা করেছেন তা আপনাকে করতে হবে।

সুতরাং প্রতিশ্রুতি পরে টানুন।


8
এর অর্থ কি আপনি প্রতিশ্রুতিবদ্ধ প্রতিশ্রুতিগুলির জন্য অতিরিক্ত প্রতিশ্রুতিবদ্ধকরণ এবং রেপোকে আস্তে আস্তে পরিণত করবেন? এছাড়াও আপনার প্রাথমিক প্রতিশ্রুতি বার্তা প্রতিটি বারে মার্জ মন্তব্য পরে শেষ হয়। যদি তাই হয় তবে আমি @ জোহঞ্জো দ্বারা নীচে উল্লিখিত স্ট্যাশ পদ্ধতিটি ব্যবহার করতে আগ্রহী হব।
সোমবারের পেপার

4
@ ড্যানিয়েলএম হ্যাঁ, মার্জ করার জন্য একটি অতিরিক্ত প্রতিশ্রুতি রয়েছে (একটি স্পষ্ট স্পষ্ট ডিফল্ট প্রতিশ্রুতি বার্তা সহ)। এটি বেশ ভাল জিনিস যদিও এটি আপনাকে আপনার শেষ প্রতিশ্রুতি বা আপনার সহকর্মীর শেষ প্রতিশ্রুতি বা মার্জ কমিট চেক আউট করার অনুমতি দেয়। আপনি যদি তা এড়াতে চান এবং আপনার সহকর্মীর কমান্ডের পরে যদি আপনি নিজের কমিটগুলি স্থাপন করতে চান তবে আপনি তার rebaseপরিবর্তে এটি করতে পারেন merge। আপনি এটি দিয়েই করতে পারেন git commit && git rebaseবা হয় না git pull --rebase
আর্নাউড ডনোইলে

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

52

বৃহত্তর সংশ্লেষ এবং সম্ভাব্য দ্বন্দ্ব হ্রাস করার জন্য আমি যতদূর সম্ভব দূরবর্তী শাখা থেকে টানতে পরামর্শ দিই।

এটি বলার পরে, আমি প্রথম বিকল্পটি নিয়ে যাব:

git add foo.js
git commit foo.js -m "commit"
git pull
git push

টান দেওয়ার আগে আপনার পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ যাতে আপনার কমিটগুলি টানার সময় দূরবর্তী পরিবর্তনের সাথে একত্রিত করা হয়। এর ফলে দ্বন্দ্ব হতে পারে যা আপনার কোডটি ইতিমধ্যে প্রতিশ্রুতিবদ্ধ যে কোনও কিছু ভুল হয়ে গেলে এবং যে কোনও কারণেই আপনি এই মার্জটি বাতিল করতে হবে তা জেনেও আপনি এই চুক্তিটি শুরু করতে পারেন।

আমি নিশ্চিত যে কেউ আমার সাথে দ্বিমত পোষণ করবে, তবে আমি মনে করি না যে এই সংযুক্তি প্রবাহটি করার কোনও সঠিক উপায় আছে, কেবলমাত্র মানুষের জন্য সবচেয়ে কার্যকর কী।


4
আপনি কি আমার আপডেটটি প্রশ্নটিতে দেখতে পারেন? git addআমার উদাহরণে হুবহু কী ব্যবহার করা হয় তা আমি ব্যাখ্যা করতে ভুলে গেছি ।
সবুজ

4
এটি কোনও নতুন ফাইল বা ট্র্যাকড / পরিবর্তিত ফাইল কিনা তা কোনও পার্থক্য করা উচিত নয়। এখনও প্রতিশ্রুতিবদ্ধ এবং তারপরে টানুন।
জাসারিএন

7

আমার কাছে মনে git pull --rebaseহয় আপনার স্থানীয়ভাবে সাম্প্রতিক কমিটগুলি সেট করার সবচেয়ে সুনির্দিষ্ট উপায় যা আপনার কাছে নির্দিষ্ট সময় নেই remote

সুতরাং প্রতিবার আপনি পরিবর্তনগুলি শুরু করতে চাইলে আপনাকে টানতে হবে না।


আমি এটিই করি, তবে কেবল এটি উল্লেখ করতেই যে এই বিষয়ে অবশ্যই দুটি প্রধান বিদ্যালয় রয়েছে (একচেটিয়া প্রতিশ্রুতি জুড়ে দ্বন্দ্বগুলি সমাধান করা ভাল কিনা, অথবা একবার মার্জ কমিটে একবার নিযুক্ত করা হয়েছে) লিনাসের সাথে নিজেই মার্জ ক্যাম্পে বসেছিলেন cen । কৃতজ্ঞ যে, সরঞ্জামটি নিজেই
মতামতযুক্ত

3

আপনার পরিবর্তনটি দূরবর্তী শাখার বর্তমান অবস্থার শীর্ষে বসতে চান। সুতরাং সম্ভবত আপনি নিজেকে প্রতিশ্রুতিবদ্ধ করার আগে ডানদিকে টানতে চান। এর পরে, আপনার পরিবর্তনগুলি আবার চাপ দিন।

"নোংরা" স্থানীয় ফাইলগুলি যতক্ষণ না দূরবর্তী শাখার সাথে কোনও বিরোধ নেই। যদিও যদি কোনও দ্বন্দ্ব থাকে তবে মার্জটি ব্যর্থ হবে, তাই স্থানীয় পরিবর্তনগুলি করার আগে টানা কোনও ঝুঁকি বা বিপদ নেই।


4
আরনাউড যেমন উল্লেখ করেছেন তেমন কাজ করবে না, টানতে আপনাকে প্রথমে আপনার পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করতে হবে।
জাসারিন

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

লোকেরা যখন বিভিন্ন ফাইলে কাজ করে তখন এটি আমার পছন্দসই বিকল্প এবং আমি এটিকে সবচেয়ে প্রাকৃতিক বলে মনে করি।
ভাগ্নে

0

আমার জন্য সেরা উপায় হ'ল:

  1. নতুন শাখা তৈরি করুন, এটিতে চেকআউট করুন
  2. ফাইল তৈরি বা সংশোধন, গিট অ্যাড, গিট কমিট
  3. মাস্টার শাখায় ফিরে যান এবং রিমোট থেকে টানুন (সর্বশেষ মাস্টার পরিবর্তনগুলি পেতে)
  4. মাস্টার সঙ্গে সদ্য নির্মিত শাখা মার্জ করুন
  5. সদ্য নির্মিত শাখা অপসারণ
  6. দূরবর্তী মাস্টার ধাক্কা

অথবা আপনি রিমোটে সদ্য নির্মিত শাখাটি পুশ করতে এবং সেখানে মার্জ করতে পারেন (যদি আপনি এটি এভাবে করেন তবে শেষে আপনাকে দূরবর্তী মাস্টার থেকে টানতে হবে)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.