গিট "সাইলেন্ট মোড" এ কাজ করতে পারে?


106

"নীরব" মোডে কোনও গিট কমান্ড কার্যকর করা সম্ভব? উদাহরণস্বরূপ, আমি কি " git push origin" বলতে পারি এবং স্ক্রিনে প্রদর্শিত কিছু দেখতে পাচ্ছি না?

আমি মনে করি আমি আইওকে পুনর্নির্দেশ করতে পারি /dev/null(সূক্ষ্ম কাজ করে), কিন্তু .. গিট কি প্রাকৃতিকভাবে এই জাতীয় কিছুকে অনুমতি দেয়?

নীচে একটি দ্রুত স্ক্রিপ্ট রয়েছে যা স্বয়ংক্রিয় EOD কমিট করে, যখন ট্রেন ধরার দরকার হয় এবং আমার স্থানীয় কম্পিউটারে কোড ছাড়তে চাই না তখন ব্যবহৃত হয়

  1 clear
  2
  3 cd
  4 cd repo/active
  5
  6 for i in *
  7 do
  8   cd $i
  9   echo "Pushing " $i
 10   git add . -A >> /dev/null 
 11   git commit -a -m "EOD automatic commit" >> /dev/null 
 12   git push origin >> /dev/null 
 13   echo
 14   cd ..
 15 done

আমাকে বুঝতে দাও.


1
অপরিবর্তিত: সিডি in i, সিডি .. তে সিএমডিএস মোড়ানোের চেয়ে আপনি করতে পারেন: আমি ইন * এর জন্য; do (cd $ i; ...;); সিডি চালিয়ে একটি সাব-সিলে চালাও। এটি কম ভঙ্গুর।
উইলিয়াম পার্সেল

টমাসএডওয়ার্ডস উত্তরে "সঠিক" চিহ্নটি স্থানান্তর করতে যত্নশীল? এটি সত্যই "প্রাকৃতিক" উপায়ে উত্তর দেয়।
খ্রিস্টান

1
আমি অবাক হই যে লিনাস যখন গিট তৈরি করেছিলেন তখন তার মনে কী ছিল, কারণ এটি ইউনিক্সের মৌলিক নিয়মের স্পষ্টভাবে ভঙ্গ করে যা বলে যে নীরবতা সোনার। এখানে যে উত্তর দেওয়া হয়নি তা হ'ল এটি যদি একবার এবং সবার জন্য একটি ভাল ইউনিক্স নাগরিক হওয়ার জন্য গিটের কনফিগারেশনে কিছু সেটিংস স্থাপন করা সম্ভব হয়।
জোহান বুলি

উত্তর:


19

আউটপুটকে / dev / নাল এ পুনঃনির্দেশ করা আমার কাছে এটি করার প্রাকৃতিক উপায় বলে মনে হয়। যদিও আমি অতীতে ক্রোন জব ব্যবহারের জন্য এই জাতীয় একটি শান্ত_গিট শেল ফাংশনটি সংজ্ঞায়িত করেছি:

quiet_git() {
    stdout=$(tempfile)
    stderr=$(tempfile)

    if ! git "$@" </dev/null >$stdout 2>$stderr; then
        cat $stderr >&2
        rm -f $stdout $stderr
        exit 1
    fi

    rm -f $stdout $stderr
}

গিট কমান্ড ব্যর্থ না হলে এটি স্টডআউট এবং স্টডারকে দমন করবে। এটি সুন্দর নয়; প্রকৃতপক্ষে stdout ফাইলটি উপেক্ষা করা হবে এবং এটি কেবল / dev / null এ পুনর্নির্দেশ করা উচিত। যদিও কাজ করে। এবং তারপরে আপনি স্ক্রিপ্টের পরে "শান্ত_গিট পুশ" ইত্যাদি করতে পারেন।


10
@ থমাস এডওয়ার্ডস উত্তরগুলি দেখুন, আরও ভাল
রবিন উইনস্লো

240

আপনি ব্যবহার করতে পারেন --quietবা -qযা অন্যান্য গিট কমান্ডের জন্যও ব্যবহার করা যেতে পারে:

git commit --quiet
git push --quiet

2
আমি এইভাবে গিট কমিটিকে চুপ করে দেখছি না। এটি পতাকাটিকে উপেক্ষা করে।
গ্যারিবিশপ

8
কমান্ডের পরে আপনার এটি যুক্ত করা দরকার। git pull -qবা git push origin master --quiet। আমি
1.8.x

7
@ মেনধাক, কাজ করে না (অন্তত এটি নীরব নয়) উদাহরণস্বরূপ git pull -q origin master > /dev/null"মোট 4 (বেল্টা 3), পুনরায় ব্যবহৃত 4 (ব-দ্বীপ 3)" ফলন হয়েছে। এটি গিট 2.0.0 এর সাথে।
ম্যাথু ফ্ল্যাশেন

3
এমনকি --queit (বা -q) ব্যবহার করার পরেও এটি কিছু আউটপুট প্রিন্ট করে। উদাহরণস্বরূপ, গিট চেকআউট-কিউ (ব্রাঞ্চ_নাম) ব্যবহার করার সময়, যদি শাখাটি প্রথমবার চেক আউট করা হয় তবে এটি একটি বার্তা প্রিন্ট করবে যাতে নতুন শাখাটি সেটআপ হয়ে গেছে been এমন কি কোনও উপায় আছে (কিছু পতাকা) যা ব্যবহার করে এই জাতীয় সমস্ত আউটপুট নিঃশব্দ করা যায়?
অঙ্কুর

6
আপনি যদি বাস্তবে কোনও আউটপুট চান তবে ব্যবহার করুন git command >/dev/null 2>&1। এটি স্টডআউট এবং স্ট্ডার উভয়ই / dev / নালিতে পুনঃনির্দেশ করে। --quietবিকল্পের জন্য সংক্ষিপ্ত আউটপুট উৎপাদিত হয়, সম্পূর্ণরূপে @Ankur আউটপুট দমন না
ব্রান্ডন

17

&> /dev/nullশেষে ব্যবহার করা আপনাকে সম্পূর্ণ নিঃশব্দ গিট কমান্ড আউটপুট দেয়।

git fetch origin master &> /dev/null

1
কেবল সিএসএসে, বেশিরভাগ বোর্ন শেল ব্যবহার করে শেল স্ক্রিপ্টিং করার পরামর্শ দেয়।
এইচডি 1

@ এইচডি 1 নং, &>একটি ব্যাশ আইও রিডাইরেক্ট অপারেটর। এখানে 3.6 দেখুন tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html
হ্যান ক্রিশ্চিয়ান

@ হ্যানসক্রিসিয়ান হ্যাঁ, বাশ সিএসএস থেকে ইন্টারেক্টিভ বৈশিষ্ট্য এবং এসএইচ থেকে স্ক্রিপ্টিং এনেছে। একই হাটো থেকে উদ্ধৃতি: "বাশ একটি শ-সামঞ্জস্যপূর্ণ শেল যা কর্ন শেল (ksh) এবং সি শেল (সিএসএস) থেকে দরকারী বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করে"।
এইচডি 1

1
উদ্দেশ্যটি হ'ল তথ্য বার্তাগুলি সরিয়ে ফেলা, তবে ত্রুটিগুলি প্রদর্শন করা। কী স্টাডাউট যায় এবং কী স্টেডার যায় সে সম্পর্কে গিটটি কতটা ভাল আচরণ করেছে তা আমি অধ্যয়ন করি নি, তবে উভয় গন্ধকে খুব খারাপ ধারণার মতো পুনঃনির্দেশিত করছি।
জোহান বুলি

6

নোট করুন এমনকি এর সাথেও --quiet , একটি git fetch(যা ট্রিগার করে git gc) কিছু আউটপুট উত্পন্ন করে।
যে git gcঅংশ কারণ git fetch

আর নয়, গিট ২.১.১ (সেপ্টেম্বর ২০১৪) থেকে শুরু করুন: এনগুইয়ান থিয়ি এনজিসি ডুই ( ) থেকে 6fceed3bea59d747c160972c67663e8b8c281229 কমিট দেখুনpclouds

আনতে: দেওয়া git-gcহলে নীরবতা--quiet

builtin/fetch.c:

argv_array_pushl(&argv_gc_auto, "gc", "--auto", NULL);
if (verbosity < 0)
argv_array_push(&argv_gc_auto, "--quiet");
run_command_v_opt(argv_gc_auto.argv, RUN_GIT_CMD);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.