দুটি গিট শাখার অতি সাম্প্রতিক সাধারণ পূর্বপুরুষ কীভাবে সন্ধান করবেন?
দুটি গিট শাখার অতি সাম্প্রতিক সাধারণ পূর্বপুরুষ কীভাবে সন্ধান করবেন?
উত্তর:
আপনি খুঁজছেন git merge-base। ব্যবহার:
$ git merge-base branch2 branch3
050dc022f3a65bdc78d97e2b1ac9b595a924c3f2
git log master...HEAD
--octopusসঠিক ফল পেতে তাদের পতাকা পাস করা দরকার । সুস্পষ্ট কিন্তু-ভুল git merge-base branch1 branch2 branch3আপনি একটি কমিট, কিন্তু দস্তাবেজে আলোচনা অধ্যায় বর্ণনা অনুযায়ী দেব, এটা নয় অগত্যা সব তিনটি শাখা একটি সাধারণ পূর্বপুরুষ।
git diff master...feature
আপনার বর্তমান (সম্ভবত মাল্টি-কমিট) বৈশিষ্ট্য শাখার সমস্ত নতুন কমিট দেখায়।
man git-diff নথি যা:
git diff A...B
হিসাবে একই:
git diff $(git merge-base A B) B
তবে ...টাইপ করা এবং মনে রাখা সহজ।
ডেভ দ্বারা উল্লিখিত হিসাবে , বিশেষ ক্ষেত্রে HEADবাদ দেওয়া যেতে পারে। তাই:
git diff master...HEAD
হিসাবে একই:
git diff master...
বর্তমান শাখা হলে যা যথেষ্ট feature।
অবশেষে, মনে রাখবেন যে আদেশ গুরুত্বপূর্ণ! এরকম git diff feature...masterযে পরিবর্তন হয় দেখাবে masterনা feature।
আমি আশা করি আরও গিট কমান্ডগুলি সেই সিনট্যাক্সটিকে সমর্থন করবে, তবে আমার মনে হয় না তারা তা করে। কারও কারও কাছে আলাদা শব্দার্থক শব্দ রয়েছে ...: গিট কমিট রেঞ্জের ডাবল-ডট ".." এবং ট্রিপল-ডট "..." এর মধ্যে পার্থক্য কী?
git diff master...ভিন্নর ক্ষেত্রে বিশেষ ক্ষেত্রেHEAD
git diff origin/branchname...
পূর্বের উত্তরে উল্লিখিত হিসাবে, git merge-baseকাজ করে:
$ git merge-base myfeature develop
050dc022f3a65bdc78d97e2b1ac9b595a924c3f2
তবে যদি myfeatureবর্তমান শাখাটি সাধারণ হয় তবে আপনি ব্যবহার করতে পারেন --fork-point:
$ git merge-base --fork-point develop
050dc022f3a65bdc78d97e2b1ac9b595a924c3f2
এই যুক্তিটি কেবল গিটের যথেষ্ট সাম্প্রতিক সংস্করণগুলিতে কাজ করে। দুর্ভাগ্যক্রমে এটি সর্বদা কার্যকর হয় না, এবং কেন এটি পরিষ্কার নয়। দয়া করে এই উত্তরের শেষে উল্লেখ করা সীমাবদ্ধতাগুলি দেখুন ।
সম্পূর্ণ প্রতিশ্রুতিবদ্ধ তথ্যের জন্য, বিবেচনা করুন:
$ git log -1 $(git merge-base --fork-point develop)
git version 2.14.1.windows.1। চলমান git merge-base --fork-point branch2একটি শাখা সঙ্গে (তার নিজের করে সঙ্গে) যে আমি জানি বর্তমান শাখা থেকে forked কোনো ফল নয়, যেহেতু git merge-base branch1 branch2সঠিকভাবে কাঁটাচামচ বিন্দু দেখায়। কি সমস্যা হতে পারে?
branch2এবং তারপরে চালান git merge-base --fork-point branch1।
gitkগাছের চেহারা কেমন তা দেখতে গ্রাফিক্যাল কমিট ভিউয়ার, যেমন ইত্যাদি ব্যবহার করুন । আপনি আপনার উত্তর পেতে পারে।
git merge-base branch1 branch2। তবে কি বিজোড় এটি --fork-pointকোন উপায় দেয় না। আপনি কি নিশ্চিত করেছেন যে এটি আপনার পক্ষে যেমন কাজ করেছে তেমনি কাজ করে?
gitkআপনি গ্রাফিক দুটি শাখা দেখতে পারেন সঙ্গে :
gitk branch1 branch2
এবং তারপরে দুটি শাখার ইতিহাসে সাধারণ পূর্বপুরুষের সন্ধান করা সহজ।