আমি কীভাবে একটি একক কমান্ড ব্যবহার করে নতুন সংযুক্ত ফাইলগুলি সহ সমস্ত ফাইল মঞ্চ এবং প্রতিশ্রুতিবদ্ধ করতে পারি?


425

আমি কীভাবে একটি একক কমান্ড ব্যবহার করে নতুন সংযুক্ত ফাইলগুলি সহ সমস্ত ফাইল মঞ্চ এবং প্রতিশ্রুতিবদ্ধ করতে পারি?


3
হতাশার বিষয়টি এটি হ'ল এটি সম্ভব এবং এটি কোনও নতুন ফাইল প্রতিশ্রুতিবদ্ধ এবং সংযোজনের মানক সিনট্যাক্স ছিল: গিট কমিট -a তবে গঠনের পক্ষে সত্য, গিট সিনট্যাক্সটি পরিবর্তিত হয়েছিল। এটি বিদ্যমান ব্যবহারকারীদের বিভ্রান্ত করেছে (এবং তাদের স্ক্রিপ্টগুলি ভেঙেছে), কার্যকর কার্যকারিতা নির্মূল করেছে এবং একটি অপ্রয়োজনীয় পতাকা প্রতিস্থাপন করেছে।
ফিজিয়াওরন

1
গিট অ্যাড- এ এর একটি সদৃশ আছে , একটি আদেশে গিট কমিট? । স্বীকৃত উত্তরটি এখানে স্বীকৃত উত্তরের অনুরূপ তবে জড়িত টাইপটি সংক্ষিপ্ত করতে গিট ওরফে তৈরি করার পরামর্শ দেয় (এবং কীভাবে এটি করা যায় তা দেখায়)।
মার্ক আমেরিকা

উত্তর:


568

নেই

git add -A && git commit -m "Your Message"

একটি "একক আদেশ" হিসাবে গণনা?

নীচে @ দফতরের উত্তরের ভিত্তিতে সম্পাদনা করুন :

এটি হিসাবে git aliasব্যবহার করতে, ব্যবহার করুন:

git config --global alias.coa '!git add -A && git commit -m'

এবং নতুন ফাইল সহ সমস্ত ফাইলের সাথে একটি বার্তা সহ প্রতিশ্রুতিবদ্ধ:

git coa "A bunch of horrible changes"

ব্যাখ্যা ( git addডকুমেন্টেশন থেকে ):

-এ, - সমস্ত, - কোন উপেক্ষা-অপসারণ

কর্মক্ষেত্রের গাছের সাথে কেবল ফাইলের মিল রয়েছে কেবল তাই সূচিটি আপডেট করুন যেখানে সূচীতে ইতিমধ্যে কোনও প্রবেশ রয়েছে। এটি কার্যকারী গাছের সাথে তাল মিলিয়ে সূচক এন্ট্রিগুলি যুক্ত করে, সংশোধন করে এবং সরিয়ে দেয়।

<pathspec>-এ বিকল্পটি ব্যবহার করার সময় যদি কোনও দেওয়া না হয় তবে পুরো কার্যক্ষম গাছের সমস্ত ফাইল আপডেট হয়ে যায় (বর্তমান ডিরেক্টরি এবং এর উপ-ডিরেক্টরিতে আপডেট সীমাবদ্ধ করতে ব্যবহৃত গিটের পুরানো সংস্করণ)।


3
প্রতিশ্রুতি বার্তা সম্পর্কে কি?
নরেন্দ্র জাগি

11
@ নরেন্দ্রজাগী গিট অ্যাড-এ & অ্যান্ড গিট কমিট - এম "আপনার বার্তা"
ডঃ জ্যাকি

1
যে কেউ এটি নিজের নিজের .sh বা .bat ফাইলের মধ্যে রাখতে পারে এবং এটি কেবল একটি আদেশ হিসাবে ব্যবহার করতে পারে। বার্তাটি প্যারাম 1 হতে পারে
ব্লু উইজার্ড

এছাড়াও আপনি আপনার .bashrc এ বেসিক গিট কমান্ডের শর্টকাট যুক্ত করতে পারেন: ওরফে জিপিএল = 'গিট পুল' ওরফে জিপিএস = 'গিট পুশ' ওরফে জিসি = 'গিট কমিট' ওরফে জিএস = 'গিট স্ট্যাটাস' ওরফে জিডি = 'গিট ডিফ' ওরফে গা = 'গিট অ্যাড' ওরফে জিসি = 'গিট চেকআউট' ওরফে জিবি = 'গিট ব্রাঞ্চ' ওরফে গিল = 'গিট লগ' ওরফে এলসিপি = 'গিট ফর্ম্যাট-প্যাচ -১ হেড' ওরফে রিসেটটোমাস্টার = 'গিট রিসেট --হরড উত্স / মাস্টার '
ni3

3
পাওয়ারশেলে "&" "এর জন্য" প্রতিস্থাপন করুন; উভয় কমান্ড চালানোর জন্য, git add -A ; git commit -m "Your Message"
এটির

415

এই কমান্ডটি সমস্ত সংশোধিত ফাইল যুক্ত করে এবং প্রতিশ্রুতিবদ্ধ করবে, তবে নতুন তৈরি করা ফাইল নয়

git commit -am  "<commit message>"

মানুষের গিট-কমিট থেকে:

   -a, --all
       Tell the command to automatically stage files that have been modified
       and deleted, but new files you have not told Git about are not
       affected.

101
এটি আসলে প্রশ্নের উত্তর দেয় না, আসলে সুনির্দিষ্টভাবে (কম সাহসীভাবে) সমাধানের সন্ধানের মূল অংশগুলির একটি বাদ দেয়।
অরুণাস

6
আনরে্যাকড ফাইল যুক্ত বা সংঘবদ্ধ করে না।
বি 15

3
আপনি যখন "গিট অ্যাড-এ" করার পরে প্রতিশ্রুতিবদ্ধ হন এবং লক্ষ্য করুন যে আপনি কোডে ছোট কিছু পরিবর্তন করতে ভুলে গেছেন তখন এটি সর্বাধিক সাধারণ পরিস্থিতিটি জুড়ে। আমি একই প্রতিশ্রুতি বার্তাটি স্ক্র্যাচ থেকে বেশ কয়েকবার লিখতে পছন্দ করি না
KorbenDallas

তবে থ্রেড স্টার্টার সমস্ত ফাইলগুলি বলে, সুতরাং, আমি মনে করি এটি কোনও গণনা করে না
ফ্রেডরিক জি। স্যান্ডালো

এছাড়াও আপনি আপনার .bashrc এ বেসিক গিট কমান্ডের শর্টকাট যুক্ত করতে পারেন: ওরফে জিপিএল = 'গিট পুল' ওরফে জিপিএস = 'গিট পুশ' ওরফে জিসি = 'গিট কমিট' ওরফে জিএস = 'গিট স্ট্যাটাস' ওরফে জিডি = 'গিট ডিফ' ওরফে গা = 'গিট অ্যাড' ওরফে জিসি = 'গিট চেকআউট' ওরফে জিবি = 'গিট ব্রাঞ্চ' ওরফে গিল = 'গিট লগ' ওরফে এলসিপি = 'গিট ফর্ম্যাট-প্যাচ -১ হেড' ওরফে রিসেটটোমাস্টার = 'গিট রিসেট --হরড উত্স / মাস্টার '
ni3

26

আমি এই ফাংশনটি ব্যবহার করি:

gcaa() { git add --all && git commit -m "$*" }

আমার zsh কনফিগারেশন ফাইলে, তাই আমি কেবল এটি করতে পারি:

> gcaa This is the commit message

সমস্ত ফাইল স্বয়ংক্রিয়ভাবে মঞ্চায়ন এবং প্রতিশ্রুতিবদ্ধ।


1
function gcaa() { git add --all && git commit -m "$*" && git push }
বাশের

1
@ দামিলোলা - বাশ-জাতীয় বলতে কী বোঝ ? উত্তরের বাক্য
গঠনটি বাশেও

এটি দুর্দান্ত, আমি এর আগে একটি উপনাম ব্যবহার করেছি gaa && gc -m "my commit"তবে এটি এত সুন্দর ... <বাশার্ক পরিবর্তন করতে ছুটে যায় ..>
অ্যান্ডি এমসি মুলফ

24

সমস্ত ফাইল মঞ্চ করার ওয়ান-লাইনার ( সংশোধিত , মুছে ফেলা এবং নতুন ) এবং মন্তব্য দিয়ে প্রতিশ্রুতিবদ্ধ:

git add --all && git commit -m "comment"

http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit


ওয়ান-লাইনার, তবে একটি কমান্ড নয় (যা ওপি বলেছিল)
এলিরান মালকা

24

নিশ্চিত না কেন এই উত্তরগুলি কেন আমার সঠিক সমাধান বলে বিশ্বাস করি তার চারপাশে নাচছে তবে এখানে যা মূল্যবান তা আমি ব্যবহার করি তা:

একটি উপনাম তৈরি করুন:

git config --global alias.coa '!git add -A && git commit -m'

সমস্ত ফাইল যুক্ত করুন এবং বার্তার সাথে প্রতিশ্রুতিবদ্ধ:

git coa "A bunch of horrible changes"

দ্রষ্টব্য: coaসমস্ত প্রতিশ্রুতিবদ্ধের জন্য সংক্ষিপ্ত এবং আপনার হৃদয় যা কিছু চায় তার সাথে প্রতিস্থাপন করা যেতে পারে


1
এটি ব্যতীত অন্য কোনও উত্তর সফলভাবে কোনও বার্তা দিয়ে সমস্ত প্রতিশ্রুতিবদ্ধ করার প্রক্রিয়াটিকে সহজ করে দেয়।
সেফ রিড

2
এটি দুর্দান্ত, git aliasউপায় খুঁজছিল , বাকিটি বিরক্তিকর।
কোর্টেক্স 28'19

9

গিটে প্রতিশ্রুতিবদ্ধ হওয়া একাধিক পদক্ষেপ প্রক্রিয়া বা পরিস্থিতির উপর নির্ভর করে এক ধাপ হতে পারে।

  1. এই পরিস্থিতিতে আপনার একাধিক ফাইল আপডেট হয়েছে এবং প্রতিশ্রুতিবদ্ধ হতে চায়:

    আপনার কিছু করার আগে আপনাকে সমস্ত পরিবর্তিত ফাইল যুক্ত করতে হবে।

    git add -A
    

    অথবা

    git add --all
    
  2. এর পরে আপনি যুক্ত হওয়া সমস্ত ফাইল কমিট ব্যবহার করতে পারেন

    git commit
    

    এটির সাথে আপনাকে এই প্রতিশ্রুতিটির বার্তা যুক্ত করতে হবে।


6

আপনি যদি কেবল বর্তমান শাখায় পরিবর্তনগুলি স্ট্যাশ করার একটি "দ্রুত এবং নোংরা" উপায় চান তবে আপনি নীচের নামটি ব্যবহার করতে পারেন:

git config --global alias.temp '!git add -A && git commit -m "Temp"'  

এই কমান্ডটি চালানোর পরে, আপনি কেবলমাত্র git temp"টেম্প" নামে একটি প্রতিশ্রুতিবদ্ধ হিসাবে বর্তমান শাখায় আপনার সমস্ত পরিবর্তন স্বয়ংক্রিয়ভাবে প্রতিশ্রুতিবদ্ধ করতে টাইপ করতে পারেন। তারপরে, আপনি git reset HEAD~পরে পরিবর্তনগুলি "অনমুক্ত" করতে ব্যবহার করতে পারেন যাতে আপনি সেগুলিতে কাজ চালিয়ে যেতে পারেন, বা প্রতিশ্রুতিতে git commit --amendআরও পরিবর্তন যুক্ত করতে পারেন এবং / বা এটি একটি সঠিক নাম দিতে পারেন।


4

আমার কনফিগারেশনে দুটি উপকরণ রয়েছে:

alias.foo=commit -a -m 'none'
alias.coa=commit -a -m

যদি আমি খুব অলস হয় তবে আমি কেবলমাত্র এর সাথে সমস্ত পরিবর্তন করব

git foo

এবং কেবল একটি দ্রুত প্রতিশ্রুতিবদ্ধ করতে

git coa "my changes are..."

কো "দাঁড়ায় সকলকে"


9
আমি "কিছুই না" বলে প্রতিশ্রুতিবদ্ধ বার্তাগুলিতে ভরাট ভাণ্ডার নিয়ে কাজ করতে ঘৃণা করব এবং আমি সেই ভিত্তিতে কোনও পিআর এর প্রত্যাখ্যান করব। দুর্ভাগ্যক্রমে, আপনি যখন প্রতিশ্রুতিবদ্ধ বার্তা রাখার গুরুত্বটি শিখতে পারেন কেবল তখনই যখন আপনাকে অনেক আগে লেখা কিছু নিরীক্ষণে ফিরে যেতে হয় ("এই লাইনটি একটি বাগ তৈরি করছে ... এটি এমনকি কেন যুক্ত করা হয়েছিল এবং কিছু হবে) আমি যদি এটি পরিবর্তন / অপসারণ করি তবে বিরতি ফেলুন? ")।
গ্রেগম্যাক

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

1
আমি এই উদ্দেশ্যে 'কিছুই নয়' এর পরিবর্তে 'মোছা' ("অগ্রগতিতে কাজ করা" এর জন্য সংক্ষিপ্ত) ব্যবহার করি এবং আমি কেবল এই ব্যক্তিগত প্রতিশ্রুতিগুলিকে আমার ব্যক্তিগত শাখায় ঠেলে দিই।
সার্জেজ কোয়েজেভ

এটি এখনও অপ্রয়োজনীয়, কারণ অবশেষে যারা "মোছা" বা "কেউই" কমিট করে তা এটিকে এমন একটি শাখায় পরিণত করবে যা অন্যান্য লোকেরা দেখবে এবং বার্তা লগকে দূষিত করবে। আপনি ধাক্কা দেওয়ার আগে যদি আপনি সমস্ত কমিটিকে স্কোয়াশ করছেন তবে তা গ্রহণযোগ্য হবে তবে তা অন্যথায় দলের জন্য এখনও বিরক্তিকর।
জর্দান

এটি একটি কৃতজ্ঞ ধারণা, এবং এটি পরবর্তী উত্তরের সাথে একত্রিত করে আপনি আসলে ওপি-র জন্য 100% সঠিক উত্তর পেতে পারেন। আমি আসলে আমার উত্তরে প্রয়োজনীয় পদক্ষেপগুলি (গিট-ব্যাশ ব্যবহার করে) রূপরেখা দিয়েছি। ( Stackoverflow.com/a/43442269/869239 )
Vero

3

প্রদত্ত কমান্ডটি চালান

git add . && git commit -m "Changes Committed"

তবে এটি যদি একক কমান্ড বলে মনে হয় তবে এটি দুটি পৃথক কমান্ড একের পর এক চলমান। এখানে আমরা কেবল &&তাদের একত্রিত করতে ব্যবহৃত । এটি চলার চেয়ে আলাদা git add .এবং git commit -m "Changes Committed"আলাদাভাবে নয় not আপনি একসাথে একাধিক কমান্ড চালাতে পারেন তবে ক্রম এখানে গুরুত্বপূর্ণ। আপনি যদি মঞ্চের সাথে সাথে দূরবর্তী সার্ভারে পরিবর্তনগুলি ঠেলাতে চান এবং প্রতিশ্রুতিবদ্ধ হন যে আপনি এটি প্রদত্ত হিসাবে করতে পারেন,

git add . && git commit -m "Changes Committed" && git push origin master

পরিবর্তে, আপনি যদি ক্রমটি পরিবর্তন করেন এবং pushপ্রথমে এটি স্থাপন করেন তবে এটি প্রথমে কার্যকর করা হবে এবং মঞ্চায়নের পরে কাঙ্ক্ষিত ধাক্কা দেয় না এবং কেবল আগে থেকেই এটি চালিত হওয়ার কারণে প্রতিশ্রুতি দেয়।

&&লাইনে দ্বিতীয় কমান্ড রান যখন প্রথম কমান্ড ফিরে সফলভাবে আসে, বা 0. বিপরীত একটি ত্রুটির স্তর সঙ্গে &&হয়|| , যা দ্বিতীয় কমান্ড রান যখন প্রথম কমান্ড অসফল হয়, অথবা 1 একটি ত্রুটি স্তর সঙ্গে।

বিকল্পভাবে, আপনি হিসাবে এলিজ তৈরি করতে git config --global alias.addcommit '!git add -a && git commit -m'এবং এটি হিসাবে ব্যবহার করতে পারেনgit addcommit -m "Added and commited new files"


2

দুর্দান্ত উত্তর, তবে আপনি যদি সজল রেখার সন্ধান করেন তবে সমস্ত কিছু করুন, আপনি উপস্থাপন করতে পারেন, উপনামটি উপভোগ করতে পারেন এবং সুবিধাটি উপভোগ করতে পারেন:

git add * && git commit -am "<commit message>"

এটি একটি একক লাইন তবে দুটি কমান্ড এবং উল্লিখিত হিসাবে আপনি এই কমান্ডগুলিকে উপনিবেশ করতে পারেন:

alias git-aac="git add * && git commit -am " (শেষে স্থানটি গুরুত্বপূর্ণ) কারণ আপনি নতুন শর্ট হ্যান্ড কমান্ডকে প্যারামিটারাইজ করতে চলেছেন।

এই মুহুর্ত থেকে, আপনি এই উপনামটি ব্যবহার করবেন:

git-acc "<commit message>"

আপনি মূলত:

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

আশা করি আপনি লিনাক্স ব্যবহার করেন, আশা করি এটি সহায়তা করবে।


0

আপনি একটি ছোট স্ক্রিপ্ট লিখতে পারেন (আয়ান ক্লেল্যান্ডের উত্তর দেখুন) git-commitallযা আপনি যা করতে চান তা সম্পাদন করতে বেশ কয়েকটি গিট কমান্ড ব্যবহার করে।
এই স্ক্রিপ্টটি আপনার যে কোনও জায়গায় রাখুন $PATH। আপনি এটি দ্বারা কল করতে পারেন git commitall... খুব সহজ!

এখানে পাওয়া গেছে (প্রশ্ন এবং সমস্ত উত্তর দুর্ভাগ্যক্রমে মুছে ফেলা হয়েছে, কেবলমাত্র উচ্চ খ্যাতি সহ দৃশ্যমান)


পুরো থ্রেডটি একটি ভাল পঠন ... এই কারণেই আমি এটিকে যুক্ত করেছি
tan

@ দিমিত্রি - দুর্ভাগ্যক্রমে কিছু স্টাডি লোক এই দরকারী থ্রেডটি মোছার সিদ্ধান্ত নিয়েছে। এটি এখনও উচ্চ খ্যাতি সহ দৃশ্যমান, তাই আমি লিঙ্কটি এখানে রাখি।
টানাশিয়াস

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