বাশ কমান্ড প্রম্পটে গিট শাখা যুক্ত করা হচ্ছে


161

আমি বর্তমানে সফলতা ছাড়াই ব্যাশ প্রম্পটে (চেক-আউট) কাজ করছি এমন গিট শাখাটি যুক্ত করার চেষ্টা করেছি .. ( আমার বর্তমান পথ যা সক্রিয় ডিরেক্টরি / ফাইল অক্ষত দেখায় ) আমার বাড়িতে আমার একটি .bashrc ফাইল রয়েছে, তবে আমি অনেক লোককে। প্রোফাইল ফাইল উল্লেখ করে দেখেছি ..


3
আমি ইউনিক্স / লিনাক্স এক্সচেঞ্জ এ আরও জিজ্ঞাসা করা হবে বলে মনে করি।
কোল বুসবি

আমি 10 টি বিভিন্ন হাও-টোসের মতো চেষ্টা করেছি, তাদের মধ্যে কিছু কাজ করেছে তবে আমি গিট শাখা পেয়েছি এবং আমার আগের কাজ ডিরেক্টরি / পথটি হারিয়ে ফেলেছি ..
জর্জ ক্যাটসানোস

গিট 1.9.3+ শাখাটি প্রদর্শন করার জন্য একটি আকর্ষণীয় উপায় নিয়ে এসেছে: নীচে আমার উত্তরটি দেখুন
ভোনসি

1
পছন্দ করেছেন
জর্জ ক্যাটসানোস

1
@ জর্জক্যাটসনোস চার বছর নিশ্চিতভাবে আমাকে দেখিয়েছিলেন: পি
কোল

উত্তর:


161

গিট ১.৯.৩ বা তার পরে: ব্যবহার করুন __git_ps1

গিট একটি শেল স্ক্রিপ্ট সরবরাহ করে git-prompt.shযা একটি ফাংশন অন্তর্ভুক্ত __git_ps1করে

ব্যাশ PS1 প্রম্পটে যোগ করার জন্য পাঠ্য মুদ্রণ করে (শাখার নাম অন্তর্ভুক্ত)

এর সর্বাধিক প্রাথমিক ব্যবহার হ'ল:

$ __git_ps1
(master)

এটি একটি alচ্ছিক বিন্যাসের স্ট্রিংও গ্রহণ করে:

$ __git_ps1 'git:[%s]'
git:[master]

এটি কিভাবে পাবেন

প্রথমে ফাইলটি কোথাও অনুলিপি করুন (যেমন ~/.git-prompt.sh)।

বিকল্প 1: আপনার ফাইল সিস্টেমে একটি বিদ্যমান অনুলিপি ব্যবহার করুন। উদাহরণ (ম্যাক ওএস এক্স 10.15):

$ find / -name 'git-prompt.sh' -type f -print -quit 2>/dev/null
/Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh

বিকল্প 2: গিটহাব থেকে স্ক্রিপ্টটি টানুন ।

এরপরে, আপনার নিচের লাইনটি যুক্ত করুন .bashrc/.zshrc:

source ~/.git-prompt.sh

শেষ অবধি, কমান্ড-প্রতিস্থাপন হিসাবে আপনার PS1কল করতে পরিবর্তন করুন __git_ps1:

ব্যাশ:

PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '

Zsh:

setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '

গিট <1.9.3

তবে মনে রাখবেন যে কেবল 1.9.3 গিট (মে 2014) বা তার পরে আপনাকে সেই শাখার নামটি নিরাপদে প্রদর্শন করতে দেয় (!)

রিচার্ড হ্যানসেন দ্বারা 8976500 প্রতিশ্রুতি দেখুন ( richardhansen) :

বাশ এবং zsh উভয়ই PS1 এর মানকে প্যারামিটার সম্প্রসারণ , কমান্ড প্রতিস্থাপন এবং গাণিতিক সম্প্রসারণের বিষয় বিবেচনা করে।

PS1দুটি বা তিন-যুক্তি মোডে চলার সময় কাঁচা, অনির্বাচিত শাখার নাম অন্তর্ভুক্ত করার পরিবর্তে শাখার নাম PS1ধারণ করে একটি ভেরিয়েবল রেফারেন্স করুন ruct

শেলগুলি পুনরাবৃত্তভাবে প্রসারিত না হওয়ার কারণে এটি বিশেষতঃ তৈরি করা শাখার নামগুলি দ্বারা স্বেচ্ছাসেবীর কোড প্রয়োগ কার্যকর করে না

'$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)'.

কী মনগড়া মন এমন একটি শাখার নাম রাখবে? ;) ( এক্স কেসিডির মতো একজন মায়ের পাশে )

আরও উদাহরণ

স্থির_ড্রিমিং_উ মন্তব্যগুলিতে রিপোর্ট করেছে :

আপনি xterm(আমার মধ্যে .bashrc) সাথে রঙিন প্রম্পট চাইলে এটি দুর্দান্ত কাজ করবে বলে মনে হচ্ছে :

PS1='\[\e]0;\u@\h: \w\a\]\n${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\03‌​3[01;34m\]\w\[\033[00m\]$(__git_ps1)\$ ' 

শাখা সহ সবকিছুই আলাদা রঙ।

লিনাক্স মিন্টে 17.3 দারুচিনি 64-বিট:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[00m\]$(__git_ps1) \$ ' 

3
আপনি যখন গিট রেপোতে আসলে আপনি কীভাবে বর্তমান গিট শাখায় প্রম্পট সেট করতে পারেন। আপনি যদি কোনও সাধারণ ডিরেক্টরিতে থাকেন তবে এটি স্বাভাবিক প্রম্পট দেখায়।
জুবায়ের আলম

1
@ still_dreaming_1 আপনি অথবা আপগ্রেড করার জন্য কম্পাইল Git খুব সহজেই যদিও পারেন: stackoverflow.com/a/24847953/6309
VonC

1
আপনি xterm (.bashrc দ্বারা) এর সাথে একটি রঙের প্রম্পট চাইলে এটি দুর্দান্ত কাজ করবে বলে মনে হচ্ছে: PS1='\[\e]0;\u@\h: \w\a\]\n${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1)\$'শাখা সহ সবকিছুই আলাদা রঙ।
এখনও_ড্রিমিং_1

5
সেই পিএস 1 আমি লিনাক্স মিন্টে 17.3 দারুচিনি PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[00m\]$(__git_ps1) \$ '
bit৪-বিটে

1
বর্তমান মাস্টার github.com/git/git/blob/master/contrib/completion/git-prompt.shআছেন - আমি মনে করি যে উত্তরটিতে আমাদের সাথে লিঙ্ক করা উচিত, যদি ভবিষ্যতে কোনও শোষণের সন্ধান পাওয়া যায়? এছাড়াও: আমি কি আমার PS1 লাইনে $ এবং "অব্যাহতি ছিল, কিন্তু যে সম্ভবত তার জটিলতা কারণে এর।
ArchimedesMP

57

নীচের মত পদক্ষেপগুলি অনুসরণ করুন: (লিনাক্স)

ফাইলটি সম্পাদনা করুন ~/.bashrc, নিম্নলিখিত লাইনগুলি শেষে প্রবেশ করতে (ম্যাকের ক্ষেত্রে, ফাইলটি হবে ~/.bash_profile)

# Git branch in prompt.
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

এখন, নতুন টার্মিনাল উইন্ডোটি শুরু করুন এবং কোনও গিট-রেপোতে প্রবেশ করার চেষ্টা করুন। প্রম্পট সহ বর্তমান শাখাটি প্রদর্শিত হবে।

4 আরও তথ্য - ম্যাক / লিনাক্স


আমি OSX এ ~ / .bashrc এর পরিবর্তে ~ / .bash_profile পরিবর্তন করা প্রয়োজন বলে মনে করি না।
13


1
রঙের জন্য উপরের পার্স_গিট_ব্র্যাঞ্চে "গিট শাখা" পরিবর্তনকে "গিট-সি রঙ.ুই = সর্বদা শাখা" হিসাবে বিবেচনা করুন। এটির একই রঙ রয়েছে যা গিট শাখা বর্তমান শাখাটি হাইলাইট করতে ব্যবহার করে।
মিনিট আগত

আপনার দ্বারা অনুপ্রাণিত, কিন্তু আমি আমার কার্যকরী ডিরেক্টরিটি নীল হাইলাইটিং সহ পুরো পাথ (\ ডাব্লু) হতে চাই like উদাহরণ: gist.github.com/rmharrison/1885ef6bbb0226eb7b42e2135d5eeca2
rmharrison

তাই কাজ করার জন্য এই পেতে জন্য ম্যাক আমি $ (parse_git_branch) আগের পালাবার নিষ্কাশন ছিল: PS1="\u@\h \W\[\033[32m\]$(parse_git_branch)\[\033[00m\] $ "। যদিও আমি পিএস 1 এর সামনে 'এক্সপোর্ট' ব্যবহার করছি না।
ক্রিস

37

1- আপনার যদি বাশ-সমাপ্তি না হয় ...:sudo apt-get install bash-completion

2- আপনার .bashrc ফাইলটি সম্পাদনা করুন এবং পরীক্ষা করুন (বা যুক্ত করুন):

if [ -f /etc/bash_completion ]; then
  . /etc/bash_completion
fi

3- ... আপনার প্রম্পট লাইনের আগে: export PS1='$(__git_ps1) \w\$ '
( __git_ps1 আপনার গিট শাখা দেখাবে)

4- কর source .bashrc

সম্পাদনা:

আরও পঠন: চাকা পুনর্নবীকরণ করবেন না


হোমস্টেড /
ভ্যাগ্রান্ট

উবুন্টু 16.04 এ দুর্দান্ত কাজ করে
ফ্রিগ

"ডোন্ট রিইনভেন্ট দ হুইল" লিঙ্কটি দুঃখজনকভাবে ভেঙে গেছে।
টেলর আর

@ টেলরআর আমি লিঙ্কটি পুনরুদ্ধার করেছি।
ভনসি

23

এখানে আমি গিটের স্থিতি প্রদর্শন করার জন্য প্রম্পটটি কীভাবে কনফিগার করেছি:

গিট-প্রম্পট স্ক্রিপ্ট পান:

curl -o ~/.git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

এবং আপনার .bashrc ফাইলে নিম্নলিখিত কোড যুক্ত করে আপনার প্রম্পটটি কাস্টমাইজ করুন:

# Load Git functions
source ~/.git-prompt.sh

# Syntactic sugar for ANSI escape sequences
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m'   # Black - Background
bakred='\e[41m'   # Red
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

# Prompt variables
PROMPT_BEFORE="$txtcyn\u@\h $txtwht\w$txtrst"
PROMPT_AFTER="\\n\\\$ "

# Prompt command
PROMPT_COMMAND='__git_ps1 "$PROMPT_BEFORE" "$PROMPT_AFTER"'

# Git prompt features (read ~/.git-prompt.sh for reference)
export GIT_PS1_SHOWDIRTYSTATE="true"
export GIT_PS1_SHOWSTASHSTATE="true"
export GIT_PS1_SHOWUNTRACKEDFILES="true"
export GIT_PS1_SHOWUPSTREAM="auto"
export GIT_PS1_SHOWCOLORHINTS="true"

আপনি যদি আরও জানতে চান তবে আপনি সমস্ত ডটফাইলগুলি এখানে পেতে পারেন: https://github.com/jamming/dotfiles


এখন পর্যন্ত সেরা উত্তর।
বেসিল মুসা

@ হেসাম আপনি PROMPT_BEFOREপরিবেশের পরিবর্তনশীল পরিবর্তন করতে পারবেন এবং $txtwht\wআমি এটি হৃদয় দিয়ে চিনি না, তবে আমি অনুমান করি যে এটি কৌশলটি করেছে
জাগুইল্লা

1
এটি আমার
ম্যাকটিতে

এই চিহ্নগুলি শাখার অবস্থার সাথে সাদৃশ্যযুক্ত, অর্থাত: $সেখানে পরিবর্তনিত পরিবর্তন রয়েছে এবং এর =অর্থ সর্বশেষ প্রতিশ্রুতি প্রত্যন্ত ট্র্যাক করা শাখায় ঠেলে দেওয়া হয়েছিল
জাগুইল্লায়


3

প্রথমে আপনার বাশ প্রোফাইলটি আপনার হোম ডিরেক্টরিতে খুলুন। আপনার ডিফল্ট সম্পাদক ব্যবহার করে আপনার ব্যাশ_ প্রোফাইলটি সম্পাদন করার সহজতম উপায় ।

উদাহরণস্বরূপ, আমি এই কমান্ডটি ব্যবহার করে ভিএস কোড ব্যবহার করে এটি খুলি: কোড .বাশ_ প্রোফাইল ile

তারপরে নীচের কোডগুলি কেবল আপনার বাশে পেস্ট করুন।

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

কাজ

parse_git_branch ()

শাখার নাম আনবে এবং তারপরে PS1 এর মাধ্যমে আপনি এটি আপনার টার্মিনালে প্রদর্শন করতে পারবেন।

এখানে,

= u = ব্যবহারকারীর নাম

@ = স্থির পাঠ্য

\ এইচ = কম্পিউটারের নাম

\ ডাব্লু = বর্তমান ডিরেক্টরি

$ = স্থির পাঠ্য

আপনি আরও কাস্টমাইজেশনের জন্য এই ভেরিয়েবলগুলি পরিবর্তন বা মুছে ফেলতে পারেন।


আপনি যদি প্রথম বার টার্মিনালে বা কনফিগারেশনের পরে তাত্ক্ষণিকভাবে গিট ব্যবহার করেন তবে কখনও কখনও আপনি শাখার নামটি দেখতে পাবেন না।

আপনি যদি এই সমস্যাটি পান তবে চিন্তা করবেন না। সেক্ষেত্রে কেবলমাত্র একটি নমুনা সংগ্রহস্থল তৈরি করুন এবং কিছু পরিবর্তন করার পরে এটি প্রতিশ্রুতিবদ্ধ করুন। কমিট কমান্ড একবার কার্যকর হলে, টার্মিনালটি তখন থেকে গিট শাখা খুঁজে পাবে।


স্ক্রিনশট: টার্মিনালে গিট ব্রাঞ্চ


2
vim ~/.bash

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $"

সর্বশেষ পরিবর্তনগুলি প্রতিফলিত করতে কমান্ডটি অনুসরণ করুন

source ~/.bashrc

আউটপুট: -

chandrakant@NDL41104 ~/Chandrakant/CodeBase/LaravelApp (development) $

0

আপনি যদি মাছের শেলটি ব্যবহার করেন তবে এটি বেশ সোজা হয়ে যাবে। মাছ একটি ইন্টারেক্টিভ শেল যা প্রচুর গুডিজ নিয়ে আসে। আপনি এটি ব্যবহার করে ইনস্টল করতে পারেন apt-get

sudo apt-get install fish

তারপরে আপনি প্রম্পট সেটিংস ব্যবহার করে পরিবর্তন করতে পারেন

> fish_config 
Web config started at 'http://localhost:8001/'. Hit enter to stop.
Created new window in existing browser session.

এখন http://localhost:8001/ প্রম্পট ট্যাবটি খুলতে যান এবং ক্লাসিক + গিট বিকল্পটি চয়ন করুন

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

এখন ব্যবহারের প্রম্পট বোতামটি ক্লিক করুন এবং আপনি সেট হয়ে গেছেন।


0
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]$(parse_git_branch)\n\$ '

এ, সত্যিই সেখানে নগ্ন টার্মিনাল পলায়ন করা হবে না; tputযে কোনও বুদ্ধিমান ব্যক্তির মতো ব্যবহার করুন ।
টবির স্পিড 13

0

উবুন্টু টার্মিনালে আপনার জিআইটি রেপোর শাখার নাম দেখানোর জন্য নীচের পদক্ষেপগুলি অনুসরণ করুন:

পদক্ষেপ 1: নিম্নলিখিত কমান্ডটি ব্যবহার করে টার্মিনালটি খুলুন এবং .bashrc সম্পাদনা করুন।

vi .bashrc

পদক্ষেপ 2: .Bashrc ফাইলের শেষে নিম্নলিখিত লাইনটি যুক্ত করুন:

parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' }

export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

স্টিপি 3: উত্স .bashrc রুট (হোম) ডিরেক্টরিতে করে:

/ Rootfolder: ~ $ source .bashrc

পদক্ষেপ:: পুনরায় চালু করুন এবং টার্মিনালটি খুলুন এবং সেমিডিটি পরীক্ষা করুন। আপনার জিআইটি রেপো ডিরেক্টরি পাথ নেভিগেট করুন এবং আপনার কাজ শেষ হয়েছে। :)


0
root:~/project#  -> root:~/project(dev)# 

আপনার ~ / .bashrc এর শেষে নিম্নলিখিত কোডটি যুক্ত করুন

force_color_prompt=yes
color_prompt=yes
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt


-1

অজগরটিতে আমি একটি ছোট স্ক্রিপ্ট চেষ্টা করেছি যা একটি বিন ফোল্ডারে যায় .... 'গিটপ্রম্পট' ফাইল

#!/usr/bin/env python
import subprocess, os
s = os.path.join(os.getcwd(), '.git')
def cut(cmd):
    ret=''
    half=0
    record = False
    for c in cmd:
        if c == "\n":
            if not (record):
                pass
            else:
                break
        if (record) and c!="\n":
            ret = ret + c
        if c=='*':
            half=0.5
        if c==' ':
            if half == 0.5:
                half = 1
        if half == 1:
            record = True
    return ret
if (os.path.isdir(s)):
    out = subprocess.check_output("git branch",shell=True)
    print cut(out)
else:
    print "-"

এটি কার্যকর এবং স্টাফ করুন

তারপরে বাশ প্রম্পটটি সেই অনুযায়ী সামঞ্জস্য করুন:

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