সেখানে নির্ধারণ করতে একটি উপায় আছে কি যখন একটি গীত শাখা সৃষ্টি করা হয়েছে? আমার রেপোতে আমার একটি শাখা রয়েছে এবং আমি এটি তৈরির কথা মনে করি না এবং ভেবেছিলাম সৃষ্টির টাইমস্ট্যাম্পটি দেখে আমার স্মৃতি জাগে।
সেখানে নির্ধারণ করতে একটি উপায় আছে কি যখন একটি গীত শাখা সৃষ্টি করা হয়েছে? আমার রেপোতে আমার একটি শাখা রয়েছে এবং আমি এটি তৈরির কথা মনে করি না এবং ভেবেছিলাম সৃষ্টির টাইমস্ট্যাম্পটি দেখে আমার স্মৃতি জাগে।
উত্তর:
ব্যবহার
গিট শো - সংক্ষিপ্ত `গিট মার্জ-বেস ফু মাস্টার``
যদি আপনি এটি গিটক ব্যবহার করে প্রসঙ্গে দেখতে চান তবে ব্যবহার করুন
gitk - all --select-কমিট = it গিট মার্জ-বেস foo মাস্টার` `
(যেখানে ফু আপনি খুঁজছেন সেই শাখার নাম of)
মন্তব্যে এবং জ্যাকব এর উত্তরে যেমন উল্লেখ করা হয়েছে , আপনার শাখাটি কনফিগার সেটিং-এ নির্ধারিত দিনের সংখ্যার চেয়ে কম gc.reflogexpire
(ডিফল্ট 90 দিনের দিন) থাকে, তারপরে আপনি কোনও শাখার রেফারেন্স কখন ছিল তা খুঁজে বের করতে আপনার রিফ্লগটি ব্যবহার করতে পারবেন প্রথম তৈরি।
নোট যা git reflog
বেশিরভাগ git log
পতাকা নিতে পারে । আরও নোট করুন যে HEAD@{0}
শৈলীর নির্বাচকগুলি কার্যকরভাবে সময়ের ধারণা এবং প্রকৃতপক্ষে তারিখের স্ট্রিং হিসাবে পরিচালনা করা হয় (একটি হ্যাকড সাজানোর পদ্ধতিতে)। এর অর্থ হ'ল আপনি পতাকাটি ব্যবহার করতে --date=local
এবং এই জাতীয় আউটপুট পেতে পারেন:
it গিট রিফ্লোগ - তারিখ = স্থানীয় 763008c হেড @ ri শুক্র আগস্ট 20 10:09:18 2010}: টানুন: দ্রুত এগিয়ে f6cec0a হেড @ ue মঙ্গল 10 আগস্ট 09:37:55 2010 pull: টানুন: দ্রুত এগিয়ে e9e70bc মাথা @ {থু ফেব্রুয়ারি 4 02:51:10 2010}: টানুন: দ্রুত এগিয়ে 836f48c হেড @ {থু জানুয়ারী 21 14:08:14 2010}: চেকআউট: মাস্টার থেকে মাস্টারে চলেছে 836f48c হেড @ {থু জানুয়ারী 21 14:08:10 2010 pull: টানুন: দ্রুত এগিয়ে যান 24 বিসি 734 হেড @ {বুধ 20 জানুয়ারী 12:05:45 2010}: চেকআউট: 74fca6a42863ffacaf7ba6f1936a9f228950f657 থেকে চলা 74fca6a হেড @ {বুধ 20 জানুয়ারী 11:55:43 2010}: চেকআউট: মাস্টার থেকে v2.6.31 এ চলেছে 24 বিসি 734 হেড @ {বুধ 20 জানুয়ারী 11:44:42 2010}: টানুন: দ্রুত এগিয়ে যান 964fe08 হেড @ {সোমবার 26 অক্টোবর 15:29:29 ২০০:29}: চেকআউট: 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 থেকে চলা 4a6908a হেড @ {সোমবার 26 অক্টোবর 14:52:12 ২০০৯ check: চেকআউট: মাস্টার থেকে v2.6.28 এ চলেছে
এটি ব্যবহার করতে বিভিন্ন সময়ে দরকারী হতে পারে --date=relative
:
it গিট রিফ্লোগ - তারিখ = আপেক্ষিক 763008c হেড @ weeks 4 সপ্তাহ আগে}: টানুন: দ্রুত এগিয়ে f6cec0a হেড @ weeks 6 সপ্তাহ আগে}: টানুন: দ্রুত এগিয়ে e9e70bc হেড @ months 8 মাস আগে pull: টানুন: দ্রুত এগিয়ে 836f48c হেড @ months 8 মাস আগে}: চেকআউট: মাস্টার থেকে মাস্টারে চলেছে 836f48c হেড @ months 8 মাস আগে pull: টানুন: দ্রুত এগিয়ে 24bc734 HEAD @ months 8 মাস আগে}: চেকআউট: 74fca6a42863ffacaf7ba6f1936a9f228950f657 থেকে মাস্টার যেতে 74fca6a হেড @ ca 8 মাস আগে}: চেকআউট: মাস্টার থেকে v2.6.31 এ চলেছে 24 বিসি 734 হেড @ months 8 মাস আগে pull: টানুন: দ্রুত এগিয়ে 964fe08 HEAD @ months 11 মাস আগে}: চেকআউট: 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 থেকে মাস্টারে চলেছে 4a6908a হেড @ months 11 মাস আগে}: চেকআউট: মাস্টার থেকে v2.6.28 এ চলেছে
একটি শেষ নোট: --all
পতাকা (যা সত্যিই গিট-রেফ্লোগ দ্বারা বোঝা একটি গিট-লগ পতাকা) সমস্ত পরিচিত রেফগুলিতে refs/
(কেবলমাত্র পরিবর্তে ) রিফ্লাগগুলি দেখায় HEAD
যা আপনাকে শাখাগুলি ইভেন্টগুলি স্পষ্টভাবে প্রদর্শন করবে:
গিট রিফ্লগ - তারিখ = স্থানীয় - সমস্ত 860e4e4 রেফ / হেড / মাস্টার @ {সান সেপ্টেম্বর 19 23:00:30 2010}: প্রতিশ্রুতিবদ্ধ: দ্বিতীয়। 17695bc রেফ / মাথা / উদাহরণ_বাংলা @ {সোমবার 20 সেপ্টেম্বর 00:31:06 2010 branch: শাখা: হেড থেকে তৈরি
gc.reflogexpire
দিনের মধ্যেই ঘটে ।
প্রো গিট § 3.1 গিট ব্রাঞ্চিং - একটি শাখা কী তা গিট শাখা আসলে কী তা সম্পর্কে একটি ভাল ব্যাখ্যা রয়েছে
গিটের একটি শাখা কেবল [এ] কমিটের হালকা ওজনের চলমান পয়েন্টার।
যেহেতু একটি শাখা কেবল একটি হালকা ওজনের পয়েন্টার, তাই গিটটির ইতিহাস বা তৈরির তারিখের স্পষ্ট ধারণা নেই। "তবে স্তব্ধ থাকুন," আমি আপনাকে বলতে শুনি, "অবশ্যই গিট আমার শাখার ইতিহাস জানে!" ভাল ধরণের.
আপনি যদি নিম্নলিখিত দুটি চালান:
git log <branch> --not master
gitk <branch> --not master
আপনি দেখতে পাবেন "আপনার শাখার ইতিহাস" এর মতো দেখতে, তবে সত্যিকার অর্থে 'শাখা' থেকে আগত কমিটের একটি তালিকা যা মাস্টার থেকে পৌঁছনীয় নয়। এটি আপনাকে যা চাইবে সেই তথ্য দেয় তবে আপনি যদি কেবল 'শাখা' মাস্টারে ফিরে একীভূত না হয়ে থাকেন এবং আপনি তৈরি করার পর থেকে কখনই মাস্টারকে 'শাখায়' একীভূত করেননি। আপনি যদি একীভূত হয়ে থাকেন তবে পার্থক্যের এই ইতিহাসটি ধসে যাবে।
ভাগ্যক্রমে রিফ্লগটিতে প্রায়শই আপনি চান এমন তথ্য থাকে যা এখানে অন্যান্য বিভিন্ন উত্তরে ব্যাখ্যা করা হয়েছে। এটা ব্যবহার কর:
git reflog --date=local <branch>
শাখার ইতিহাস দেখাতে। এই তালিকার সর্বশেষ এন্ট্রিটি (সম্ভবত) আপনি যে শাখাটি তৈরি করেছেন সেটি হল।
যদি শাখাটি মুছে ফেলা হয় তবে 'শাখা' আর কোনও বৈধ গিট শনাক্তকারী নয়, তবে আপনি এর পরিবর্তে এটি ব্যবহার করতে পারেন, যা আপনি যা চান তা পেতে পারে:
git reflog --date=local | grep <branch>
অথবা একটি উইন্ডোজ সেমিডি শেল:
git reflog --date=local | find "<branch>"
মনে রাখবেন যে রিফ্লগ দূরবর্তী শাখাগুলিতে কার্যকরভাবে কাজ করবে না, কেবলমাত্র আপনি স্থানীয়ভাবে কাজ করেছেন।
gc.reflogexpire
দিনের চেয়ে বেশি পুরানো না হয়ে থাকেন ততক্ষণ আপনি কেবল এর জন্য রিফ্লোগ ব্যবহার করতে পারবেন , যেমন এই উত্তর এবং এই উত্তরে নির্দেশিত হয়েছে ।
git reflog --date=local <branch>
প্রথমত, যদি আপনি শাখাটি কিছু gc.reflogexpire
দিনের মধ্যে তৈরি করা হয় (ডিফল্ট 90 দিন, অর্থাৎ প্রায় 3 মাস), আপনি ব্যবহার করতে পারেন git log -g <branch>
বা git reflog show <branch>
রিফ্লোগে প্রথম প্রবেশের সন্ধান করতে পারেন যা সৃষ্টি ইভেন্ট হবে এবং নীচের মতো দেখতে (এর জন্য git log -g
):
Reflog: <branch>@{<nn>} (C R Eator <creator@example.com>)
Reflog message: branch: Created from <some other branch>
আপনি কারা একটি শাখা তৈরি করেছেন, কয়টি অপারেশন আগে পেয়েছিলেন এবং কোন শাখা থেকে (ভাল, এটি কেবল "হেড থেকে তৈরি করা" হতে পারে, যা খুব বেশি সাহায্য করে না)।
মাইসেসপ তার উত্তরে যা বলেছিলেন তা- ই ।
দ্বিতীয়ত, আপনার যদি দীর্ঘকাল ধরে শাখা থাকে gc.reflogexpire
এবং আপনি চালিত হন git gc
(বা এটি স্বয়ংক্রিয়ভাবে চালিত হয়েছিল) তবে আপনাকে যে শাখাটি তৈরি করা হয়েছিল তার সাথে আপনাকে সাধারণ পূর্বপুরুষের সন্ধান করতে হবে। কনফিগারেশন ফাইলটি একবার দেখুন, সম্ভবত branch.<branchname>.merge
এন্ট্রি রয়েছে যা আপনাকে জানাবে যে এটি কোন শাখার উপর ভিত্তি করে।
যদি আপনি জানেন যে প্রশ্নে থাকা শাখাটি মাস্টার শাখা থেকে তৈরি করা হয়েছিল (মাস্টার শাখা থেকে কাঁটাচামচ করা), উদাহরণস্বরূপ, আপনি সাধারণ পূর্বপুরুষকে দেখতে নিম্নলিখিত আদেশটি ব্যবহার করতে পারেন:
git show $(git merge-base <branch> master)
আপনি git show-branch <branch> master
বিকল্প হিসাবেও চেষ্টা করতে পারেন ।
এই কি gbacon তার জবাবে বলেন ।
আমি এখনও এটির জন্য গিট কমান্ড সম্পর্কে নিশ্চিত নই, তবে আমি মনে করি আপনি এগুলি রিফ্লাগগুলিতে খুঁজে পেতে পারেন।
.git/logs/refs/heads/<yourbranch>
আমার ফাইলগুলিতে একটি ইউনিক্স টাইমস্ট্যাম্প রয়েছে বলে মনে হয়।
আপডেট: লগগুলি প্রিন্ট করার সময় কমিটের ইতিহাসের পরিবর্তে রিফ্লগ ইতিহাস ব্যবহার করার বিকল্প রয়েছে বলে মনে হয়:
git log -g
আপনি এই লগটি অনুসরণ করতে পারেন, যখন আপনি শাখাটি তৈরি করেছিলেন ফিরে যান। git log
প্রতিশ্রুতিবদ্ধতার তারিখটি প্রদর্শন করছে, যদিও আপনি যে ক্রিয়াটি পুনঃব্লগের মধ্যে প্রবেশ করেছে তার তারিখটি নয়। উপরের পথে প্রকৃত রিফ্লোগটি ছাড়া আমি এখনও এটি পাইনি n't
এটা চেষ্টা কর
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)'
%
আগে প্রয়োজন হতে পারে(refname)
| cut -c 5- | sort -r |
এবং তারপরে মাসের জন্য গ্রেপের মাধ্যমে পাইপ দিয়েছিলাম, আমাকে কম-বেশি, একটি তালিকা লিন বিপরীত কালানুক্রমিক ক্রম দিয়ে।
--sort='-committerdate'
(বিপরীত কালানুক্রমিক ক্রমের জন্য কমিটরডেটের আগে '-' নোট করুন)।
ব্যবহার করুন:
git reflog
বর্তমান ফোল্ডারে আপনার সংগ্রহস্থলের সমস্ত জীবিত চক্রটি দেখানোর জন্য। প্রথমে প্রদর্শিত শাখার নাম (নীচে থেকে উপরে) তৈরি করা উত্স।
855a3ce HEAD@{0}: checkout: moving from development to feature-sut-46
855a3ce HEAD@{1}: checkout: moving from feature-sut-46 to development
855a3ce HEAD@{2}: checkout: moving from feature-jira35 to feature-sut-46
535dd9d HEAD@{3}: checkout: moving from feature-sut-46 to feature-jira35
855a3ce HEAD@{4}: checkout: moving from development to feature-sut-46
855a3ce HEAD@{5}: checkout: moving from feature-jira35 to development
535dd9d HEAD@{6}: commit: insert the format for vendor specific brower - screen.css
855a3ce HEAD@{7}: checkout: moving from development to feature-jira35
855a3ce HEAD@{8}: checkout: moving from master to development
তার মানে:
শাখা উন্নয়ন মাস্টার থেকে তৈরি (চেকআউট-বি) তৈরি করা হয়
শাখা বৈশিষ্ট্য- jira35 তৈরি করা হয়েছে (চেকআউট-বি) থেকে উন্নয়ন
শাখা বৈশিষ্ট্য- jira-sut-46 উন্নয়ন থেকে তৈরি করা হয়েছে (চেকআউট-বি)
এই থ্রেডটি খুঁজে পাওয়ার আগেই আমি এটি নিয়ে এসেছি।
git reflog show --date=local --all | sed 's!^.*refs/!refs/!' | grep '/master' | tail -1
git reflog show --date=local --all | sed 's!^.*refs/!refs/!' | grep 'branch:'
এ থেকে জানা যায় কমান্ড শাখার নির্মিত তারিখ dev
থেকেmain
$git reflog show --date=iso dev
$7a2b33d dev@{2012-11-23 13:20:28 -2100}: branch: Created from main
আপনি যদি সব শাখার জন্য বিশদ পেতে চান
for i in `git branch -r | tail -n +2 `;do git log --reverse $i|grep -A 2 -B 2 `echo $i | awk -F'origin/' '{print $2}'` |head -n 4; done
আমি সবচেয়ে ভাল উপায়টি খুঁজে পেয়েছি: আমি সর্বদা এইভাবে তৈরি সর্বশেষ শাখাটি পরীক্ষা করে দেখি
git for-each-ref --sort=-committerdate refs/heads/
অ্যান্ড্রু সোহনের উত্তরের সাথে মিলিত ( https://stackoverflow.com/a/14265207/1929406 )
branchcreated=$(git reflog show --date=format:'%Y-%m-%d %H:%M:%S' --all | sed 's!^.*refs/!refs/!' | grep '/master' | tail -1| cut -d'{' -f 2| cut -d'}' -f 1 | xargs)
echo $branchcreated
এটি আমার জন্য এটি করেছে: (10 বছর পরে)
git log [--remotes] --no-walk --decorate
যেহেতু শাখা তৈরির সময় কোনও সঞ্চিত তথ্য নেই, তাই এটি যা করে তা প্রতিটি শাখার ( --no-walk
) এর প্রথম কমিট প্রদর্শন করা হয় , যার মধ্যে কমিটের তারিখ অন্তর্ভুক্ত থাকে। ব্যবহার--remotes
দূরবর্তী শাখাগুলির জন্য , বা স্থানীয় শাখাগুলির জন্য এটি বাদ দিন।
যেহেতু আমি অন্য একটি তৈরির আগে একটি শাখায় কমপক্ষে একটি প্রতিশ্রুতিবদ্ধ করি, এটি ডকুমেন্টেশনের উদ্দেশ্যে আমাকে কয়েক মাসের শাখা তৈরি (এবং বৈশিষ্ট্যটি ডেভ-স্টার্ট) ফিরিয়ে আনার অনুমতি দেয়।
উৎস: AnoE stackexchange উপর