কমান্ডগুলিতে গিট ডিফল্ট পতাকা সেট করা


89

গিট কমান্ডের জন্য ডিফল্টভাবে পতাকা নির্ধারণের উপায় আছে কিনা তা আমি জানতে চাই। বিশেষত, আমি --abbrev-commitপতাকাটি সেট করতে চাই যাতে কার্যকর করার সময় git log, আমি কার্যকর করতে চাই git log --abbrev-commit

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

আমার তৃতীয় বিকল্পটি হ'ল glog=log --abbrev-commitআমার .gitconfig ফাইলের মতো একটি নতুন ওরফে উদ্ভাবন করা । তবে আমি বরং নতুন কমান্ড দিয়ে নিজের ডিএসএল উদ্ভাবন করব না।

এটি অর্জনের অন্য কোনও উপায় আছে যাতে abbrev-commitপতাকাটি ডিফল্টরূপে সেট হয় ??


4
1.7.6 গিট হিসাবে এই আচরণটি নিয়ন্ত্রণ করার জন্য একটি পতাকা রয়েছে। নীচে @undrun দ্বারা উত্তর দেখুন।
তিরস্কার

উত্তর:


60

গিট সংস্করণ ১.7..6 থেকে, গিট কনফিগারেশন একটি লগ.অব্রেভকমিট বিকল্পটি অর্জন করেছে যা সত্যতে সেট করা যেতে পারে। সুতরাং উত্তরটি কমপক্ষে ১.7..6 এ আপগ্রেড হবে (এই লেখার বর্তমান হিসাবে 1.7.11.4 রয়েছে) এবং ব্যবহার করুন:

git config --global log.abbrevCommit true

4
মনে করবেন না অনলাইনের জন্য কোনও বিকল্প আছে?
জাজ

4
আমি এই উত্তর গ্রহণ করছি। আমি প্রায় চার বছর আগে প্রশ্নটি লেখার পর থেকে গিট এই কনফিগারেশনটি যুক্ত করে দেখে ভাল লাগছে।
জেস্পার রন-জেনসেন

এই সমস্ত রহস্যময় বিকল্পের উত্স কোথায়?
xaxxon

গ্রাফের জন্য কেউ কি ডিফল্ট পতাকা জানেন? @Xaxxon লিঙ্ক করা পৃষ্ঠাতে আমি এটি খুঁজে পাচ্ছি না
myol

@ মাইওল, আপনার ইনস্টলেশনটি মিলে যাওয়া ডকুমেন্টেশনগুলি ব্যবহার করা git config --helpবা পাওয়া উচিত । git help config
ডক

46

আপনি ডিফল্টরূপে git logনকল করতে একটি কাস্টম ফর্ম্যাট ব্যবহার করতে পারেন --abbrev-commit:

git config format.pretty "format:%h %s"

দুর্দান্ত, এটি সহজেই সেরা উত্তর।
দুআনে

ফর্ম্যাট করার সময় আপনি রঙগুলিও ব্যবহার করতে পারেন: "% সি (হলুদ)% h% ক্রেসেট% s" রঙের সাথে গিট লগ - অনলাইনলাইনের মতো উপস্থাপন করবে।
অ্যাভনার

4
এখন একটি তাত্ক্ষণিক প্রশ্ন: আপনি যদি এই দরকারী এবং এই উত্তরটি হুবহু সমস্যার সমাধান পেয়ে থাকেন তবে কেন আপনি এটিকে সঠিক হিসাবে চিহ্নিত করেন না?
igorsantos07

4
এটি যদি আপনি অস্পষ্ট মনে রাখতে না চান বা উচ্চারণগুলি মনে রাখতে অসুবিধা না চান এবং সর্বদা "গিট লগ" ব্যবহার করতে পছন্দ করেন তবে এটি আরও ভাল।
শ্যাম হাবারকদা

4
এটি আমার পক্ষে সেরা উত্তর ছিল। log.abbrevCommitসেটিং ফরম্যাটের, যা আমি পছন্দ করতাম না বাগাড়ম্বরপূর্ণ আরও প্রভাবিত করে। এছাড়াও, %C(auto)%h %sস্বয়ংক্রিয় রঙের সাথে সাধারণ অনলাইনলাইন ফর্ম্যাটটি পেতে ব্যবহার করুন । আমি ব্যবহার করেছি git config --global format.pretty "%C(auto)%h %d %s"কারণ আমি
অনলাইনটিকে

34

কমান্ডগুলির জন্য ডিফল্ট আর্গুমেন্ট সেট করার জন্য গিটটিতে কোনও জেনেরিক প্রক্রিয়া নেই।

প্রয়োজনীয় আর্গুমেন্ট সহ আপনি একটি নতুন কমান্ড সংজ্ঞায়িত করতে গিট এলিয়াস ব্যবহার করতে পারেন :

git config alias.lg "log --oneline"

তাহলে আপনি চালাতে পারেন git lg

কিছু কমান্ডের আচরণ পরিবর্তন করার জন্য কনফিগারেশন সেটিংসও রয়েছে।


12
আমি আমার নিজের সিনট্যাক্স তৈরি এড়াতে তাই আমি আমি কোথায় ব্যবহার করবেন না একটি সমাধান পেশ করবো চান git lgকিন্তুgit log
Jesper Rønn-জেনসেন

কেন? এটা কি পার্থক্য করতে হবে?
হাসেন

46
খুব গুরুত্বপূর্ণ পার্থক্যটি হ'ল আমি আমার সিস্টেমে "জেসপার্স গিট সিনট্যাক্স" প্রবর্তন করতে চাই না। আমি চাই যে আমি (এবং অন্যরাও আমার মেশিন ব্যবহার করছে) জেনেরিক কমান্ড ব্যবহার করুক। এছাড়াও, এটি অন্য মেশিনগুলিতে আমার কাজটি আরও দ্রুত করে তুলবে: আমি ঘটনাক্রমে "গিট এলজি" টাইপ করার এবং "পাওয়া যায়নি" ত্রুটি পাওয়ার বিষয়ে চিন্তা করি না
জেসপার রেন-জেনসেন

19
যদি অন্য কেউ আপনার মেশিন ব্যবহার করে এবং টাইপ করা গিট লগ আপনার উদ্দেশ্যযুক্ত সমাধানের অর্থ হ'ল তারা ফলাফল পাবেন যা তারা প্রত্যাশা করেনি।
আবিজার্ন

4
স্ট্যান্ডার্ড অ্যালিয়াসগুলির নতুন সংজ্ঞা স্ক্রিপ্টগুলি ভেঙে দিতে পারে।
জাস্টিনটাইম 31'14

10

ভনসি ইতিমধ্যে তার উত্তরে শেল র‌্যাপারে ইঙ্গিত দিয়েছে; এই যেমন একটি মোড়ক আমার বাশ বাস্তবায়ন। আপনি যদি এইটিকে আপনার মধ্যে রাখেন তবে .bashrcআপনার ইন্টারেক্টিভ শেলটি গিট বিল্ট-ইন কমান্ডের পাশাপাশি বড় হাতের অক্ষরগুলি ওভাররাইডকে সমর্থন করবে।

# Git supports aliases defined in .gitconfig, but you cannot override Git
# builtins (e.g. "git log") by putting an executable "git-log" somewhere in the
# PATH. Also, git aliases are case-insensitive, but case can be useful to create
# a negated command (gf = grep --files-with-matches; gF = grep
# --files-without-match). As a workaround, translate "X" to "-x". 
git()
{
    typeset -r gitAlias="git-$1"
    if 'which' "$gitAlias" >/dev/null 2>&1; then
        shift
        "$gitAlias" "$@"
    elif [[ "$1" =~ [A-Z] ]]; then
        # Translate "X" to "-x" to enable aliases with uppercase letters. 
        translatedAlias=$(echo "$1" | sed -e 's/[A-Z]/-\l\0/g')
        shift
        "$(which git)" "$translatedAlias" "$@"
    else
        "$(which git)" "$@"
    fi
} 

তারপরে আপনি নিজের পাঠ্যপুস্তকে কোথাও git logনামের একটি স্ক্রিপ্ট রেখে ওভাররাইড করতে পারেন git-log:

#!/bin/sh
git log --abbrev-commit "$@"


7

আমার অনুরূপ সমস্যা রয়েছে (গিট কমান্ডগুলির জন্য ডিফল্ট বিকল্পগুলির মধ্যে অনেকগুলি বোবা হয়)। এই আমার পদ্ধতির। আপনার পথে 'গ্রিট' (বা যাই হোক না কেন) নামে একটি স্ক্রিপ্ট তৈরি করুন:

#!/bin/bash
cmd=$1
shift 1
if [ "$cmd" = "" ]; then
  git
elif [ $cmd = "log" ]; then
  git log --abbrev-commit $@
elif [ $cmd = "branch" ]; then
  git branch -v $@
elif [ $cmd = "remote" ]; then
  git remote -v $@
else
  git $cmd $@
fi

পড়ার এবং বজায় রাখার জন্য খুব সোজা, যদি আপনাকে এটি বাশ অ-বিশেষজ্ঞদের সাথে ভাগ করে নেওয়া প্রয়োজন।


আপনি কি "গিট রিমোট ব্লাহ" "গিট ব্রাঞ্চ ব্লাহ" বলতে চান? আমি এর একটি বৈকল্পিক ব্যবহার করছি যেখানে আমি আগে পথে গিট রেখেছিলাম এবং তারপরে স্পষ্টভাবে আমার স্ক্রিপ্টে / usr / bin / git কল করব। হ্যাঁ এটি সম্ভবত কিছু ব্রেক করে।
ভালবাসা

4
আমি এটি পছন্দ করেছি এবং দুটি অতিরিক্ত টুইট করেছি। আমি এটি একটি ব্যাশ ফাংশন তৈরি এবং এটি নামে করা যাক gitবাস্তব কমান্ড পথ পেতে একটি প্রথম লাইন যোগ করে: thegit=`/usr/bin/which git`। এবং আমি ভালো কমান্ড আগে একটি এক্স সঙ্গে ওভাররাইড বাতিল করতে একটি বিকল্প যোগ git x log ...: if [ "$cmd" = "x" ]; then; $thegit $@
জোশুয়া গোল্ডবার্গ

0

আমাদের বিকাশকারীদের তাদের পথে যুক্ত করার জন্য একটি ডিরেক্টরি সরবরাহ করার জন্য আমরা প্রতিটি ইউটিলিটি (এসএনএন, ম্যাভেন, গিট, ...) সর্বদা একটি .bat (উইন্ডোজ, বা .sh এ ইউনিক্স) এ এনপ্যাপুলেটেড থাকে।

যদি গিটটি একটি মোড়ক স্ক্রিপ্টে আবদ্ধ হয়, তবে ... সমস্ত কিছুই সম্ভব।

তবে এটি ব্যবহারকারীর সেটআপের সাথে সংযুক্ত একটি সমাধান হিসাবে রয়ে গেছে, গিট নিজেই বা গিট রেপোতে লিঙ্কযুক্ত নয়।


সুতরাং আপনার মানে আমার আমার .Bash_ প্রোফাইলে উপন্যাস যুক্ত করে এটি অর্জন করতে সক্ষম হওয়া উচিত?
জেস্পার রেন-জেনসেন

@ জেস্পার: এটি একটি ধারণা, যেহেতু আপনার মোড়ক git.bat আপনি কী গিট আদেশটি কার্যকর করতে চান তা সনাক্ত করতে সক্ষম হবে এবং এটি যে কোনও বিকল্প যুক্ত করতে পারে।
ভনসি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.