গিট কমান্ডের সিরিজ থেকে "গিট" ছাড়ুন


0

আমি যখন গিট নিয়ে কাজ করছি, আমি প্রায়শই নিজেকে দেখতে পাই এমন একটি ধারাবাহিক কমান্ড লিখি যা সমস্ত 'গিট' দিয়ে শুরু হয় এবং তারপরে বিভিন্ন যুক্তি অনুসরণ করে।

এমন কি কোনও 'গিট-মোড' প্রবেশ করার জন্য আছে যা আমাকে গিট উপসর্গ ছাড়াই গিট কমান্ডের সমস্ত ব্যবহার করতে দেবে?

উদাহরণস্বরূপ, নিম্নলিখিত আদেশগুলি প্রবেশ করার পরিবর্তে:

git fetch
git status 
git diff
git add file.txt
git commit 
git push

আমি পরিবর্তে এটি ব্যবহার করতে চাই:

enter-git-mode
fetch
status 
diff
add file.txt
commit 
push
exit-git-mode

উত্তর:


1

আপনি যদি সারাক্ষণ "গিট-মোড" এ থাকতে ইচ্ছুক হন তবে সহজ উত্তরটি হ'ল নিম্নলিখিত আদেশগুলি দেওয়া:

alias fetch='git fetch'
alias status='git status'
alias diff='git diff'
alias add='git add'
alias commit='git commit'
alias push='git push'

আপনার মধ্যে ~/.bashrc। কিন্তু এই অবাঞ্ছিত হতে পারে যদি একজন নিয়মিত কমান্ড বলা হয় শুধুমাত্র কারণ diff, এবং আপনি এটিকে অ্যাক্সেস করতে পারছে না হলে হবে diffওরফে অন্য git diff1 । এরপরে, ক্ষুদ্রতর, জটিলতায় বৃদ্ধি হ'ল এটি সেট আপ করা যাতে উপাত্তগুলি সক্রিয় এবং গতিশীলভাবে নিষ্ক্রিয় করা যায়। আপনি এটি দিয়ে করতে পারেন

alias enter-git-mode="alias fetch='git fetch'; alias status='git status'; alias diff='git diff'; alias add='git add'; alias commit='git commit'; alias push='git push'"
alias exit-git-mode="unalias fetch status diff add commit push"

সুতরাং এখন enter-git-modeএকটি কমান্ড (ওরফে) যা প্রথম ছয়টি এলিয়াস সংজ্ঞায়িত করে, এবং exit-git-modeএকটি আদেশ যা তাদের অপরিবর্তিত করে।

আপনি চাইলে দীর্ঘ কমান্ডটি একাধিক লাইনে বিভক্ত করতে পারেন:

alias enter-git-mode="alias fetch='git fetch';   alias status='git status';
                      alias diff='git diff';     alias add='git add';
                      alias commit='git commit'; alias push='git push'"
alias exit-git-mode="unalias fetch status diff add commit push"

এটি আপনাকে অন্য কমান্ডের মতো এই আদেশগুলি ব্যবহার করতে দেয়; যেমন,

date; status; date              # A simple way of seeing how long a command takes.
time add .
commit &
commit && push
diff > differences.txt

এবং স্বতঃসম্পূর্ণ এবং আপনি নিয়মিত ইউনিক্স / লিনাক্স কমান্ডের সাহায্যে আন্তঃসংযোগ করতে পারেন git- অবশ্যই, আপনি diff1 চালাতে পারবেন না ।

স্পষ্টতই, এটি জাদুকরভাবে সমস্ত git কমান্ড পরিচালনা করে না । আপনি যদি আরও সাব-কম্যান্ডগুলি পরিচালনা করতে চান (যেমন, archiveবা branch), আপনাকে সেগুলি এলিয়াসগুলিতে যুক্ত করতে হবে। টাইপ বা বাদ দিয়ে
________
1/bin/diff/usr/bin/diff


2

এটি করার জন্য কয়েকটি সরঞ্জাম রয়েছে। এর মধ্যে একটি হ'ল gitshএবং তাদের README.md পৃষ্ঠাটি আরও কয়েকটি তালিকাবদ্ধ করে। এটি gitআপনার কমান্ডগুলিকে কেবল প্রিপেন্ডিংয়ের চেয়ে কিছুটা বেশি সরবরাহ করে তবে এটি এখনও আপনার প্রয়োজনের সাথে খাপ খায় ।

README.md এর ব্যবহারের উদাহরণ:

sh$ gitsh
gitsh% status
gitsh% add .
gitsh% commit -m "Ship it!"
gitsh% push
gitsh% ctrl-d
sh$

এটি দেখতে ভাল সমাধানের মতো। তবে আমি ডকুমেন্টেশন থেকে লক্ষ্য করেছি যে, আপনি যখন থাকবেন তখন একটি সাধারণ ইউনিক্স / লিনাক্স কমান্ড চালাতে (যেমন dateবা ls -al) আপনার প্রথমে gitshএকটি টাইপ করতে হবে !। ব্যবহারকারীর কর্মপ্রবাহের উপর নির্ভর করে এটি জটিল হতে পারে।
স্কট

1

নামের শেল স্ক্রিপ্টটি git-modeকৌশলটি করা উচিত:

#!/bin/bash

echo -n "> "
while read line; do
    case $line in
        fetch*) git fetch
                ;;
        status*) git status
                 ;;
        # and so on
     esac

     echo -n "> "
done

বাস্তবে আমি সম্ভবত ঠিক ওরফে would gitকরার g(অথবা নমনীয় থাকা git addথেকে gadd, git fetchথেকে gfetchইত্যাদি)।


আমি এই ধারণাটি পছন্দ করি তবে আমরা যদি এটি একটু চালাক করে তুলতে পারি তবে অবাক হব। আমরা কেবল ব্যবহার করতে পারি না: পড়ার লাইনে; \ গিট $ লাইন \ ইকো-এন ">" \ করা হয়েছে
পলরবায়ার

@ পলরবিড আপনি কীভাবে এটি পরিচালনা করবেন git add foo.c?
nohillside

ওই কাজগুলো! :) তবে এই পদ্ধতির ব্যবহারটি ট্যাব কীটি ব্যবহার করে স্বতঃসিদ্ধের ব্যবহারকে ত্যাগ করে যা প্রায়শই ব্যবহার করা খুব অসুবিধাজনক হতে পারে।
পলরবার

এটি ব্যবহারকারীর পিঠের পিছনে মারাত্মকভাবে একটি হাত বেঁধে দেয়। আপনার স্ক্রিপ্টটি ব্যবহার করে, ব্যবহারকারী ভালো জিনিস ব্যবহার করতে পারবেন না date; status,  time add .,  commit &,  commit && push, অথবা  diff > differences.txt। এছাড়াও, লিখিত হিসাবে, ব্যবহারকারীরা Ctrl + C টাইপ করলে আপনার স্ক্রিপ্টটি প্রস্থান করবে।
স্কট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.