ফ্যাশনের মতো গাছে গিট শাখার আউটপুট


160

এখনই, যখন আমি "গিট শাখা" টাইপ করি

এটি আমার শাখাগুলিকে একটি স্বেচ্ছাসেবী ক্রমে তালিকাভুক্ত করে।

আমি কী পছন্দ করব তা যদি "গিট শাখা" আমার আউটপুটটিকে ফ্যারের মতো গাছে তালিকাভুক্ত করে, তবে কিছু সাইন ইন করে:

master
|-- foo
  |-- foo1
  |-- foo2
|-- bar
  |-- bar4

এখানে, foo & বার মাস্টার থেকে শাখা ছিল; foo1 এবং foo2 foo থেকে ব্রাঞ্চ করা হয়েছিল; বার 4 বার থেকে শাখা ছিল।

এটি সম্পাদন করা কি সহজ?

[কমান্ড লাইন ইউটিলিটি শুধুমাত্র। এটি আমার zsh / vim কর্মপ্রবাহে ফিট করতে হবে]]


এখানে উত্তরগুলির (আমার নিজের অন্তর্ভুক্ত) কোনওটিই আপনাকে সত্যিকার অর্থে আমি চাই এবং আমি জানি যে আমি চাই তার জন্য পর্যাপ্ত সমাধান সরবরাহ করে না বলে মনে হয়। আমি সুযোগ পেলে এটি সমাধানের জন্য একটি নতুন ইউটিলিটি লিখছি। সম্ভবত এটি কল করবে git_tree। এটি arc flowএখানে করার মতো কিছু করে আউটপুট দেবে : stackoverflow.com/questions/54227968/… । সম্ভবত কোনও দিন আমি এটিকে গিটের মধ্যেই একীভূত করতে পারি।
গ্যাব্রিয়েল স্ট্যাপলস

এই ব্যক্তিটিও একই জিনিসটি চায় বলে মনে হচ্ছে: reddit.com/r/git/comments/282c1f/…
গ্যাব্রিয়েল স্ট্যাপলস

git log --graphযথেষ্ট, আমি মনে করি।
ডনসং

উত্তর:


203

নিচে উত্তর ব্যবহারসমূহ git log:

আমি ২০০৯ সালে " টার্মিনালে গিট ট্রি দেখাতে অক্ষম " এর সাথে একই ধরণের পদ্ধতির উল্লেখ করেছি :

git log --graph --pretty=oneline --abbrev-commit

তবে আমি যে পুরোটি ব্যবহার করছি তা হ'ল " গিট লগ - অনুচ্ছেদ ব্যবহার করে ট্যাগের নাম এবং শাখার নাম কীভাবে প্রদর্শিত হবে " (2011) এ:

git config --global alias.lgb "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%n' --abbrev-commit --date=relative --branches"

git lgb

আসল উত্তর (২০১০)

git show-branch --list আপনি যা খুঁজছেন তার কাছাকাছি আসে (টোপো অর্ডার সহ)

--topo-order

ডিফল্টরূপে, শাখাগুলি এবং তাদের কমিটগুলি বিপরীত কালানুক্রমিক ক্রমে প্রদর্শিত হয়।
এই বিকল্পটি তাদের টপোলজিকাল ক্রমে হাজির করে তোলে (অর্থাত্ বংশধরদের কমিটগুলি তাদের পিতামাতার সামনে প্রদর্শিত হয়)।

তবে সরঞ্জামটি গিট ডাব্লুটিএফও সাহায্য করতে পারে । উদাহরণ:

$ git wtf
Local branch: master
[ ] NOT in sync with remote (needs push)
    - Add before-search hook, for shortcuts for custom search queries. [4430d1b] (edwardzyang@...; 7 days ago)
Remote branch: origin/master (git@gitorious.org:sup/mainline.git)
[x] in sync with local

Feature branches:
{ } origin/release-0.8.1 is NOT merged in (1 commit ahead)
    - bump to 0.8.1 [dab43fb] (wmorgan-sup@...; 2 days ago)
[ ] labels-before-subj is NOT merged in (1 commit ahead)
    - put labels before subject in thread index view [790b64d] (marka@...; 4 weeks ago)
{x} origin/enclosed-message-display-tweaks merged in
(x) experiment merged in (only locally)

NOTE: working directory contains modified files

git-wtf আপনাকে দেখায়:

  • আপনার শাখাটি দূরবর্তী রেপোর সাথে কীভাবে সম্পর্কিত, যদি এটি একটি ট্র্যাকিং শাখা হয়।
  • যদি আপনার শাখাটি কোনও বৈশিষ্ট্যযুক্ত শাখা হয় তবে অ-বৈশিষ্ট্যযুক্ত ("সংস্করণ") শাখার সাথে কীভাবে সম্পর্কিত।
  • আপনার শাখাটি কীভাবে বৈশিষ্ট্য শাখার সাথে সম্পর্কিত, যদি এটি কোনও সংস্করণ শাখা হয়

আপনার চমত্কার বিন্যাসের একটি প্রকরণ ব্যবহার করা হয়েছে যা% ae ব্যবহার করে লেখকের ইমেলটিও দেখায়। এছাড়াও আমি এইচজি এর স্মার্টলগের সাথে সাদৃশ্য রাখতে "এসএল" দ্বারা উপনামটি কল করতে পছন্দ করি।
ফিরিক্স

git-wtfসরঞ্জামটির লিঙ্কটির জন্য অনেক ধন্যবাদ , এটি অত্যন্ত কার্যকর useful অভিনব git logগাছের দিকে তাকানো থেকে আমি যে সিদ্ধান্তগুলি নিয়ে এসেছি তা মূলত ভেঙে ফেলার মতো মনে হচ্ছে , তবে একটি দুর্দান্ত সংক্ষেপে।
লুক ডেভিস

আমি কোনও উপায় বের করার আশা করছিলাম যাতে চেকআউট শাখাটি কোন্ শাখা থেকে এটি চেক আউট হয়েছিল তা দেখাতে পারে
চ্যাং ঝাও

যে @ChangZhao "পিতা বা মাতা শাখা খোঁজার" অনুরূপ, এবং যে সহজ করতে হয়: stackoverflow.com/a/3162929/6309 , stackoverflow.com/a/56452713/6309
VonC

147

আপনি যা চেয়েছিলেন তা মোটেই নয়, তবে

git log --graph --simplify-by-decoration --pretty=format:'%d' --all

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

আমি আমার লগ দেখতে অনুরূপ কমান্ড ব্যবহার করি। আমি আমার gitkব্যবহারটিকে এটির সাথে পুরোপুরি প্রতিস্থাপন করতে সক্ষম হয়েছি :

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

আমি আমার ~ / .gitconfig ফাইলে এই এলিয়াসগুলি যুক্ত করে এটি ব্যবহার করি:

[alias]
    l = log --graph --oneline --decorate
    ll = log --graph --oneline --decorate --branches --tags
    lll = log --graph --oneline --decorate --all

সম্পাদনা করুন: সহজ বিকল্প পতাকা ব্যবহার করার জন্য প্রস্তাবিত লগ কমান্ড / উপকরণগুলি আপডেট হয়েছে Updated


1
আইএমও এটি এখানে সেরা উত্তর, তবে আমি মনে করি সোর্স ট্রি বা গিটক বা এর মতো জিনিস এই ধরণের জিনিস যাবার উপায়।
জ্যাকএক্সজেট

এটি মূলতে শাখা প্রদর্শন করে। স্থানীয় শাখাগুলির জন্য এটি প্রদর্শনের কোনও উপায় আছে কি?
জেফ

প্রতিস্থাপন @Jeff --allসঙ্গে --branches --tagsসম্ভবত এটি করতে হবে।
নোক্যাশ

নিখুঁত উত্তর. আমি যা খুঁজছিলাম, আমি এটি এখানে খুঁজে পেয়েছি। গ্রেট।
AMIC মিং

12

নিম্নলিখিত উদাহরণটি পিতামাতার প্রতিও প্রতিশ্রুতিবদ্ধ দেখায়:

git log --graph --all \
--format='%C(cyan dim) %p %Cred %h %C(white dim) %s %Cgreen(%cr)%C(cyan dim) <%an>%C(bold yellow)%d%Creset'

10

আপনি একটি সরঞ্জাম ব্যবহার করতে পারেন gitk


আমি গিটকে ভালোবাসি, তবে gitkম্যাকের মধ্যে আমি কিছু জানলাম না । আপনার যদি কোনও পরামর্শ থাকে তবে দয়া করে আমাকে জানান। আমি ব্যবহার শুরু করেছি Github Desktopতবে কমান্ড লাইনে কাজ করতে পছন্দ করি।
এএমিক মিং

6

উবুন্টুতে পরীক্ষিত:

sudo apt install git-extras
git-show-tree

এটি এখানে 2 টি সবচেয়ে বেশি উত্তোলিত উত্তরের মতো একটি প্রভাব তৈরি করে।

সূত্র: http://manpages.ubuntu.com/manpages/bionic/man1/git-show-tree.1.html


এছাড়াও, আপনি যদি আর্কিনিস্ট ইনস্টল করে থাকেন (সংশোধন: উবারের আরকানাইস্টের কাঁটা ইনস্টল করা আছে - ইনস্টলেশনের নির্দেশাবলীর জন্য এই উত্তরটির নীচে দেখুন ), arc flowপ্রবাহের উপর নির্ভরশীলতার একটি সুন্দর নির্ভরশীলতা গাছ দেখায় (যেমন: যা আগে arc flow new_branchবা ম্যানুয়ালি মাধ্যমে সেট করা হয়েছিল git branch --set-upstream-to=upstream_branch)।

বোনাস গিট কৌশল:

সম্পর্কিত:

  1. "আর্ক গ্রাফট" এবং "অর্ক প্যাচ" এর মধ্যে পার্থক্য কী?

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