मैं हर Git कमांड की शुरुआत में "git" टाइप करने से कैसे बचूँ?


190

मुझे आश्चर्य हो रहा है कि gitहर Git कमांड की शुरुआत में शब्द टाइप करने से बचने का कोई तरीका है ।

यह अच्छा होगा यदि "Git मोड"git में जाने के लिए कमांड प्रॉम्प्ट खोलने के बाद शुरुआत में केवल एक बार कमांड का उपयोग करने का एक तरीका था ।

उदाहरण के लिए:

git>

जिसके बाद हम जो भी कमांड टाइप करते हैं वह डिफ़ॉल्ट रूप से Git कमांड के रूप में होती है।

डेटाबेस कमांड लिखने के लिए हम MySQL शेल का उपयोग करने के तरीके के समान हैं:

mysql>

यह मुझे gitदिन में सैकड़ों बार टाइप करने से बचाएगा ।

नोट: मैं git-bashविंडोज पर उपयोग कर रहा हूं ।


87
उन लोगों के लिए जिन्होंने इसे ऑफ-टॉपिक होने के आधार पर बंद करने के लिए मतदान किया है, कृपया उस टेक्स्ट को पढ़ें जिस पर आप क्लिक कर रहे हैं: "सामान्य कंप्यूटिंग हार्डवेयर और सॉफ़्टवेयर के बारे में प्रश्न स्टैक ओवरफ़्लो के लिए ऑफ़-टॉपिक हैं, जब तक कि वे सीधे प्रोग्रामिंग के लिए मुख्य रूप से उपयोग किए जाने वाले टूल को शामिल नहीं करते हैं। । " गिट एक प्रोग्रामर द्वारा उपयोग किया जाने वाला उपकरण है। जैसा कि इस तथ्य से पता चलता है कि इस साइट पर इसका अपना टैग है।
JBentley

5
आप "git" इतना क्यों टाइप कर रहे हैं? आपकी IDE में शक्तिशाली vcs एकीकरण एक कीपर में उपलब्ध होना चाहिए। क्या आप दिन में ५० बार "गिट पुल" टाइप करते हैं, या ctrl-t ... जब आप होने की जरूरत नहीं है, तो कमांड लाइन योद्धा बनना बंद करें;)
ste:

8
@vikingsteve व्यावहारिक रूप से कमांड लाइन के संदर्भ में सभी सहायता और ज्ञान दिया जाता है।
एड रान्डल

6
@vikingsteve मैं इसे इतना टाइप कर रहा हूं क्योंकि यह तेज है। मैं टाइप करता हूं ~ 100wpm, अधिक अगर मैं अंतरंग रूप से परिचित हूं जैसे मैं Git के साथ हूं; जीयूआई पर क्लिक करने की तुलना में, यह सिर्फ आसान है। आपकी पसंदीदा IDE में कीबोर्ड शॉर्टकट हो सकते हैं। आपके लिए अच्छा है। जब <M-Tab> git blah <CR> मेरी मांसपेशी मेमोरी में पहले से ही है तो मैं उन्हें सीखने में समय क्यों बर्बाद करूंगा?
निधि मोनिका का मुकदमा

3
एक "यह सवाल बंद होना चाहिए क्योंकि उपयोगकर्ता एक सवाल पूछ रहा है जो समझ में नहीं आता है" - जैसे कि मुझे वह मिलता है जो आप पूछ रहे हैं लेकिन शेल आपको कैसे पता है कि आप "गैर के साथ शुरू करना चाहते हैं" git कमांड "अगर वास्तव में ऐसा करने का कोई तरीका था।
user3728501

जवाबों:


190

आप gitsh कोशिश करना चाहते हो सकता है । उनके रीडमे से:

gitshकार्यक्रम Git के लिए एक इंटरैक्टिव खोल है। भीतर से gitshआप अपने स्थानीय उपनाम और विन्यास का उपयोग करते हुए, कोई भी git कमांड जारी कर सकते हैं।

  • Git कमांड समूहों में आते हैं। gitएक समर्पित गिट शेल में उन्हें चलाने से अधिक से अधिक टाइप करने से बचें :
sh$ gitsh
gitsh% status
gitsh% add .
gitsh% commit -m "Ship it!"
gitsh% push
gitsh% ctrl-d
sh$

या वहां से जुड़ी अन्य परियोजनाओं पर एक नज़र:

  • git-sh - Git प्रॉम्प्ट, एलियासेस और पूर्णता के साथ एक अनुकूलित बैश शेल।
  • gitsh - पर्ल में लिखा गया एक साधारण गिट शेल।
  • उत्तर - एक REPL में उप कार्यक्रम के साथ किसी भी कार्यक्रम को लपेटता है।

नोट: यह खुद इस्तेमाल नहीं किया है।


22
गड़गड़ाहट ... repl(1)एक REPL नहीं है। यह कुछ भी विकसित या मुद्रित नहीं करता है। यह कार्यक्रम चलाता है।
केविन

11
@ केविन यह उपयोगकर्ता के अनुरोधों में पढ़ता है, उपयोगकर्ता अनुरोध का मूल्यांकन करता है (एक कार्यक्रम चलाकर), और कार्यक्रम के उत्पादन को प्रिंट करता है। यह भी गोले क्या करते हैं।
यक्क - एडम नेवरामॉन्ट

2
@ याक्क-एडमनेरावमोंट: नहीं, यह सबसे निश्चित रूप से "कार्यक्रम के उत्पादन को प्रिंट नहीं करता है।" यह प्रोग्राम के स्टैडआउट को टर्मिनल तक पहुंचाता है, और फिर प्रोग्राम अपने स्वयं के आउटपुट को प्रिंट करता है - सिवाय इसके कि प्रोग्राम के स्टडआउट को पहले से ही टर्मिनल तक हुक किया गया है (स्वचालित रूप से fork()/ पर विरासत में मिला है exec()), इसलिए repl(1)ऐसा नहीं भी कर रहा है
केविन

6
@ केविन मैं आपकी भावना को समझता हूं, हालांकि एक REPL की सख्त परिभाषा विभिन्न भाषाओं में अधिकांश दुभाषिया "REPL" को बाहर कर देगी । केवल शुद्ध कार्यात्मक भाषाओं में आप यह सुनिश्चित कर सकते हैं कि मूल्यांकन का कोई साइड-इफेक्ट नहीं है, लेकिन यहां तक ​​कि हास्केल में "आरईपीएल" जीएचसीआई डिफ़ॉल्ट रूप से भी IOक्रियाओं को स्वीकार करेगा , और उन्हें साइड-इफेक्ट सहित निष्पादित करेगा जैसे कि टर्मिनल से जुड़े स्क्रीन पर प्रिंटिंग।
लेफ्टरनबाउट

2
@ केविन replएक स्टैंडअलोन REPL नहीं है; यह एक REPL प्रणाली बनाने का एक साधन है जिसमें replकेवल इंटरैक्टिव घटक है। क्या वह उचित है?
काइल स्ट्रैंड

116

एक पर्ल-लाइनर जो यह करेगा:

perl -nE 'BEGIN {print "git > "} system "git $_"; print "git > "'

इससे आप जो भी टाइप करेंगे, उसे प्रीफिक्स करेंगे git। और यह तब तक करता रहेगा जब तक कि आप हिट नहीं हो जाते ^D


6
यह वास्तव में ओपी के लिए क्या पूछ रहा है, और बहुत हल्के पैकेज में समान है!
रूहोला

2
यह सही होगा यदि यह रीडलाइन के साथ काम करता है लेकिन दुर्भाग्य से यह नहीं है (आश्चर्य की बात नहीं है क्योंकि यह कड़ाई से पर्ल के -neझंडे के आसपास हैक है )।
कोनराड रुडोल्फ

11
@KonradRudolphperl -MTerm::ReadLine -E '$n = Term::ReadLine -> new ("git"); while ($_ = $n -> readline ("git > ")) {system "git $_"}'

57

यह बिल्कुल वैसा नहीं है जैसा आप पूछ रहे हैं, बल्कि आप अपने ~/.bashrcद्वारा उपयोग किए जाने वाले Git कमांड के लिए कुछ शेल अलायस सेट कर सकते हैं:

alias commit='git commit'
alias checkout='git checkout'
...

यह भी ध्यान दें कि आप खुद ही Git के भीतर उपनाम बना सकते हैं:

git config --global alias.ci commit
git config --global alias.co checkout
...

यह आपको git ciइसके बजाय टाइप करने देता है git commit, और इसी तरह।


7
इस दृष्टिकोण का दोष यह है कि प्रत्येक Git कमांड के लिए एक अलग उपनाम बनाया जाना चाहिए।
टिम बेगेलिएसेन

22
केवल सबसे अधिक बार उपयोग के लिए। मेरा मतलब है, आप कितनी बार उपयोग करते हैं git hash-objectया git interpret-trailers? मैं इसे केवल एक विकल्प के रूप में पेश कर रहा हूं क्योंकि जहां तक ​​मुझे पता है, जो प्रश्न पूछ रहा है वह वास्तव में मौजूद नहीं है।
थॉमस

15
के अलावा ciके लिए commitमैं भी एक खोल अन्य नाम का उपयोग gकरने के लिए git, इस टाइपिंग का सबसे कम कर देता है और मुझे मेरी पसंदीदा खोल में रहने देता है।
rkta

32

मैं अपने GitBash के लिए ~ / .bash_profile में उपनामों का उपयोग करने का बहुत बड़ा प्रशंसक हूं। यदि आप इस दृष्टिकोण के साथ जाते हैं, तो यहां मेरे पसंदीदा हैं:

# git
alias gw='git whatchanged'
alias gg='git grep -n -C8'
alias ggi='git grep -i -n -C8'
alias gb='git branch'
alias gbd='git branch -D'
alias gba='git branch -a'
alias gc='git checkout'
alias gcp='git cherry-pick'
alias gfo='git fetch origin'
alias s='git status'
alias gmom='git merge origin/master'
alias grom='git rebase origin/master'
alias gpom='git pull origin master'
alias pplog='git log --oneline --graph --decorate'

3
जहां प्रतिबद्ध है: P
qwr

14
मैं शामिल नहीं है commitया pushजब से मैं कुछ अतिरिक्त सेकंड (टाइप करते समय) यह सुनिश्चित करना चाहता हूं कि मैं कुछ नष्ट नहीं कर रहा हूं
याकूबिर

3
जब तक आप बल पुश का उपयोग नहीं करते तब तक कमिट और पुश कुछ भी नष्ट करने में सक्षम नहीं होना चाहिए। लेकिन मैं पहले से git स्टेटस का उपयोग करने की कोशिश करता हूं।
क्वीन

1
यह वही है जो मैंने किया है, +1। यद्यपि मैं अन्य प्रश्नों का उल्लेख करते हुए gitsh की कोशिश करने के लिए लुभा रहा हूं
कॉफीटेबल एस्प्रेसो

1
@CopyTableEspresso मैं इस तथ्य का सम्मान करता हूं कि आप स्वीकार करते हैं कि कुछ कीस्ट्रोक्स अपडेट को बचाने और एक परियोजना को नष्ट करने के बीच का अंतर है।
लॉजिकलब्रांच

31

अपने संपादक का उपयोग करें।

commitअपने पसंदीदा संपादक से बनाम कोड जैसी कमांड टाइप करें और git के साथ अधिक कुशल बनें:

यहां छवि विवरण दर्ज करें

या gitसभी कमांड प्राप्त करने के लिए टाइप करें:

यहां छवि विवरण दर्ज करें


13
मैं इन सभी वोटों से हैरान हूं। यह उन लोगों के लिए भयानक उत्तर नहीं है जो इन सुविधाओं का समर्थन करने वाले आईडीई का उपयोग करते हैं।
ग्लेन पियर्स

4
मुझे लगता है कि लोगों ने डाउन-वोट किया है क्योंकि हर कोई वीएस-कोड का उपयोग / पसंद नहीं करता है। किसी भी तरह से, मुझे लगता है कि यह एक अच्छा समाधान है तो मुझ से +1।
LogicalBranch

4
@ लॉजिकलब्रांच, लोग आमतौर पर कमांड लाइन से गिट का उपयोग कर रहे हैं, और मुझे इस बारे में पता है, लेकिन कुछ संपादकों के अंदर गिट समर्थन मौजूद है और यह कोशिश करने लायक है।
प्रोस्टी

1
मुझे यह उत्तर पसंद नहीं है क्योंकि सभी लोग वीएस कोड का उपयोग नहीं करते हैं (मैं व्यक्तिगत रूप से इसे पसंद नहीं करता हूं), लेकिन डाउनवोट नहीं करूंगा क्योंकि यह पीपीएल के लिए एक अच्छा समाधान है जो इसका उपयोग नहीं करते हैं।
कॉफीटेबलस्प्रेसो

1
@ कॉफ़ीटेबलएस्प्रेसो, अगर आप उदात्त का उपयोग कर रहे हैं तो एक प्लगइन है जिसे gitsavvy कहा जाता है , और इसी तरह ... लगभग हर संपादक आजकल git के लिए किसी न किसी तरह का समर्थन करता है। यह उत्तर का बिंदु था, जैसा कि आप "अपने संपादक का उपयोग करें" पढ़ सकते हैं।
प्रोस्टी

26

मेरे एक दोस्त ने एक छोटी सी बैश स्क्रिप्ट बनाई जो इसे पूरा करती है। इसे रिप्लीज कहा जाता है ।

$ replify git
Initialized REPL for [git]
git> init
Initialized empty Git repository in /your/directory/here/.git/

git> remote add origin https://your-url/repo.git

git> checkout -b new-branch
Switched to a new branch 'new-branch'

git> push

6
ठीक है, मैंने पहले ही उमर के जवाब पर उल्लेख किया है, लेकिन evalमूल स्क्रिप्ट स्रोत का उपयोग सबसे अच्छा विचार नहीं है। अपने दोस्त को while IFS= read -r -p "git> " gitcmd; do [ "x$gitcmd" != "x" ] && git "$gitcmd";doneइसके बजाय उपयोग करने के लिए
कहें

23

यहाँ एक और तरीका है। यह भी काफी नहीं है कि क्या पूछा गया था, लेकिन मैं इसे कुछ समय के लिए उपयोग कर रहा हूं और यह बहुत अच्छा है। निम्नलिखित पंक्ति को अपने में जोड़ें ~/.bashrc:

complete -E -W git

अब खाली बैश प्रॉम्प्ट में टैब को दबाने पर "गिट" टाइप हो जाएगा।


5
ध्यान दें कि यदि आप दूसरे शेल का उपयोग कर रहे हैं, तो आपको इसे उपयुक्त फ़ाइल में डालना होगा। उदाहरण के लिए, zsh के लिए, आप इसे डालेंगे, tsh के लिए, आप इसे डाल ~/zshrcदेंगे ~/tcshrc, आदि
TheOnlyMrCat

20

मैं जानता हूँ कि यह एक बहुत ही देर से जवाब है, लेकिन इस सवाल का वास्तव में मेरे साथ एक नोट मारा क्योंकि मैं किया गया है के साथ काम कर दुख पुनरावृत्ति इस तरह से एक काफी के लिए है, जबकि अब।

मुझे यकीन है कि आप के बारे में नहीं कर रहा हूँ, लेकिन मैं ईमानदारी से नहीं है (मैं फिर कहता हूँ ऐसा नहीं ) हर कल्पित नामों का निर्माण करना चाहते हैं git, आदेश तो बजाय मैं नामक एक अजगर पटकथा लिखी NoGit इस समस्या को हल करने के लिए:

#!/usr/bin/env python
import sys, os, signal, atexit, readline, subprocess

commands, stop, history_file = [], False, os.path.join(os.getcwd(), "git.history")

def run_commands():
  stop = True
  for cmd in commands:
    command = ["git" if not cmd.startswith("git ") else ""]
    command = [cmd] if command[0] == "" else [command[0], cmd]
    subprocess.Popen(command).communicate()
    commands = []

def signal_handler(sig, frame):
  run_commands()
  sys.exit(0)

try:
  readline.read_history_file(history_file)
  signal.signal(signal.SIGINT, signal_handler)

  while True:
    if stop == True:
      break
    command = input("git> ")
    if command == "%undo":
      commands.pop()
    elif command == "%run":
      run_commands()
    elif command == "%exit":
      sys.exit(0)
    else:
      commands += [cmd.strip() for cmd in command.split(";")]

  signal.pause()
  readline.set_history_length(-1)
except IOError:
  pass

atexit.register(readline.write_history_file, history_file)

NoGit "git" कीवर्ड के अनावश्यक पुनरावृत्ति को रोकने के लिए एक सरल अजगर स्क्रिप्ट है।

प्रलेखन:

  • %undoआदेश ढेर से पिछले आदेश को हटा
  • %runआदेश ढेर में कमांड चलाता है और ढेर को साफ करता है
  • %exitआदेश कुछ भी करने के बिना CLI बंद कर देता है
  • दबाने ctr+cपर चलने जैसा ही है%run; %exit
  • स्क्रिप्ट उन कमांड्स को सेव करती है, जिन्हें स्क्रिप्ट git.historyके समान फ़ोल्डर में फाइल में निष्पादित किया गया था
  • आप एक अर्ध-उपनिवेश का उपयोग करके एक पंक्ति में कई कमांड जोड़ सकते हैं
  • आप gitकमांड की शुरुआत में कीवर्ड का उपयोग कर सकते हैं और स्क्रिप्ट इसे डुप्लिकेट नहीं करेगी ( जैसे: git init यह नहीं बनता है git git init)

उदाहरण के आदेश:

  1. init
  2. add .
  3. stage .
  4. commit -m "inital commit"
  5. %run; %exit

अतिरिक्त जानकारी (लिनक्स उपयोगकर्ताओं के लिए):

यदि आप चाहते हैं कि आप .pyएक्सटेंशन को हटा सकते हैं और इसे एक निष्पादन योग्य में बदल सकते हैं:

mv ./git.py ./git
chmod +x ./git

फिर स्क्रिप्ट को इस तरह से कॉल करने के बजाय:

python3 git.py

इसके बजाय आप इसे चलाएंगे:

./git

अतिरिक्त जानकारी (आलसी लोगों के लिए):

यदि आप आलसी हैं और ./फिर टाइप करना नहीं चाहते हैं तो आप इस स्क्रिप्ट को अपने /bin/फ़ोल्डर में ले जा सकते हैं और इसके लिए एक उपनाम बना सकते हैं।

यदि आप वास्तव में, वास्तव में आलसी हैं, तो निम्न आदेशों का उपयोग करें:

sudo cp ./git /bin/nogit
sudo chmod +x /bin/nogit
alias nogit='/bin/nogit'

यदि आप वास्तव में, वास्तव में, वास्तव में आलसी हैं, तो एक-लाइनर को कॉपी और पेस्ट करें:

sudo cp ./git /bin/nogit && sudo chmod +x /bin/nogit && alias nogit='/bin/nogit'

यदि आपका आलस्य मानवता के लिए पहले अज्ञात स्तर तक पहुंच गया है, तो यहां एक ही लाइनर का अधिक कॉम्पैक्ट संस्करण है:

sudo cp ./git /bin/nogit;sudo chmod +x /bin/nogit;alias nogit='/bin/nogit'

सौभाग्य।


17

एक और दृष्टिकोण जो किसी भी कमांड के साथ काम करेगा: Ctrl + R (रिवर्स-आई-सर्च) का उपयोग करें।

रिवर्स-आई-सर्च आपको अपने कमांड इतिहास को खोजने की अनुमति देता है। अपने खोज स्ट्रिंग को दबाने के बाद एक ही स्ट्रिंग के साथ आगे की खोज को दोहराने के लिए Ctrl + R को दोहराएं।

आपको केवल एक बार कमांड टाइप करने की आवश्यकता है, फिर आप कमांड के किसी भी सब्स्ट्रक्शन से उस कमांड को याद कर सकते हैं। ज्यादातर मामलों में, आप केवल दो से तीन अच्छी तरह से खोज पत्र के साथ पूरे बहुत लंबे आदेशों और उनके विभिन्न प्रकारों को याद कर सकते हैं। आपके शेल को सामान्य रूप से उपयोग करने के अलावा किसी भी पूर्व-रूपांतरण की आवश्यकता नहीं है और यह स्व-अनुकूल है कि आपने शेल का उपयोग कैसे किया, बस एक बार पूर्ण कमांड टाइप करें और कमांड स्वचालित रूप से आपके कमांड इतिहास में जुड़ जाएंगे।

  • git commit --amend: <Ctrl+R>am
  • git pull: <Ctrl+R>pu
  • git rebase --rebase-merges -i --onto origin/develop origin/develop feature/blue-header: <Ctrl+R>blu
  • git rebase --abort: <Ctrl-R>ab
  • git rebase --continue: <Ctrl-R>con
  • docker-compose stop && git pull && make && docker-compose up -d: <Ctrl-R>up
  • आदि

इसके अलावा, Ctrl-R केवल बैश पर काम नहीं करता है, लेकिन बहुत सारे प्रोग्राम जो रीडलाइन लाइब्रेरी का उपयोग करते हैं (और उनमें से बहुत सारे हैं), जैसे कि पायथन शेल, IPython, mysql खोल, psql खोल, irb (रूबी), आदि।


15

अपने उदाहरण में, आप इसे MySql प्रांप्ट से तुलना करते हैं। जिस तरह से काम करता है कि एक MySql प्रक्रिया शुरू होती है, और आप उस प्रक्रिया को अपनी आज्ञा देते हैं। जैसे, अपनी पसंद की भाषा में कुछ समान क्यों नहीं लिखें? यहाँ C ++ में एक सरल उदाहरण दिया गया है:

#include <iostream>
#include <cstdlib>

int main(int argc, char *argv[]){
    while(true){
        std::cout << "git> ";
        std::cout.flush();
        std::string command;
        std::getline(std::cin, command);
        if(command == "exit") break;
        std::system("git " + command);
    }

    return 0;
}

कृपया ध्यान दें कि मैंने सिर्फ स्मृति से लिखा है और मैंने इसे एक संकलक के साथ नहीं जांचा है। तुच्छ वाक्यविन्यास त्रुटियाँ हो सकती हैं।


बस मेरा विचार। स्टैक ओवरफ्लो पर कोई भी इस तरह के कार्यक्रम को स्वयं कोड करने में सक्षम होना चाहिए। प्रोग्रामिंग भाषा वास्तव में मायने नहीं रखती है।
थॉमस वेलर

@ थोमसवेलर मैं निश्चित रूप से सहमत हूं। मैंने कार्यक्रम को ठीक से दिखाने के लिए पोस्ट किया कि मैं किस बारे में बात कर रहा था, इसलिए नहीं कि यह लिखने के लिए एक कठिन कार्यक्रम है।
जॉन ०१ डिव

9
यदि आप प्रोग्राम को बग-मुक्त करना चाहते हैं और सुविधाओं का एक सभ्य राशि चाहते हैं, तो आप इस दृष्टिकोण के साथ बहुत समय का निवेश करने जा रहे हैं। उदाहरण के लिए, प्रारंभिक बिल्ड विफलता (std :: system () const char *) को ठीक करने के बाद आप देखेंगे कि EOF पर एक अनंत लूप है। आप इतिहास / रीडलाइन सपोर्ट, टैब पूरा करना, निर्देशिका बनाने के लिए कुछ बिल्डिंग्स / env vars / shell out / ... इत्यादि चाहते हैं, यदि मौजूदा सॉफ़्टवेयर (जैसे gitsh इस मामले में) है, तो इसका उपयोग क्यों नहीं करते?
खानाबदोश

1
@nomadictype यह एक मान्य आलोचना है, लेकिन अन्य सॉफ़्टवेयर सीखना भी समय की प्रतिबद्धता है। इस दृष्टिकोण के साथ लाभ यह है कि इसे प्राप्त करने के लिए केवल कुछ ही मिनटों की आवश्यकता होती है, और ऐसा लगता है कि ठीक वही होगा जो आप अपेक्षा करते हैं या चाहते हैं (परिवर्तनों के साथ)।
२२:०४ पर john01dav

2
रीडलाइन, लाइन एडिटिंग, हिस्ट्री सपोर्ट, एलएस आदि जैसे साधारण कमांड चलाने में सक्षम होने के कारण आपको चार कीस्ट्रोक्स की तुलना में बहुत अधिक खर्च करना पड़ रहा है या इसलिए आपने इससे बचा लिया।
रेयान

13

बुनियादी सामान के लिए, आप कर सकते हैं:

function ggit(){ while true; do printf 'git> '; read; eval git $REPLY; done }
git> status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    deleted:    yarn.lock

no changes added to commit (use "git add" and/or "git commit -a")
git> add .
git> status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    yarn.lock

git>

Ctrl + c के साथ बाहर निकलें


2
निर्णय विचार, हालांकि दो समस्याएं हैं। एक, इसके ;बाद क्या होता है bash: syntax error near unexpected token ? '' दूसरा, evalभाग कमजोरियों का खतरा है। उदाहरण के लिए, विचार करें कि क्या होगा यदि मैं status;cat /etc/passwdइस छोटे खोल में टाइप करता हूं । हानिरहित उदाहरण, लेकिन आपको यह विचार मिलता है कि क्या हो सकता है। आप सरल कर सकते हैं कि while IFS= read -r -p "git> " gitcmd; do [ "x$gitcmd" != "x" ] && git "$gitcmd";doneबेशक यह बुलेट प्रूफ नहीं है, लेकिन 1 - यह सरल और 2 है - गैर-गिट कमांड निष्पादन (दोहरे उद्धरण चिह्नों के आधार पर) से बचा जाता है। आदर्श नहीं है, बस थोड़ा बेहतर है
सर्जियो कोलोडियाज़नी

@ एबिगेल फनी :) क्यों हाँ, शेल ही सबसे सुरक्षित एप्लिकेशन नहीं है। यहां तक ​​कि फ़ाइल को कैट करना भी एक समस्या हो सकती है। हालाँकि, जो बिंदु मैं मूल रूप से बना रहा था, वह यह है कि हम mysql दुभाषिया को शेल कमांड निष्पादित नहीं करते, बिना शुरुआत में systemया \!कम से कम। जहां यह धारणा हो सकती है कि यह "उत्तर" gitकेवल कमांड निष्पादित करता है , यह वास्तव में इससे अधिक की अनुमति देता है।
सर्गी कोलोडियाज़नी

@ एबिगेल मैं डरता नहीं हूं, क्योंकि मुझे पता है कि यह क्या करता है। अन्य जो नहीं करते - वे कुछ नहीं तोड़ सकते हैं। और फिर से - eval कमांड चलाने के लिए सबसे अच्छा विचार नहीं है, खासकर जब उपयोगकर्ता-नियंत्रित इनपुट शामिल है।
सर्गी कोलोडियाज़नी

इसके बाद टाइपो तय किया do। धन्यवाद! पुन: सुरक्षा: यह स्पष्ट रूप से एक अलग आवेदन के रूप में वितरित करने के लिए नहीं है। .bash_profileयदि आप टाइपिंग गिट पसंद नहीं करते हैं तो बस अपने में डाल दें । मैं इसे "असुरक्षित" होने के बारे में बहुत चिंतित नहीं हूं। यदि आप अपने बैग में सामान चिपकाते हैं जो आपको समझ में नहीं आता है (इस ऑनलाइनर स्क्रिप्ट सहित), तो आप बुरा समय मानेंगे। मुझे यह पसंद है क्योंकि यह सरल, लिखने में आसान और पढ़ने में आसान है, और सुधारने में आसान है।
उमुर कोंटाकी

2

जब मैंने कॉनमू के साथ विंडोज 7 का उपयोग किया, तो मैंने अपने देव पर्यावरण स्टार्टअप स्क्रिप्ट में निम्नलिखित जोड़ा:

doskey g=git $*

इसके साथ, मैं केवल gटाइपिंग के बजाय कमांड का उपयोग कर सकता था git। पिछली बार मैंने विंडोज 10 और कॉनमू के साथ कोशिश की थी, यह काम नहीं किया, एक बग है, मुझे लगता है, लेकिन यह एक कोशिश के लायक है।


2

एक कोष्ठक संपादक का उपयोग करें, अपने कोड और गिट कमांड का उपयोग करना आसान है, इसमें कई विशेषताएं भी हैं।

यहां छवि विवरण दर्ज करें

शीर्ष दाएं कोने में एक्सटेंशन स्थापित करने के लिए दूसरे दूरबीन आइकन का उपयोग किया जाता है।

यहां छवि विवरण दर्ज करें

brackets gitउपरोक्त छवि की तरह खोज एक्सटेंशन और इसे स्थापित करें।

यहां छवि विवरण दर्ज करें

फिर से ऊपर दाएं कोने में चौथा आइकन दिखाई देगा, इसलिए बस ऊपर की छवि की तरह बदलाव पर क्लिक करें और देखें।

यदि आप कोष्ठक स्थापित करना चाहते हैं, तो निम्न आदेशों का उपयोग करें:

sudo add-apt-repository ppa:webupd8team/brackets
sudo apt-get update
sudo apt-get install brackets

अधिक जानकारी के लिए, आप पढ़ सकते हैं: उबंटुपीट पर उबंटू और लिनक्स टकसाल में ब्रैकेट कोड संपादक कैसे स्थापित करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.