এটি রিবেস যা করে তার সাথে সামঞ্জস্যপূর্ণ বলে মনে হয়।
git svn rebase
বর্তমান হেডের এসভিএন পিতামাতার কাছ থেকে সংশোধনী আনে এবং বর্তমানের (এসভিএনকে ছাড় দেওয়া) কাজটি এর বিরুদ্ধে ছাড় দেয়।
git rebase
উল্লেখ আছে:
নোট করুন যে একটি রিবেস মার্জ শাখার উপরের কার্যকারী শাখা থেকে প্রতিটি প্রতিশ্রুতি পুনরায় খেলতে কাজ করে <upstream>
।
এ কারণে, যখন মার্জ সংঘাত ঘটে:
- আমাদের হিসাবে যে দিকটি প্রতিবেদন করা হয়েছে তা হ'ল এতদূর পুনর্বাসিত সিরিজ, যা শুরু করে
<upstream>
,
- এবং তাদের কার্যনির্বাহী শাখা ।
অন্য কথায়, পক্ষগুলি অদলবদল করা হয় ।
গিট রিবেস ব্রাঞ্চের উপরের কার্যকারী শাখা থেকে প্রতিটি প্রতিশ্রুতি পুনরায় করে <upstream>
।
আপনি উভয় সংজ্ঞা মিলিয়ে যদি:
- এসভিএন থেকে আসা কমিটগুলি হ'ল উপরে স্থানীয় গিট কমিটগুলি পুনরায় খেলানো হয়। এগুলি "এতদূর পর্যন্ত রিবেসড সিরিজের" অংশ, এবং "আমাদের" হিসাবে উল্লেখ করা হয় (আপনার ক্ষেত্রে, সামগ্রী
test.txt
সহ ফাইল bar
)
- কার্যকারী শাখা (গিট সমন্বিত এসভিএন-এর কাছে অজানা প্রতিশ্রুতিবদ্ধ, আপনার ক্ষেত্রে বিষয়বস্তুযুক্ত
test.txt
ফাইলটি baz
) "তাদের" এবং স্থানীয় গিট কমিটগুলির প্রত্যেকটির পুনরায় খেলানো হচ্ছে।
অন্য কথায়, এসভিএন বা না:
- "
<upstream>
" শাখা (যার উপরে কোনও কিছু পুনরায় চালিত করা হয়, এবং যা এখন পর্যন্ত প্রত্যাবর্তনের প্রতিশ্রুতি "এর অংশ)" আমাদের "।
- যা পুনরায় খেলানো হচ্ছে (কার্যকারী শাখা) " তাদের "।
কমাটোস্টের দ্বারা শুভ স্মৃতিসংক্রান্ত টিপ :
প্রধান যা কিছু নির্দেশ করে তা হ'ল "আমাদের"
(এবং প্রথমটি যা আপনি git rebase upstream
যে upstream
শাখাটি পুনরায় শোধ করতে চান তার শাখাগুলি চেকআউট করার জন্য এটি একটি করে : হ্যাড উল্লেখ করে upstream
- ours
এখন))
বিভ্রান্তি সম্ভবত ক্লাসিকের ওয়ার্কিং শাখার ভূমিকা থেকে আসছে git merge
।
আপনি যখন মার্জ করছেন:
- "কার্যকারী শাখা" হ'ল "এতদূর একীভূত" যা রয়েছে এবং এটি "আমাদের" হিসাবে বিবেচিত হয়,
- যখন অন্য প্রতিশ্রুতিবদ্ধ তা প্রতিনিধিত্ব করে - যা পুনরায় খেলানো হয় না - তবে কার্যকারী শাখার উপরে মার্জ করে এবং "তাদের" হিসাবে বিবেচিত হয়।
git rebase
ম্যান পেজের হিসাবে উল্লেখ করা হয়েছে, একটি রিবেসের সময় সংযুক্তির অর্থ পার্শ্বটি অদলবদল করা হয়।
একই কথা বলার আর একটি উপায় তা বিবেচনা করা:
- আমাদের যাচাই করা শাখায় যা আছে তা হ'ল ' আমাদের ',
- আমাদের যা ছিল (এবং মার্জ করা বা পুনরায় খেলানো হচ্ছে) তা তাদের ''
সংযুক্তিতে :
x--x--x--x--x(*) <- current branch B ('*'=HEAD)
\
\
\--y--y--y <- other branch to merge
, আমরা বর্তমান শাখা 'বি' পরিবর্তন করি না, তাই আমাদের যা আছে তা এখনও আমরা কাজ করে যাচ্ছিলাম (এবং আমরা অন্য একটি শাখা থেকে মার্জ করি)
x--x--x--x--x---------o(*) MERGE, still on branch B
\ ^ /
\ ours /
\ /
--y--y--y--/
^
their
তবে একটি রিবেসে আমরা সাইড স্যুইচ করি কারণ একটি রিবাজে প্রথম কাজটি হয় উজানের শাখাটি চেকআউট করা! (এটির উপরে বর্তমান কমিটগুলি পুনরায় খেলতে)
x--x--x--x--x(*) <- current branch B
\
\
\--y--y--y <- upstream branch
A git rebase upstream
প্রথমে HEAD
বি এর প্রবাহিত শাখায় পরিবর্তিত হবে HEAD
(অতএব পূর্ববর্তী "বর্তমান" কার্যকারী শাখার তুলনায় 'আমাদের' এবং 'তাদের' স্যুইচ করা হবে।)
x--x--x--x--x <- former "current" branch, new "theirs"
\
\
\--y--y--y(*) <- upstream branch with B reset on it,
new "ours", to replay x's on it
, এবং তারপরে রিবেস নতুন 'আমাদের' বি শাখায় 'তাদের' প্রতিশ্রুতিগুলি পুনরায় খেলবে:
x--x..x..x..x <- old "theirs" commits, now "ghosts", available through reflogs
\
\
\--y--y--y--x'--x'--x'(*) <- branch B with HEAD updated ("ours")
^
|
upstream branch
কেবলমাত্র অতিরিক্ত পদক্ষেপটি git svn rebase
হ'ল এসভিএন কমিটির প্রতিনিধিত্বকারী গিট রিমোট শাখায় প্রথমে একটি এসএনএন "ফেচ" করা হয়।
আপনার প্রাথমিকভাবে:
x--x--x--x--x(*) <- current branch B, "ours" for now.
\
\
\--y--y--y <- SVN tracking branch, "theirs for now"
, আপনি প্রথমে এসভিএন থেকে আগত নতুন কমিটের সাথে এসভিএন ট্র্যাকিং শাখা আপডেট করবেন
x--x--x--x--x(*) <- current branch B, still "ours", not for long
\
\
\--y--y--y--y'--y' <- SVN tracking branch updated
, তারপরে আপনি বর্তমান শাখাটি এসভিএন দিকে স্যুইচ করুন (যা "আমাদের" হয়ে যায়)
x--x--x--x--x <- for "B", now "their" during the rebase
\
\
\--y--y--y--y'--y'(*) <- SVN tracking branch updated, and branch B:
now "ours" (this is "what we now have")
, যে কমিটস আপনি কাজ করছেন তা পুনরায় প্লে করার আগে (তবে সেই রিবেসের সময় যা এখন "তাদের")
x--x..x..x..x <- old "theirs" commits, now "ghosts", available through reflogs
\
\
\--y--y--y--y'--y'--x'--x'--x'(*) <- branch B with HEAD updated ("ours")
^
|
upstream SVN tracking branch