বেশ গিট শাখা গ্রাফ


1385

আমি দেখেছি কিছু বই এবং নিবন্ধগুলিতে গিট শাখা এবং কমিটগুলির কিছু সত্যই সুন্দর দেখাচ্ছে s আমি কীভাবে গিট ইতিহাসের উচ্চমানের মুদ্রণযোগ্য চিত্রগুলি তৈরি করতে পারি?


4
আমি গ্রাফিজ গ্রাফ তৈরি করতে পাইথন স্ক্রিপ্ট তৈরি করেছি! এটা দেখ. github.com/chode/git-راف
স্টিফান বেচেটার

4
আপনি যদি উচ্চ-মানের এবং মুদ্রণযোগ্য চান, তবে আমার সরঞ্জাম ( বিট-বুস্টার.com / গ্রাফ। Html ) "গিট লগ" কে এসভিজিতে রূপান্তর করে। আরও তথ্যের জন্য, আমার উত্তর দেখুন
জি। সেলভি ডেভিস

2
আপনি কি নিজের গিট ইতিহাস - বা - একটি চমত্কার সরঞ্জাম যা সুন্দর "গিট শাখা" আঁকতে একটি উপায় আছে ভিজ্যুয়ালাইজ করার জন্য একটি সরঞ্জাম খুঁজছেন?
উরি আব্রামসন


5
আমি নির্দেশিত-অ্যাসাইক্লিক-গ্রাফগুলি ট্যাগটি মুছে ফেলতাম কারণ এটি এই প্রশ্নের সাথে অপ্রাসঙ্গিক
মাকসিম দিমিত্রিভ

উত্তর:


1842

আপডেট: এই উত্তরটি তার প্রাপ্যের চেয়ে অনেক বেশি মনোযোগ পেয়েছে। এটি মূলত পোস্ট করা হয়েছিল কারণ আমার মনে হয় গ্রাফিকগুলি দেখতে সুন্দর দেখাচ্ছে এবং এটি কোনও প্রকাশনের জন্য ইলাস্ট্রেতে আঁকতে পারে - এর চেয়ে ভাল কোনও সমাধান নেই। তবে এখন এই কিউ-তে আরও অনেক প্রযোজ্য উত্তর রয়েছে, যেমন ফ্র্যাক্জস , যুববস , বা হ্যারি লি'র মতো ! দয়া করে তাদের উপরে যান !!

আপডেট 2: আমি গিট প্রশ্নে ভিজ্যুয়ালাইজিং ব্রাঞ্চ টোপোলজির এই উত্তরের একটি উন্নত সংস্করণ পোস্ট করেছি , কারণ এটি সেখানে আরও বেশি উপযুক্ত। সেই সংস্করণটিতে অন্তর্ভুক্ত রয়েছে lg3, যা লেখক এবং প্রতিশ্রুতিবদ্ধ উভয় তথ্য দেখায়, তাই আপনার সত্যই এটি পরীক্ষা করা উচিত। এই উত্তরটি historicalতিহাসিক (& rep, আমি স্বীকার করব) কারণে ছেড়ে দিচ্ছি, যদিও আমি সত্যিই কেবল এটি মুছতে লোভী হয়েছি।

আমার 2 ¢ : আমি সাধারণত দুটি ~/.gitconfigফাইল রাখি আমার দুটি উপাধি রয়েছে :

[alias]
lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
lg = !"git lg1"

git lg/ git lg1দেখে মনে হচ্ছে:
গিট এলজি 1

এবং এর git lg2মতো দেখাচ্ছে:
গিট এলজি 2


35
হ্যাঁ, আমি করি. সাধারণ এবং উজ্জ্বল / গা bold় বর্ণগুলি: কালো #202020/ #555555, লাল: #5d1a14/ #da4939, সবুজ: #424e24/ #a5c261, হলুদ: #6f5028/ #ffc66d, নীল: #263e4e/ #6d9cbe, ম্যাজেন্টা: #3e1f50/ #a256c7, সায়ান: #234e3f/ #62c1a1, এবং সাদা: #979797/ #ffffff
স্লিপ ডি থম্পসন

3
@ টার্বো: আমার জন্য, রঙগুলি আমার টার্মিনাল অ্যাপ্লিকেশন (টার্মিনাল.অ্যাপ) এর প্রোফাইল সেটিংসে পরিবর্তনযোগ্য। আপনি যে টার্মিনাল অ্যাপটি ব্যবহার করছেন তা প্রদত্ত এএনএসআই রঙের জন্য কোন রঙগুলি প্রদর্শিত হবে তা পরিবর্তন করতে সমর্থন করতে পারে বা নাও করতে পারে। এছাড়াও, ড্যাশ (এম ড্যাশ, নির্ভুলভাবে) বিকল্প-শিফট- [হাইফেন-বিয়োগ কী) দ্বারা তৈরি করা হয়েছিল। আমি মনে করি আমি ভুলভাবে ধরে নিয়েছি যে সমস্ত বর্তমান প্ল্যাটফর্মগুলি ইউনিকোডের সাথে আপ-টু-স্নফ ছিল।
স্লিপ ডি থম্পসন

3
আপনার --date=relativeএবং --abbrev-commitঅপ্রয়োজনীয় কারণ আপনি স্পষ্টভাবে ব্যবহার করেন %crএবং %hযথাক্রমে।
ধূসরঃ

6
আমি সুন্দর রঙ পেতে %C(auto)পুনরায় নামগুলিতে ( %d) পরিবর্তনকারী যুক্ত করব। দেখুন stackoverflow.com/questions/5889878/color-in-git-log/...
জোসেফ Eisl

2
দুর্দান্ত উত্তর। আমিlg = log --graph --abbrev-commit --decorate --format=format:'%C(yellow)%h%C(reset)%C(auto)%d%C(reset) %C(normal)%s%C(reset) %C(dim white)%an%C(reset) %C(dim blue)(%ar)%C (reset)' --all
ক্রেগ পি। মোটলিন

1196

এখানে বেশিরভাগ উত্তর দুর্দান্ত, তবে তাদের জন্য যেগুলি কেবলমাত্র কোনও এলিয়াস বা অতিরিক্ত কিছু সেটআপ না করেই বিন্দু উত্তরের একটি সহজ একটি লাইন চান, এটি এখানে:

git log --all --decorate --oneline --graph

প্রত্যেকেই সারাক্ষণ একটি কাজ করে না git log, তবে যখন আপনার এটি প্রয়োজন তখন কেবল মনে রাখবেন:

" একটি কুকুর " = Git লগ - একটি করব - ecorate - neline - Raph

এখানে চিত্র বর্ণনা লিখুন


252
git config --global alias.adog "log --all --decorate --oneline --graph"
fracz

4
আমি --allএতক্ষণ ধরে খুঁজছিলাম আমি কাঁদতে চলেছি (টি টি) আপনাকে ধন্যবাদ!
ফিলিপ জেরার্ড

2
--নলাইনটি গিট ১.6.৩ এ প্রবর্তিত হয়েছিল: github.com/git/git/blob/… - ব্যাখ্যা = অনলাইন 1.6.3 এর আগে গিট সংস্করণগুলির সাথে কাজ করবে
প্যাট

13
ভাল উত্তর। একে হালকা মনে রাখার জন্য ধন্যবাদ
টোবিয়াস

4
আমি মনে করি "--decorate" এখন ডিফল্টরূপে অন্তর্ভুক্ত। তবে আমি এইভাবে সংক্ষিপ্ত রূপটি মনে রাখব!
জোশিয়ার ইয়্ডার-ডিএ্যাকটিভ বাদে ..

378

পাঠ্য আউটপুট জন্য আপনি চেষ্টা করতে পারেন:

git log --graph --abbrev-commit --decorate --date=relative --all

বা:

git log --graph --oneline --decorate --all

বা: ডিএজি গ্রাফ আঁকার জন্য এখানে একটি গ্রাভিউজ ওরফে রয়েছে।

আমি ব্যক্তিগতভাবে ব্যবহার করি gitx, gitk --allএবং gitnub


14
আমি যোগ করতে হবে --abbrev-commit --decorate, এবং তারপর এটি নিখুঁত!
অসমমিতি

6
--abbrev-কমিট - ওলাইন দ্বারা বোঝানো হয়েছে, না?
দ্বীনিমান

4
@ ডুইম্যানম্যান হ্যাঁ আপনি --abbrev-commitযদি ব্যবহার করেন না--oneline
থমাস

2
মনে হচ্ছে যে আপনার দ্বিতীয় লাইনে যুক্তি অনর্থক। আমি লগতে দেখানো কোন তারিখ দেখতে পাচ্ছি। git log --graph --oneline --decorate --date=relative --all--date
লারনার ঝাং


253

Gitographic.js কোনও সংগ্রহশালা ছাড়াই সুন্দর গিট শাখা আঁকতে দেয় allows কেবলমাত্র একটি জাভাস্ক্রিপ্ট কোড লিখুন যা আপনার শাখাগুলি কনফিগার করে এবং কমিট করে এবং এটি ব্রাউজারে রেন্ডার করে।

var gitGraph = new GitGraph({
   template: "blackarrow",
   mode: "compact",
   orientation: "horizontal",
   reverseArrow: true
});

var master = gitGraph.branch("master").commit().commit();
var develop = gitGraph.branch("develop").commit();
master.commit();
develop.commit().commit();
develop.merge(master);

নমুনা গ্রাফ Gitographic.js দিয়ে উত্পন্ন

বা metroটেমপ্লেট সহ:

GitGraph.js মেট্রো থিম

বা প্রতিশ্রুতিবদ্ধ বার্তা, লেখক এবং ট্যাগ সহ:

প্রতিশ্রুতিবদ্ধ বার্তা সহ গিটগ্রাফ

এটি জেএসফিডেলের সাথে পরীক্ষা করুন

এটি গিট গ্রাফার দ্বারা @ বিএসআরার মাধ্যমে তৈরি করুন।


3
হ্যাঁ, এটি সম্পূর্ণ আশ্চর্যজনক! এটিকে পোস্ট করেছেন jsfiddle.net/guan1oz1 যাতে আপনি এখনই এটি পরীক্ষা করে দেখতে পারেন test
বার্কাস

14
তীরগুলি পিতামাতাদের দিকে নির্দেশ করা উচিত, তবে তা বাচ্চাদের দিকে নয়।
jub0bs

4
@ যুবস: ভালো কথা। গিটকে বোঝার চেষ্টা করা মানুষের পক্ষে এটি একটি সাধারণ বাধা: তারা উত্তরাধিকারের পরিবর্তে সময়ের ক্রম সম্পর্কে চিন্তা করে। এটি পরিষ্কার করে দেওয়া যে (প্রায়) গিটের সমস্ত কিছু পূর্বের কোনও কিছুর সাথে তুলনামূলকভাবে অন্যান্য সমস্ত টুকরোগুলি জায়গায় পড়তে সহায়তা করে।
স্লিপ ডি। থম্পসন

6
দস্তাবেজগুলি থেকে তীরের দিকনির্দেশ সম্পর্কে: * @ পরিম {বুলিয়ান। [অপশনস.রেভারস অ্যারো = মিথ্যা] - পূর্বসূরীদের দিকে তীর চিহ্ন করুন যদি সত্য হয়
স্কট

2
এফওয়াইআই, এই পোস্টটি দেখার পরে এবং গিটগ্রাফ.জেএস নিয়ে খেলার পরে, আমি সিদ্ধান্ত নিয়েছিলাম যে একটি ছোট্ট সরঞ্জাম তৈরি করব যা মূলত একটি ইউআইকে gitراف.js এ রাখে। এটি সমাপ্ত হয়নি, এবং ইউআই এটি যেখানে এখনও আমি এটি চাই তা নয়, তবে অবদানগুলি স্বাগত! একবার দেখুন: github.com/bsara/git- গ্রিফার
bsara

123

টিকজেড এবং পিজিএফ শীর্ষে নির্মিত , gitdagsএটি একটি সামান্য লেটেক্স প্যাকেজ যা আপনাকে অনায়াসে ভেক্টর-গ্রাফিকগুলি কমিট গ্রাফ তৈরি করতে দেয় এবং আরও অনেক কিছু করে।

বিদ্যমান সংগ্রহস্থলের কমিট গ্রাফের স্বয়ংক্রিয় উত্পন্নকরণের উদ্দেশ্য নয়gitdags ; এটি তৈরি করা গ্রাফগুলি কেবলমাত্র শিক্ষামূলক উদ্দেশ্যে

ASCII কমিট গ্রাফের বিকল্প হিসাবে আমি গিট প্রশ্নের উত্তরগুলির জন্য আমার গ্রাফ তৈরি করতে প্রায়ই এটি ব্যবহার করি:

একটি সাধারণ পুনর্বাসনের প্রভাবগুলি প্রদর্শন করে এমন একটি গ্রাফের উদাহরণ এখানে:

এখানে চিত্র বর্ণনা লিখুন

\documentclass{article}

\usepackage{subcaption}
\usepackage{gitdags}

\begin{document}

\begin{figure}
  \begin{subfigure}[b]{\textwidth}
    \centering
    \begin{tikzpicture}
      % Commit DAG
      \gitDAG[grow right sep = 2em]{
        A -- B -- { 
          C,
          D -- E,
        }
      };
      % Tag reference
      \gittag
        [v0p1]       % node name
        {v0.1}       % node text
        {above=of A} % node placement
        {A}          % target
      % Remote branch
      \gitremotebranch
        [origmaster]    % node name
        {origin/master} % node text
        {above=of C}    % node placement
        {C}             % target
      % Branch
      \gitbranch
        {master}     % node name and text 
        {above=of E} % node placement
        {E}          % target
      % HEAD reference
      \gitHEAD
        {above=of master} % node placement
        {master}          % target
    \end{tikzpicture}
    \subcaption{Before\ldots}
  \end{subfigure}

  \begin{subfigure}[b]{\textwidth}
    \centering
    \begin{tikzpicture}
      \gitDAG[grow right sep = 2em]{
        A -- B -- { 
          C -- D' -- E',
          {[nodes=unreachable] D -- E },
        }
      };
      % Tag reference
      \gittag
        [v0p1]       % node name
        {v0.1}       % node text
        {above=of A} % node placement
        {A}          % target
      % Remote branch
      \gitremotebranch
        [origmaster]    % node name
        {origin/master} % node text
        {above=of C}    % node placement
        {C}             % target
      % Branch
      \gitbranch
        {master}      % node name and text 
        {above=of E'} % node placement
        {E'}          % target
      % HEAD reference
      \gitHEAD
        {above=of master} % node placement
        {master}          % target
    \end{tikzpicture}
    \subcaption{\ldots{} and after \texttt{git rebase origin/master}}
  \end{subfigure}
  \caption{Demonstrating a typical \texttt{rebase}}
\end{figure}

\end{document}

1
@ এটি দুর্দান্ত দেখাচ্ছে! এটি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে আমি কয়েকটি লাইনও চাই: একটি উইন্ডোজ ব্যবহারকারী বিবেচনা করুন যার কোনও ল্যাটেক্স ইনস্টল নেই। স্ক্র্যাচ থেকে গ্রাফ কীভাবে উত্পাদন করবেন?
ভোনসি

1
@ ভনসি আমি নিশ্চিত নই, তবে আপনি যদি ল্যাকটেক্স ইনস্টল করতে না চান তবে আপনি শেয়ার গ্রাহক এবং রাইটল্যাকটেক্সে আপনার গ্রাফগুলি এবং পছন্দগুলি তৈরি করতে সক্ষম হতে পারেন । আমার আরও সময় :)
পেলে

এটি দুর্দান্ত জিনিস! আমি এক পর্যায়ে একটি টিউটোরিয়াল লিখব, তবে আপাতত, আমি কেবল উল্লেখ করতে চেয়েছিলাম যে আপনি ডকুমেন্টক্লাস স্ট্যান্ডেলোন ব্যবহার করে আপনার গ্রাফগুলি পোস্ট-প্রক্রিয়া করতে পারেন (আমি ফসলের বৈশিষ্ট্যটি ব্যবহার করি), latex input.texডিভি তৈরি করতে ব্যবহার করতে পারি এবং শেষ পর্যন্ত ব্যবহার করতে পারি dvisvgm input.dviস্বচ্ছতার সাথে একটি এসভিজি উত্পাদন করতে। এসএনজি থেকে পিএনজির মতো রাস্টার ফর্ম্যাটে রূপান্তর করা এর সাথে যথেষ্ট সহজ convert -antialias -density 300 -background none input.svg output.png। যাইহোক, এই চিত্রগুলি সম্পূর্ণ স্বচ্ছতার সাথে আশ্চর্যজনক দেখাচ্ছে । ফন্ট ইস্যুতে এখনও কাজ করা হচ্ছে ... i.imgur.com/1Xu2Ry5.png
vmrob

5
এই কাজটি পেতে আমার কিছুটা সময় লেগেছে তাই আমি উবুন্টু 14.04-এ স্ক্র্যাচ থেকে গিটডাগগুলি
ক্রিসফ্রিমন

1
@ আন্ড্রেয়া পোলসি একটি সংযুক্তির উদাহরণের জন্য github.com/Jubobs/gitdags/issues/3 দেখুন । এর জন্য ডকুমেন্টেশন gitdagsচলছে!
jub0bs

79

গিটগ হ'ল জিনোমের গিটক এবং গিটএক্সের ক্লোন (এটি কে-ডি-ই ইত্যাদিতে কাজ করে) যা একটি সুন্দর রঙিন গ্রাফ দেখায়।

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

এটি বড় সংগ্রহস্থল এবং জটিল নির্ভরতা গ্রাফগুলির সাথে সূক্ষ্মভাবে কাজ করে।

নমুনার স্ক্রিনশটগুলি, লিনাক্স-গিট এবং লিনাক্স-2.6 সংগ্রহস্থলগুলি দেখায়:

লিনাক্স-Git

লিনাক্স-2.6


60

উত্সট্রি সত্যিই ভাল। এটি একটি ভাল চেহারা এবং মাঝারি আকারের ইতিহাস এবং শাখা গ্রাফের মুদ্রণ করে না: (নীচে কেবল কয়েকটি শাখা দেখতে পরীক্ষামূলক গিট প্রকল্পে করা হয়)। উইন্ডোজ 7+ এবং ম্যাক ওএস এক্স 10.6+ সমর্থন করে।

এখানে চিত্র বর্ণনা লিখুন

http://www.sourcetreeapp.com/


এটি অ্যাপ স্টোরেও উপলব্ধ, তাই আপডেটের স্বয়ংক্রিয়ভাবে কাজ করা উচিত।
ওয়েবওরকোড

আমি সোর্সট্রি এর গ্রাফ পছন্দ করি, তবে আমি কমান্ড লাইনটি ব্যবহার করব এবং সোর্সট্রি এর ডিফল্ট সবসময় আমার রেপোতে গণ্ডগোল করে।
SgtPooki

সোর্স ট্রি আপনাকে জোর দিয়েছিল যে আপনি আটলাশিয়ান অ্যাকাউন্ট তৈরি করবেন (বা আপনার গুগল অ্যাকাউন্ট ব্যবহার করুন এবং অ্যাটলিশিয়ানকে আপনার ইমেল এবং প্রোফাইলের তথ্য পেতে কিছু অনুমতি দিন), এবং ম্যাকে ইনস্টল করার পরে (ওএস এক্স এল ক্যাপিটান বনাম 10.11.5) এটি 'ক্লোনিং' পদক্ষেপে ব্যর্থ হয়েছে: "মারাত্মক: পথের জন্য গিটমডিউলগুলিতে কোনও উপ-মডিউল ম্যাপিং পাওয়া যায় নি 'পথের জন্য ছেড়ে দেওয়া হয়েছে'" এবং একটি আশ্চর্যের সতর্কতা: "টেমপ্লেটগুলি পাওয়া যায় নি / usr / স্থানীয় / গিট / শেয়ার / গিট-কোর / টেম্পলেট"। খুব অস্পষ্ট বার্তা, এত দুর্দান্ত নয়।
দিমিত্রি শেভকপলিয়াস

3
এবং আনইনস্টল করার পরে আপনার পূর্বে প্রদত্ত গুগল সুরক্ষা সুবিধাগুলি পরিষ্কার করতে ভুলবেন না: myaccount.google.com সুরক্ষা -> সংযুক্ত অ্যাপস এবং সাইটগুলি -> আপনার অ্যাকাউন্টে সংযুক্ত অ্যাপ্লিকেশনগুলি -> অ্যাপ্লিকেশনগুলি পরিচালনা করুন
দিমিত্রি শেভকপলিয়াস

60

আমি কেবল একটি সরঞ্জাম লিখেছি যা এইচটিএমএল / ক্যানভাস ব্যবহার করে চমত্কার গিট গ্রাফ তৈরি করতে পারে।

এবং একটি jQuery প্লাগইন সরবরাহ করুন যা এটি ব্যবহার করা সহজ করে।

[গিথুব] https://github.com/tclh123/commits- راف

পূর্বরূপ:

প্রিভিউ


দেখতে দুর্দান্ত লাগছে, এই গ্রাফটি আঁকতে আপনি কীভাবে প্রিফর্মেটেড ডেটা পাবেন?
ওলগা

3
@ ওলগা আমি কেবলমাত্র আমার রেপোতে ব্যাকএন্ড কোড যুক্ত করব। আপনি এটি গিথুব এ দেখতে পারেন ।
হ্যারি লি

56

git-forestআমি এক বছরেরও বেশি সময় ধরে ব্যবহার করছি একটি দুর্দান্ত পার্ল স্ক্রিপ্ট এবং আমি git logসরাসরি কমান্ডটি আর খুব সহজেই ব্যবহার করি ।

এই স্ক্রিপ্টটি সম্পর্কে আমি কিছু পছন্দ করি:

  • এটি গ্রাফের রেখাগুলিকে আরও অবিচ্ছিন্ন চেহারা দেওয়ার জন্য গ্রাফের রেখাগুলি আঁকতে ইউনিকোড অক্ষর ব্যবহার করে।
  • আপনি --reverseগ্রাফ আউটপুটের সাথে একত্রিত করতে পারেন , যা নিয়মিত git logকমান্ড দিয়ে সম্ভব নয় ।
  • git logকমিটের তালিকাটি দখল করতে এটি অভ্যন্তরীণভাবে ব্যবহার করে, সুতরাং আপনি যে সমস্ত বিকল্পগুলি পাস করেছেন git logসেগুলিও এই স্ক্রিপ্টে পাস করা যেতে পারে।

git-forestনিম্নরূপে আমার একটি নাম আছে :

[alias]
tree = "forest --pretty=format:\"%C(red)%h %C(magenta)(%ar) %C(blue)%an %C(reset)%s\" --style=15 --reverse"

টার্মিনালে আউটপুটটি দেখতে কেমন:

এখানে চিত্র বর্ণনা লিখুন


3
@ void.pointer - হ্যাঁ এটি হবেনা কারণ গিট-ফরেস্ট একটি পার্ল স্ক্রিপ্ট এবং এতে পার্ল মডিউল নির্ভরতা রয়েছে। ইনস্টল করা প্রয়োজনীয় পার্ল মডিউলগুলি ইনস্টল করে সাইগউইনের অধীনে গিটটি চালানো সেরা বিকল্প হতে পারে যদি আপনি উইন্ডোতে সত্যিই এটি চান তবে :)
টাক্সডুড

1
বাহ, সেই রেপোতে প্রচুর দুর্দান্ত সরঞ্জাম রয়েছে। ধন্যবাদ!
Eldelshell

1
Win under এর অধীনে @MINGW (MSYS) পুরোপুরি সূক্ষ্মভাবে কাজ করে; সিপিএএনএম ইনস্টল করুন; তারপরে Git.pm; একটি উপনাম তৈরি করুন এবং আপনি যেতে প্রস্তুত।
সেক্টর

আপনি যে খুব সুন্দর টার্মিনাল এমুলেটর ব্যবহার করেন তা কী? আমি গ্রাফিকাল প্রম্পট সূচক জিনিস পছন্দ করি।
এনএইচ।

কীভাবে এই "লিপি" ইনস্টল করবেন? আমি উবুন্টুতে আছি
ব্যবহারকারী 13107

50

গিট লগগুলি সুন্দর এসভিজি গ্রাফগুলিতে রূপান্তর করার জন্য আমি একটি ওয়েব সরঞ্জাম লিখেছিলাম: বিট-বুস্টার - অফলাইন কমিট গ্রাফ অঙ্কন সরঞ্জাম

git log --pretty='%h|%p|%d'সরাসরি সরঞ্জাম থেকে আউটপুট আপলোড করুন এবং তারপরে "ডাউনলোড গ্রাফ.এসভিজি" লিঙ্কটিতে ক্লিক করুন।

সরঞ্জামটি খাঁটি-ক্লায়েন্ট-দিক, এবং তাই আপনার গিট ডেটার কোনওটিই আমার সার্ভারের সাথে ভাগ করা যায় না। আপনি স্থানীয়ভাবে এইচটিএমএল + জেএস সংরক্ষণ করতে এবং "ফাইল: ///" ইউআরএল ব্যবহার করে এটি চালাতে পারেন। উবুন্টু 12.04-এ ক্রোম 48 এবং ফায়ারফক্স 43-এ যাচাই করা হয়েছে।

এটি এমন কোনও এইচটিএমএল জেনারেট করে যা কোনও পৃষ্ঠাতে সরাসরি পোস্ট করা যায় (ব্লগস্পট ব্লগিং ইঞ্জিন সহ!)। কিছু ব্লগ পোস্ট এখানে দেখুন:

http://bit-booster.blogspot.ca/

এখানে সরঞ্জাম দ্বারা উত্পাদিত একটি নমুনা এইচটিএমএল ফাইলের একটি স্ক্রিনশট রয়েছে:

http://bit-booster.com/ographic.html (সরঞ্জাম)


1
@Jay দেখা রঙ যে বিশেষ শাখার খাঁজ স্তর প্রতিফলিত, এবং শাখা অন্য কলামে উপর সরানো পারে যে এবং সেইজন্য color.s পরিবর্তন
Thorbjørn Ravn অ্যান্ডারসনকে

44

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

jquery নমুনা

গিট-বিগ-পিকচার এবং ব্রাঞ্চমাস্টার একই ধরণের সরঞ্জাম যা ট্যাগ, শাখা, মার্জ ইত্যাদি কীভাবে সম্পর্কিত তা কেবল প্রদর্শিত করে গ্রাফের কেবলমাত্র উচ্চ-স্তরের কাঠামো দেখানোর চেষ্টা করে।

এই প্রশ্নের আরও কিছু বিকল্প রয়েছে।


2
আমি এটি চেষ্টা করেছিলাম, কিন্তু আমাদের রেপোর জন্য আউটপুট (42 টি শাখা, 175 ট্যাগ, 42.000 কমিট) দিয়ে সঠিকভাবে কাজ করার জন্য বিন্দুটি পাইনি ... খুব খারাপ ... আমি ঠিক তাই খুঁজছিলাম!
জাভিয়ের নোডেট

1
@ জাভিয়ারনোডেট, যদি আপনার রেপো সর্বজনীন হয় এবং / অথবা আপনার কোনও ত্রুটির বার্তা থাকে ইত্যাদি, দয়া করে গিটহাবটিতে একটি সমস্যা ফাইল করুন। ধন্যবাদ!
ম্যাট ম্যাকহেনরি

38

আমি তিনটি কাস্টম কমান্ড যোগ করা হয়েছে: git tree, git streeএবং git vtree। আমি তাদের উপর যেতে হবে যে ক্রম।

[alias]
    tree = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset) %C(auto)%d%C(reset)\n         %C(black)[%cr]%C(reset)  %x09%C(black)%an: %s %C(reset)'

এখানে চিত্র বর্ণনা লিখুন

সঙ্গে git streeএবং git vtreeবিন্যাস সাহায্য করার জন্য আমি ব্যবহার করতে ব্যাশ।

[alias]
    logx = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset)+%C(dim black)(%cr)%C(reset)+%C(auto)%d%C(reset)++\n+++       %C(bold black)%an%C(reset)%C(black): %s%C(reset)'
    stree = !bash -c '"                                                                             \
        while IFS=+ read -r hash time branch message; do                                            \
            timelength=$(echo \"$time\" | sed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\");     \
            timelength=$(echo \"16+${#time}-${#timelength}\" | bc);                                 \
            printf \"%${timelength}s    %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"\";          \
        done < <(git logx && echo);"'

git_stree


[alias]
    logx = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset)+%C(dim black)(%cr)%C(reset)+%C(auto)%d%C(reset)++\n+++       %C(bold black)%an%C(reset)%C(black): %s%C(reset)'
    vtree = !bash -c '"                                                                             \
        while IFS=+ read -r hash time branch message; do                                            \
            timelength=$(echo \"$time\" | sed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\");     \
            timelength=$(echo \"16+${#time}-${#timelength}\" | bc);                                 \
            printf \"%${timelength}s    %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"$message\";  \
        done < <(git logx && echo);"'

git_vtree


সম্পাদনা: এটি গিট সংস্করণ 1.9a এর সাথে কাজ করে। রঙের মান 'অটো' স্পষ্টতই এই প্রকাশে আত্মপ্রকাশ করছে। এটি একটি দুর্দান্ত সংযোজন কারণ শাখার নামগুলি আলাদা রঙ পাবে। উদাহরণস্বরূপ এটি স্থানীয় এবং দূরবর্তী শাখাগুলির মধ্যে পার্থক্য করা সহজ করে তোলে।


fatal: bad color value 'auto' for variable '--pretty format':(
সুইভেল

গিটের পুরানো সংস্করণ হিসাবে দেখা গেছে। ইয়ামের রেপোতে গীটের একটি সুন্দর পুরানো সংস্করণ রয়েছে। উত্স থেকে সংকলিত (1.9) এবং এটি দুর্দান্ত কাজ করে। এটা খুব সুন্দর! ধন্যবাদ @ গসপেস!
সুইভেল

ওএস এক্সে যাবেন না:sed: illegal option -- r
স্লিপ ডি থম্পসন

@ স্লিপপিডি.কম্পসন: আমি লিনাক্স ব্যবহার করছি :)। -R বর্ধিত নিয়মিত প্রকাশের জন্য। বাহ্যিকভাবে সেডের ওএসএক্স সংস্করণটি নেই। সম্ভবত আপনি সেড আপডেট করতে পারে। অন্যথায়, আপনি কেবল প্রসারিত রেজেক্স ছাড়াই sed কমান্ডটি পুনরায় লিখতে পারেন।
7:51

1
ম্যাক ওএস এক্স সেডের জন্য, -r এর পরিবর্তে -E ব্যবহার করুন
বাক্সার লোপেজ

37

তারা দেখতে কেমন তার উপর নির্ভর করে। আমি গিটক্স ব্যবহার করি যা ছবিটির মতো করে তোলে:

সাধারণ প্লট

আপনি git log --graph24-ওয়ে অক্টোপাস মার্জটিতে বনাম গিটকে তুলনা করতে পারবেন (মূলত : http://clojure-log.n01se.net/date/2008-12-24.html থেকে ):

24-উপায় গিট অক্টোপাস মার্জ।  আসল ইউআরএলটি ছিল <কোড> http://lwn.net/images/ns/kernel/gitk-octopus.png </code>


49
এটি মজার ... আমি শপথ করে শুনেছি আপনি "24-ওয়ে অক্টোপাস মার্জ" বলতে শুনেছেন!
dty

4
কৌতূহলের বাইরে, কেউ কি GitX এর (বা অন্য কোনও GUI গিট সরঞ্জামের) অঙ্কন রুটিনগুলি স্ট্যান্ডেলোন এক্সিকিউটেবলের মধ্যে বের করার চেষ্টা করেছে? যদি আমি ভুল না হয়ে থাকি তবে ভেক্টর পিডিএফ ফাইলটিতে কোকো আঁকানো অসুবিধা হবে না এবং উচ্চ-কিউ প্রিন্টেবল চিত্রের জন্য ওপির প্রয়োজনীয়তা পূরণ করবে।
স্লিপ ডি থম্পসন 21

তারা জিনিসটি redid করার আগে স্কাইচের মাধ্যমে এটি এস 3 এ ছিল। আমি আশা করি আমি এখনও এটি ছিল। :(
ডাস্টিন

শুধু থেকে একটি gitk সংস্করণের সাথে এটি প্রতিস্থাপিত lwn.net/images/ns/kernel/gitk-octopus.png , থেকে লিঙ্ক clojure-log.n01se.net/date/2008-12-24.html । @ ডাস্টিন: আশা করি ঠিক আছে। এটি একই চিত্র নয়, তবে এটি একই উদ্দেশ্যে কাজ করে। স্ক্রিন শট থেকে দেখে মনে হচ্ছে এটি লিনাক্স কার্নেলের অংশ, সুতরাং আমি অনুমান করি যে আপনি এই প্রতিশ্রুতিটি খুঁজে পেতে পারেন এবং একটি সমতুল্য গিত্সের স্ক্রিনশটটি পুনরায় নিতে পারেন ....
naught101

34

আরও বিস্তারিত পাঠ্য আউটপুট জন্য, চেষ্টা করুন:

git log --graph --date-order -C -M --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=short

আপনি alias HOME / .gitconfig এ উপন্যাস লিখতে পারেন

[alias]
    graph = log --graph --date-order -C -M --pretty=format:\"<%h> %ad [%an] %Cgreen%d%Creset %s\" --all --date=short

29

এটি এই বিষয়ে আমার গ্রহণ:

স্ক্রীনশট:

স্ক্রিনশট

ব্যবহার:

git hist - বর্তমান শাখার ইতিহাস দেখান

git hist --all - সমস্ত শাখার গ্রাফ প্রদর্শন করুন (রিমোটগুলি সহ)

git hist master devel - দুই বা ততোধিক শাখার মধ্যে সম্পর্ক দেখান

git hist --branches - সমস্ত স্থানীয় শাখা দেখান

--topo-orderতারিখের পরিবর্তে টপোলজিক্যালি কমিটস বাছাই করতে যুক্ত করুন (এই উরফে ডিফল্ট)

উপকারিতা:

  • দেখতে ঠিক প্লেইনের মতো --decorate, তাই বিভিন্ন শাখার নামের জন্য পৃথক রঙের
  • প্রতিশ্রুতিবদ্ধ ইমেল যুক্ত করে
  • আপত্তিজনক এবং পরম তারিখ যুক্ত করে
  • বাছাই করে তারিখ অনুসারে কমিট করে

সেটআপ:

git config --global alias.hist "log --graph --date-order --date=short \
--pretty=format:'%C(auto)%h%d %C(reset)%s %C(bold blue)%ce %C(reset)%C(green)%cr (%cd)'"

28

gitg : একটি gtk- ভিত্তিক সংগ্রহস্থল প্রদর্শক, এটি নতুন তবে আকর্ষণীয় এবং দরকারী
http://git.gnome.org/browse/gitg
আমি বর্তমানে এটি ব্যবহার করছি


2
এটি মনে হয় এটির একটি ক্লোন GitXএবং খুব ভাল একটি। প্রস্তাব দিন
ইয়ারেক টি

28

যদিও মাঝে মাঝে আমি গিটজি ব্যবহার করি তবে সর্বদা কমান্ড লাইনে ফিরে আসুন:

[alias]
    #quick look at all repo
    loggsa = log --color --date-order --graph --oneline --decorate --simplify-by-decoration --all
    #quick look at active branch (or refs pointed)
    loggs  = log --color --date-order --graph --oneline --decorate --simplify-by-decoration
    #extend look at all repo
    logga  = log --color --date-order --graph --oneline --decorate --all
    #extend look at active branch
    logg   = log --color --date-order --graph --oneline --decorate
    #Look with date
    logda  = log --color --date-order --date=local --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ad%Creset %C(auto)%d%Creset %s\" --all
    logd   = log --color --date-order --date=local --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ad%Creset %C(auto)%d%Creset %s\"        
    #Look with relative date
    logdra = log --color --date-order --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ar%Creset %C(auto)%d%Creset %s\" --all
    logdr = log --color --date-order --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ar%Creset %C(auto)%d%Creset %s\"  

    loga   = log --graph --color --decorate --all

    # For repos without subject body commits (vim repo, git-svn clones)
    logt  = log --graph --color --format=\"%C(auto)%h %d %<|(100,trunc) %s\"
    logta  = log --graph --color --format=\"%C(auto)%h %d %<|(100,trunc) %s\" --all        
    logtsa = log --graph --color --format=\"%C(auto)%h %d %<|(100,trunc) %s\" --all --simplify-by-decoration 

আপনি দেখতে পাচ্ছেন যে এর উপর ভিত্তি করে প্রায় একটি কীস্ট্রোক সংরক্ষণের এলিয়াস রয়েছে:

  • - রঙ: পরিষ্কার চেহারা
  • - অনুচ্ছেদ: পিতামাতাকে কল্পনা করুন
  • - তারিখ-ক্রম: রেপোতে সবচেয়ে বোধগম্য চেহারা
  • --ডেকোরেট: কে কে
  • --অনলাইন: অনেক সময় আপনার প্রতিশ্রুতি সম্পর্কে জেনে রাখা দরকার
  • - সজ্জা দ্বারা সাজানো: প্রথম বর্ণনার জন্য প্রাথমিক (কেবল ট্যাগ, প্রাসঙ্গিক মার্জ, শাখা)
  • - সমস্ত: এই বিকল্পের সাথে এবং ছাড়াও সমস্ত উপনামের সাথে কীস্ট্রোক সংরক্ষণ করা
  • - তারিখ = আপেক্ষিক (% আরআর): রেপোতে ক্রিয়াকলাপ বুঝতে পারবেন (কখনও কখনও একটি শাখা মাস্টারের কাছাকাছি কিছু কমিট হয় তবে কয়েক মাস আগে তাঁর কাছ থেকে)

গিটের সাম্প্রতিক সংস্করণে দেখুন (1.8.5 এবং তার বেশি) আপনি প্লেসোল্ডার% d সাজাতে% C (অটো) থেকে উপকার পেতে পারেন

এখান থেকে আপনার যা যা প্রয়োজন তা ফিল্টার করার জন্য গিটারভিশনগুলি সম্পর্কে ভাল বোঝা দরকার (মাস্টার..ডিভেলফের মতো কিছু, যেখানে - সরল-সংহতকরণ দীর্ঘমেয়াদী শাখাগুলিতে সহায়তা করতে পারে)

কমান্ড লাইনের পিছনে শক্তি হ'ল আপনার প্রয়োজনের উপর ভিত্তি করে দ্রুত কনফিগার করা (কোনও রেপো বুঝতে কোনও অনন্য কী লগ কনফিগারেশন নয়, তাই কখনও কখনও --numstat, বা --raw, অথবা --name-status যুক্ত করা প্রয়োজন Here এখানে গিট লগ এবং এলিয়াসগুলি দ্রুত, শক্তিশালী এবং (সময়ের সাথে সাথে) আপনি অর্জন করতে পারেন এমন সর্বোত্তম গ্রাফ Even আরও বেশি, পেজারের মাধ্যমে ডিফল্টরূপে আউটপুট প্রদর্শিত হয় (কম বলুন) আপনি সর্বদা ফলাফলের অভ্যন্তরীণ ফলাফলগুলিতে দ্রুত অনুসন্ধান করতে পারেন convinced নিশ্চিত নন? আপনি সর্বদা ফলাফলকে বিশ্লেষণ করতে পারবেন গ্রিটগ্রাফের মতো প্রকল্পের সাথে


খুব সুন্দর. এগুলি আমার কনফিগারেশনে যুক্ত করা হচ্ছে। তবে আমি% ক্রেডিট% d% ক্রেসেটকে% সি (অটো)% ডি% ক্রেসেটে পরিবর্তিত করার প্রস্তাব দিচ্ছি যা দূরবর্তী বা স্থানীয় শাখার নামগুলির জন্য বিভিন্ন রঙ দেবে
মার্কবি 42

17

স্লিপের দুর্দান্ত উত্তরটি খুব সামান্য টুইট করে , আপনি কেবল একটি শাখায় লগ করতে তার উপনামগুলি ব্যবহার করতে পারেন:

[alias]
lgBranch1 = log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold white)— %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative
lgBranch2 = log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(bold white)— %an%C(reset)' --abbrev-commit
lg = !"git lg1"

ছেড়ে দিয়ে --allআপনি এখন করতে পারেন

git lgBranch1 <branch name>

অথবা এমনকি

git lgBranch1 --all

15

আমি tig https://github.com/jonas/tig পরামর্শ দিচ্ছি , গিটের জন্য অনেক বেশি কমান্ড লাইন সরঞ্জাম।

আপনি ম্যাকোজে টাইগ ইনস্টল করতে হোমব্রিউ ব্যবহার করতে পারেন:

$ brew install tig
$ tig

এখানে চিত্র বর্ণনা লিখুন


14

গ্রাফের ইতিহাস দেখতে আমার এই git logউপন্যাসটি রয়েছে ~/.gitconfig:

[alias]
l = log --all --graph --pretty=format:'%C(auto)%h%C(auto)%d %s %C(dim white)(%aN, %ar)'

এটি স্থানে git lরাখলে এরকম কিছু আউটপুট আসবে:

এখানে চিত্র বর্ণনা লিখুন

গিট 2.12 + তে আপনি log.graphColorsকনফিগারেশন বিকল্পটি ব্যবহার করে গ্রাফের লাইন রঙগুলিও অনুকূলিত করতে পারেন ।

লগগুলির ফর্ম্যাট হিসাবে, এটি লেখকের নাম (সম্মান ) এবং আপেক্ষিক লেখকের তারিখ--oneline সংযোজনের সাথে সমান । নোট করুন যে সিনট্যাক্স, যা গিটকে কমিট হ্যাশ ইত্যাদির জন্য ডিফল্ট রঙগুলি ব্যবহার করতে বলে, তা গিট> = 1.8.3 এ সমর্থিত ।.mailmap%C(auto)


1
git log --graph --oneline oneliner হারিয়ে না গেছে তা নিশ্চিত করার জন্য
tsenapathy

বাম পাশের শাখার নাম রাখার উপায় আছে?
আনাভাল

12

আপনি চেষ্টা করেছেন gitkনাকি gitk --all? তবে এটির কোনও ফাংশন হিসাবে মুদ্রণ / সেভ ইমগ নেই।


3
গিটক দক্ষ তবে খুব সুন্দর নয়।
জোহান

এটি অন্তর্নির্মিতভাবে আসে এটি আমার জন্য আনন্দদায়ক এবং ঝামেলা-মুক্ত করে তোলে। বিশেষ করে --allআপনাকে সমস্ত শাখা দেখায়।
বিসিকে

12

GitGraph

আপনার গিট সংগ্রহস্থলের প্রতিশ্রুতিবদ্ধ ইতিহাসের একটি পিএনজি বা এসভিজি উপস্থাপনা উত্পন্ন করে।

https://code.google.com/p/gitgraph


@ অ্যান্ডি হেডেন: তা নয়। সম্পূর্ণ ভিন্ন. দিয়া
rzymek

11
git -c core.pager='less -SRF' log --oneline --graph --decorate

এটি আমার টার্মিনাল প্রকরণ, এখানে অনেক উত্তরের অনুরূপ। আমি lessশব্দ মোড়ানো রোধ করতে পাস করা পতাকাগুলি সামঞ্জস্য করতে চাই ।

উদাহরণ আউটপুট

কমান্ডটি কিছুটা অসুবিধাগুলি হওয়ায় দ্রুত অ্যাক্সেসের জন্য আমি এটি একটি উপাধিতে সেট করেছি।


8

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

উত্স (txt ফাইল):

        +--------+
        | hotfix |
        +---+----+
            |
--*<---*<---*
       ^ 
       |
       \--*<---*
               |
           +---+----+
           | master |
           +--------+

COMMAND:

java -jar ditaa0_9.jar ascii-graph.txt

ফলাফল:

এখানে চিত্র বর্ণনা লিখুন

এটি ব্যাকগ্রাউন্ড রঙ, ড্যাশযুক্ত লাইন, বিভিন্ন আকার এবং আরও অনেক কিছু সমর্থন করে। উদাহরণ দেখুন ।


1
অনুরূপ শিরাতে, ক্যাজুয়াল-এফেক্টস / মার্কদীপ হস্ত-সাজানো আসকি শিল্প চিত্রগুলি সজ্জিত করতে খুব শক্তিশালী।
বেনি চেরনিয়াভস্কি-পাসকিন

7

যদি আপনার সংগ্রহশালাটি গিটল্যাবে বসে থাকে তবে আপনি এটির গ্রাফ উপস্থাপনাটি আপনার ব্রাউজারে এসভিজি হিসাবে রেন্ডার হিসাবে ব্যবহার করতে পারেন।

  • আপনার সংগ্রহস্থলের গ্রাফ দৃশ্যে যান, যেমন https://gitlab.com/gitlab-org/gitter/webapp/network/develop

  • গ্রাফটি নীচে নীচে স্ক্রোল করুন (এটি অলস লোডগুলি কমিট করে!)

  • নতুন ফাইলে এসভিজি উপাদানটি অনুলিপি করতে আপনার ব্রাউজারের পরিদর্শক ব্যবহার করুন

  • এটি আপনার পছন্দসই একটি রেন্ডারারে খুলুন, উদাহরণস্বরূপ ইনস্কেপ

এখানে চিত্র বর্ণনা লিখুন


6

আমি কোনও প্রত্যক্ষ সরঞ্জাম সম্পর্কে জানি না, তবে সম্ভবত আপনি ডট ফর্ম্যাটে ডেটা রফতানি করতে এবং গ্রাফভিজের সাথে রেন্ডার করতে কোনও স্ক্রিপ্ট হ্যাক করতে পারেন।


এই এক github.com/gugod/bin/blob/master/git-ographicviz ব্যবহার করে দেখুন । আমার কর্পোরেট পরিবেশে আমার সমস্ত নির্ভরতা ছিল না, সুতরাং এই ioআদেশগুলি সরল পার্ল `গিট লগ [...]` কমান্ডগুলি আমার পক্ষে কাজ করেছিল।
রস রজার্স

আপনি যদি কোনও ম্যাকের উপরে থাকেন এবং আপনি এই স্ক্রিপ্টটি চেষ্টা করতে চান brew install perl dotতবে cpan common::sense IO::allআপনি পার্ল এবং তারপরে নির্ভরতা পেতে সক্ষম হন। তারপরে, কেবল একটি উপযুক্ত কমান্ডের মতো আউটপুটটি পাইপ করুন git-graphviz | dot -Tpng -o repo.png। তবে আউটপুট গিট-বিগ-ছবির চেয়ে আলাদা নয় ।
jrhorn424

6

রাফেল ওয়েব গ্রাফিক্স লাইব্রেরির একটি ডেমো হিসাবে একটি মজাদার গিট কমিট গ্রাফ রয়েছে ।

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

ডেমোটি এখানে রয়েছে: http://dmitrybaranovskiy.github.io/raphael/github/impact.html


1
এটি একই গ্রাফ কোডটি গিটহাবের প্রভাব গ্রাফগুলিতে ব্যবহৃত হয়, না? (যেমন github.com/DmitryBaranovskiy/raphael/رافs/impact )
স্লিপ ডি থম্পসন

@ স্পেন: এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ। আমি আপনার জন্য ভাঙা লিঙ্কগুলি সংশোধন করেছি, যদিও দয়া করে মনে রাখবেন যে এই উত্তরটি পাঁচ বছরের পুরানো, এবং এরপরে আরও একটি ভাল সমাধান হতে পারে।
স্পডলি

@ স্লিপডি.টমসন এই কোডটি এখন github.com/DmitryBaranovskiy/raphaeljs.com/tree/master/github
ভাদিম

6

শেলগুলির জন্য একটি সুন্দর এবং পরিষ্কার দেখাচ্ছে টেবিলের মতো গিট গ্রাফ আউটপুট

গ্রাফ গাছের পাশাপাশি হ্যাশ সহ us

গ্রাফ গাছের পাশাপাশি হ্যাশ সহ us

বা একটি অতিরিক্ত কলামে

বা একটি অতিরিক্ত কলামে

সম্পাদনা : আপনি ব্যাখ্যা না পড়ে এখনই শুরু করতে চান? বিভাগ EDIT 5 থেকে গিট ওরফে, স্ক্রিপ্ট বা ফাংশন কোড স্নিপেট ব্যবহার করুননীচে ।

এই প্রশ্নের সমস্ত উত্তরে শেলগুলির জন্য এখনও কোনও পরিষ্কার টেবিলের মতো দেখায়নি আউটপুট। সুসংবাদ থেকে নিকটতম এই উত্তর ছিলআমি যেখান থেকে শুরু করেছি সেই ।

আমার পদ্ধতির মূল বিষয়টি হ'ল ব্যবহারকারীর দেখানো গাছের অক্ষরগুলিই গণনা করা। তারপরে এগুলি শ্বেতস্পেসে ব্যক্তিগত দৈর্ঘ্যে পূরণ করুন।

গিট ছাড়া আপনার এই সরঞ্জামগুলির প্রয়োজন

  • , grep
  • পেস্ট করুন
  • printf,
  • sed
  • SeQ
  • TR
  • wc-

সাধারণত কোনও লিনাক্স বিতরণ সহ বোর্ডে with

কোড স্নিপেট হয়

while IFS=+ read -r graph hash time branch message;do

  # count needed amount of whitespaces and create them
  whitespaces=$((9-$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)))
  whitespaces=$(seq -s' ' $whitespaces|tr -d '[:digit:]')

  # show hashes besides the tree ...
  #graph_all="$graph_all$graph$(printf '%7s' "$hash")$whitespaces \n"

  # ... or in an own column
  graph_all="$graph_all$graph$whitespaces\n"
  hash_all="$hash_all$(printf '%7s' "$hash")  \n"

  # format all other columns
  time_all="$time_all$(printf '%12s' "$time") \n"
  branch_all="$branch_all$(printf '%15s' "$branch")\n"
  message_all="$message_all$message\n"
done < <(git log --all --graph --decorate=short --color --pretty=format:'+%C(bold 214)%<(7,trunc)%h%C(reset)+%C(dim white)%>(12,trunc)%cr%C(reset)+%C(214)%>(15,trunc)%d%C(reset)+%C(white)%s%C(reset)' && echo);

# paste the columns together and show the tablelike output
paste -d' ' <(echo -e "$time_all") <(echo -e "$branch_all") <(echo -e "$graph_all") <(echo -e "$hash_all") <(echo -e "$message_all")

আমরা ব্যবহার করি প্রয়োজনীয় হোয়াইটস্পেস গণনা করতে

  sed -nl500 'l' <<< "$graph"

সমস্ত গাছ (প্রতি লাইনে 500 অবধি) পেতে কেবলমাত্র গাছের অক্ষরগুলি বেছে নেওয়ার চেয়ে: * | / \ _ এবং সাদা স্থানের সাথে

  grep -Eo '\\\\|\||\/|\ |\*|_'

অবশেষে এগুলি গণনা করুন এবং ফলাফলটি আমাদের চয়ননের দৈর্ঘ্যের মান থেকে বাদ দিন, যা উদাহরণে 9।

আমরা যে পরিমাণ শ্বেত স্পেস ব্যবহার করি তা গণনা করতে

  seq -s' ' $whitespaces

এবং এর সাথে অবস্থানের সংখ্যাগুলি কেটে দিন

  tr -d '[:digit:]'

আমাদের গ্রাফ লাইনের শেষে এগুলি যুক্ত করার চেয়ে। এটাই!

গিটের ইতিমধ্যে বাক্য গঠন সহ আউটপুট স্পেসিফায়ারগুলির দৈর্ঘ্য বিন্যাস করার দুর্দান্ত বিকল্প রয়েছে'%><(amount_of_characters,truncate_option)' যা বাম '>' বা ডান '<' পাশ থেকে শ্বেত স্পেস যুক্ত করে এবং 'ltrunc', মধ্যম 'mtrunc' বা শেষ থেকে অক্ষরগুলি কেটে ফেলতে পারে 'TRUNC'।

এটি গুরুত্বপূর্ণ যে প্রিন্টফ সেন্টিমিডির উপরেরগুলি সংশ্লিষ্ট গিট কলামের জন্য একই দৈর্ঘ্যের মানগুলি ব্যবহার করে।

আপনার নিজস্ব পরিষ্কার টেবিলের মতো দেখতে আপনার আউটপুটটিকে স্টাইল করতে মজা করুন।

অতিরিক্ত:

সঠিক দৈর্ঘ্যের মান পেতে আপনি নিম্নলিখিত স্নিপেট ব্যবহার করতে পারেন

while read -r graph;do
    chars=$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)
    [[ $chars -gt ${max_chars:-0} ]] && max_chars=$chars
done < <(git log --all --graph --pretty=format:' ')

এবং উপরে সঠিক দৈর্ঘ্যের মান হিসাবে $ সর্বাধিক_চার্স ব্যবহার করুন।


সম্পাদনা 1 : সবেমাত্র লক্ষ্য করেছেন যে আন্ডারলাইন চরিত্রটি গিট ট্রিতেও ব্যবহৃত হয় এবং সেই অনুযায়ী উপরের কোড স্নিপেটগুলি সম্পাদনা করে। যদি অন্য চরিত্রগুলি অনুপস্থিত থাকে তবে দয়া করে একটি মন্তব্য দিন।


সম্পাদনা 2 : আপনি যদি শাখা এবং ট্যাগ এন্ট্রিগুলির আশেপাশের বন্ধনীগুলি থেকে মুক্তি পেতে চান তবে EDIT 3 এর মতো গিট কমান্ডে "% d" এর পরিবর্তে "% D" ব্যবহার করুন।


সম্পাদনা 3 : সম্ভবত "অটো" রঙ বিকল্পটি আপনি শাখা এবং ট্যাগ এন্ট্রিগুলির জন্য সবচেয়ে বেশি পছন্দ করেন?

গিট ব্র্যাককেটহীন অটো রঙের মাথা এবং ট্যাগের মতো শেল আউটপুট

গিট কমান্ডের এই অংশটি পরিবর্তন করুন (রঙ 214 )

%C(214)%>(15,trunc)%D%C(reset)

থেকে স্বয়ংক্রিয়

%C(auto)%>(15,trunc)%D%C(reset)


সম্পাদনা 4 : বা আপনি কি সেই অংশটির জন্য নিজের রঙের মিশ্রণটি পছন্দ করতে চান, চোখের পলক দিয়ে একটি অভিনব আউটপুট?

গিট ট্রি ফ্যান্সি স্টাইলযুক্ত টেবিলের মতো আউটপুট

শিরোনাম, শাখার নাম এবং ট্যাগগুলি প্রথমে স্টাইল করতে সক্ষম হওয়ার জন্য আমাদের EDIT 3 এর মতো আমাদের গিট কমান্ডে "অটো" রঙের বিকল্পটি প্রয়োজন।

তারপরে আমরা এই 3 টি লাইন যুক্ত করে আমাদের নিজস্ব রঙের মানগুলি প্রতিস্থাপন করতে পারি

 # branch name styling
 branch=${branch//1;32m/38;5;214m}
 # head styling
 branch=${branch//1;36m/3;5;1;38;5;196m}
 # tag styling
 branch=${branch//1;33m/1;38;5;222m}

লাইনের ঠিক আগে

 branch_all="$branch_all$(printf '%15s' "$branch")\n"

আমাদের কোড স্নিপেটে। প্রতিস্থাপনের মানগুলি উপরের রঙগুলি উত্পাদন করে।

উদাহরণস্বরূপ মাথা জন্য প্রতিস্থাপন মান হয়

3;5;1;38;5;196

যেখানে 3; এর অর্থ ইটালিক, 5; ঝলকানোর জন্য এবং 1; 38; 5; 196 রঙের জন্য। আরও ইনফোগুলি এখানে শুরু করুন। দ্রষ্টব্য: এই আচরণটি আপনার পছন্দসই টার্মিনালের উপর নির্ভর করে এবং তাই ব্যবহারযোগ্য নাও হতে পারে।

তবে আপনি যে কোনও রঙের মান পছন্দ করতে পারেন।

গিট রঙের মান এবং এএনএসআই সমতুল্যদের পর্যালোচনা

এখানে চিত্র বর্ণনা লিখুন

আপনি এখানে গিট রঙ / স্টাইল বিকল্পের সাথে একটি তালিকা পাবেন ।

সঠিক রঙের জন্য আপনার কনসোলে আউটপুট প্রয়োজন হলে (উপরের ছবিটি স্ট্যাকওভারফ্লো দ্বারা ছোট করে দেওয়া হয়েছে) আপনি আউটপুটটি উত্পাদন করতে পারেন

for ((i=0;i<=255;i++));do
  while IFS='+' read -r tree hash;do 
    echo -e "$(printf '%-10s' "(bold $i)") $hash  $(sed -nl500 'l' <<< "$hash"|grep -Eom 1 '[0-9;]*[0-9]m'|tr -d 'm')"
  done < <(git log --all --graph --decorate=short --color --pretty=format:'+%C(bold '$i')%h%C(reset)'|head -n 1)
done

আপনার গিট প্রকল্পের পথে যা আপনার গিট লগ আউটপুট থেকে প্রথম প্রতিশ্রুতি ব্যবহার করে।


সম্পাদনা 5 : সদস্য হিসাবে "আন্দ্রেস ডেক" উল্লেখ করেছেন, এই কোডটি কীভাবে ব্যবহার করবেন সে সম্পর্কে কিছু উপায় রয়েছে:

1) একটি নাম হিসাবে :

ওরফে প্যারামিটারগুলি গ্রহণ করে না তবে একটি ফাংশন পারে , সুতরাং আপনার .bashrc এ কেবল সংজ্ঞা দেয়

   function git_tably () {
     unset branch_all graph_all hash_all message_all time_all max_chars

     ### add here the same code as under "2) as a shell-script" ###

   }

এবং ফাংশনটি git_tably (টেবিলের মতো থেকে প্রাপ্ত) সরাসরি আপনার গিট প্রকল্পের পাথের নীচে বা যেখানেই আপনি চান যেখানে আপনার গিট প্রকল্পের পথটি প্রথম প্যারামিটার হিসাবে কল করতে পারেন।

2) শেল লিপি হিসাবে :

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

# edit your color/style preferences here or use empty values for git auto style
tag_style="1;38;5;222"
head_style="1;3;5;1;38;5;196"
branch_style="38;5;214"

# determine the max character length of your git tree
while IFS=+ read -r graph;do
  chars_count=$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)
  [[ $chars_count -gt ${max_chars:-0} ]] && max_chars=$chars_count
done < <(cd "${1:-"$PWD"}" && git log --all --graph --pretty=format:' ')

# create the columns for your prefered tablelike git graph output
while IFS=+ read -r graph hash time branch message;do

  # count needed amount of whitespaces and create them
  whitespaces=$(($max_chars-$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)))
  whitespaces=$(seq -s' ' $whitespaces|tr -d '[:digit:]')

  # show hashes besides the tree ...
  #graph_all="$graph_all$graph$(printf '%7s' "$hash")$whitespaces \n"

  # ... or in an own column
  graph_all="$graph_all$graph$whitespaces\n"
  hash_all="$hash_all$(printf '%7s' "$hash")  \n"

  # format all other columns
  time_all="$time_all$(printf '%12s' "$time") \n"
  branch=${branch//1;32m/${branch_style:-1;32}m}
  branch=${branch//1;36m/${head_style:-1;36}m}
  branch=${branch//1;33m/${tag_style:-1;33}m}
  branch_all="$branch_all$(printf '%15s' "$branch")\n"
  message_all="$message_all$message\n"

done < <(cd "${1:-"$PWD"}" && git log --all --graph --decorate=short --color --pretty=format:'+%C(bold 214)%<(7,trunc)%h%C(reset)+%C(dim white)%>(12,trunc)%cr%C(reset)+%C(auto)%>(15,trunc)%D%C(reset)+%C(white)%s%C(reset)' && echo);

# paste the columns together and show the tablelike output
paste -d' ' <(echo -e "$time_all") <(echo -e "$branch_all") <(echo -e "$graph_all") <(echo -e "$hash_all") <(echo -e "$message_all")

3) গিটের ওরফে হিসাবে :

সম্ভবত সবচেয়ে আরামদায়ক উপায় হ'ল আপনার .gitconfig এ একটি গিট ওরফে যুক্ত করা

[color "decorate"]
    HEAD = bold blink italic 196
    branch = 214
    tag = bold 222

[alias]
    count-log = log --all --graph --pretty=format:' '
    tably-log = log --all --graph --decorate=short --color --pretty=format:'+%C(bold 214)%<(7,trunc)%h%C(reset)+%C(dim white)%>(12,trunc)%cr%C(reset)+%C(auto)%>(15,trunc)%D%C(reset)+%C(white)%s%C(reset)'
    tably     = !bash -c '"                                                                                                    \
                  while IFS=+ read -r graph;do                                                                                 \
                    chars_count=$(sed -nl1000 \"l\" <<< \"$graph\" | grep -Eo \"\\\\\\\\\\\\\\\\|\\||\\/|\\ |\\*|_\" | wc -l); \
                    [[ $chars_count -gt ${max_chars:-0} ]] && max_chars=$chars_count;                                          \
                  done < <(git count-log && echo);                                                                             \
                  while IFS=+ read -r graph hash time branch message;do                                                        \
                    chars=$(sed -nl1000 \"l\" <<< \"$graph\" | grep -Eo \"\\\\\\\\\\\\\\\\|\\||\\/|\\ |\\*|_\" | wc -l);       \
                    whitespaces=$(($max_chars-$chars));                                                                        \
                    whitespaces=$(seq -s\" \" $whitespaces|tr -d \"[:digit:]\");                                               \
                    graph_all=\"$graph_all$graph$whitespaces\n\";                                                              \
                    hash_all=\"$hash_all$(printf \"%7s\" \"$hash\")  \n\";                                                     \
                    time_all=\"$time_all$(printf \"%12s\" \"$time\") \n\";                                                     \
                    branch_all=\"$branch_all$(printf \"%15s\" \"$branch\")\n\";                                                \
                    message_all=\"$message_all$message\n\";                                                                    \
                  done < <(git tably-log && echo);                                                                             \
                  paste -d\" \" <(echo -e \"$time_all\") <(echo -e \"$branch_all\") <(echo -e \"$graph_all\")                  \
                                <(echo -e \"$hash_all\") <(echo -e \"$message_all\");                                          \
                '"

যে git tablyকোনও প্রকল্পের পথে কল করার চেয়ে বেশি ।

গিটটি এতটাই শক্তিশালী যে আপনি উপরে দেখানো এবং এখান থেকে নেওয়া হিসাবে সরাসরি মাথা, ট্যাগ, ... পরিবর্তন করতে পারেন ।

আর একটি অভিনব বিকল্প হ'ল আপনি যে গাছগুলির সাথে সর্বাধিক পছন্দ করেন তা চয়ন করুন

[log]
    graphColors = bold 160, blink 231 bold 239, bold 166, bold black 214, bold green, bold 24, cyan

এটি আপনাকে পাগল দেখাচ্ছে কিন্তু সর্বদা টেবিলের মতো গিট লগ আউটপুট দেয়

fanciest_git_tree_tablelike_image

খুব ঝলক! কেবল কী সম্ভব তা প্রদর্শনের জন্য। খুব নির্দিষ্ট কয়েকটি রঙ রঙ পুনরাবৃত্তির দিকে নিয়ে যায়।

একটি সম্পূর্ণ .gitconfig রেফারেন্স মাত্র এক ক্লিক দূরে।

আবার: আপনার নিজস্ব পরিষ্কার টেবিলের মতো আপনার প্রয়োজন অনুসারে আউটপুট স্টাইল করতে মজা করুন।


এই বাশ স্নিপেটগুলি কীভাবে অভিনব গিট লগ-জাতীয় কমান্ডগুলিতে রূপান্তরিত হবে তা আপনার উত্তরে আপনাকে ব্যাখ্যা করতে হবে। আপনার লিঙ্ক করা উত্তরটি দেখে কেউ বুঝতে পারে যে উত্তরগুলি স্বয়ংসম্পূর্ণ থাকতে হবে
Andras Deak

আপনার মানে আমি গিট লগটি সেমিডিএল বিস্তারিতভাবে বর্ণনা করব? আপনি কী অনুপস্থিত তা আমাকে একটি উদাহরণ দিতে পারেন দয়া করে।
একমুক্তি

দ্রষ্টব্য: দুর্দান্ত গিট লগ কমান্ডের আউটপুটটি এই টুকরো টার্মিনালে টেবিলের মতো আউটপুট পেতে এই স্নিপেট ব্যবহার করে। সুতরাং, আপনি উল্লিখিত হিসাবে
অন্যভাবে

আমি অনুভব করেছি যে প্রতিবার যখন আপনার এটির প্রয়োজন হবে আপনি 20 লাইন বাশ টাইপ করছেন না। এটি ব্যাশ ফাংশন বা গিট ওরফে হিসাবে সংজ্ঞায়িত করার জন্য অর্থবোধ করে। বেশিরভাগ পাঠক আপনার কোডটিকে এটিকে সহজেই ব্যবহারযোগ্য করে তোলার জন্য সম্পূর্ণ করার চেষ্টা করে বিরক্ত করবেন না। যে আমি বোঝানো কি. আপনি যদি কেবল আপনার পথে কোনও এলোমেলো ফাইলের কোডটি রেখে দেন তবে আপনি আমাকে উপেক্ষা করতে পারেন।
Andras ডেক

1
আমি দেখি. আপনার পরামর্শের জন্য ধন্যবাদ। আমি আমার উত্তরটি সম্পাদনা করব এবং এ জাতীয় একটি নাম যুক্ত করব। সাধারণত আপনি যেমন উল্লেখ করেছেন তেমন "দীর্ঘ" কমান্ডগুলির জন্য আমি ফাইলগুলি ব্যবহার করি। তবে উভয় উপায়ে এখানে লেখা অনেক বেশি স্বাচ্ছন্দ্যজনক, আমি সম্মত।
একমোর্শেশন

5

al / .oh-my-zsh / plugins / git / git.plugin.zsh- এ কিছু এলিয়াস

gke='\gitk --all $(git log -g --pretty=%h)'
glg='git log --stat'
glgg='git log --graph'
glgga='git log --graph --decorate --all'
glgm='git log --graph --max-count=10'
glgp='git log --stat -p'
glo='git log --oneline --decorate'
glog='git log --oneline --decorate --graph'
gloga='git log --oneline --decorate --graph --all'
glol='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit'
glola='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit --all'

4

ওএসএক্স ব্যবহারকারীদের জন্য, আমি @ গসপেসের উদাহরণটি নিয়েছি এবং এটিকে জিএসডের জন্য (হোমব্রিউয়ের gnu-sedমাধ্যমে ইনস্টল করা) সামান্য সংশোধন করেছি এবং রঙগুলি সমন্বয় করেছি (একটি কালো পটভূমির সাথে কাজ করতে, নিশ্চিত না যে কীভাবে আসল উদাহরণটি সম্ভবত এটির মতো উপস্থাপন করতে পারে) উদাহরণস্বরূপ যেহেতু এটি একটি কালো পটভূমি সহ টার্মিনালে কালো পাঠ্য নির্দিষ্ট করে)।

[alias]
    # tree, vtree, stree support
    logx = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset)+%C(bold black)(%cr)%C(reset)+%C(auto)%d%C(reset)++\n+++       %C(bold black)%an%C(reset)%C(bold black): %s%C(reset)'
    tree = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset) %C(auto)%d%C(reset)\n         %C(bold black)[%cr]%C(reset)  %x09%C(bold black)%an: %s %C(reset)'
    stree = !bash -c '" \
    while IFS=+ read -r hash time branch message; do \
        timelength=$(echo \"$time\" | gsed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\"); \
        timelength=$(echo \"16+${#time}-${#timelength}\" | bc); \
        printf \"%${timelength}s    %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"\"; \
    done < <(git logx && echo);"' | less -r
    vtree = !bash -c '" \
    while IFS=+ read -r hash time branch message; do \
      timelength=$(echo \"$time\" | gsed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\"); \
      timelength=$(echo \"16+${#time}-${#timelength}\" | bc); \
      printf \"%${timelength}s    %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"$message\"; \
    done < <(git logx && echo);"' | less -r

ওএসএক্সের কীটি হ'ল প্রথমে gnu সেড ইনস্টল করা (যার -r বিকল্প রয়েছে)। হোমব্রিউয়ের সাথে খুব সহজেই সম্পন্ন হয় যা সিস্টেম-ইনস্টলড সেডকে ওভাররাইট করে না, বরং এটি "gsed" হিসাবে gnu সেড ইনস্টল করবে। আশা করি এটি @ স্লিপডি.টমসনকে সহায়তা করেছে যারা ওএসএক্স কাজ না করার বিষয়ে উপরে মন্তব্য করেছে

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