একটি হ্যাশমার্ক (#) দিয়ে গিট কমিট বার্তা শুরু করুন


283

#কমিট করার সময় কমেন্ট লাইন হিসাবে শুরু গিট ট্রিট লাইনগুলি । টিকিট ট্র্যাকিং সিস্টেমের সাথে কাজ করার সময় এবং লাইনের শুরুতে টিকিট নম্বর লেখার চেষ্টা করার সময় এটি খুব বিরক্তিকর হয় eg

#123 salt hashed passwords

গিটটি কেবল কমিটের বার্তা থেকে লাইনটি সরিয়ে ফেলবে। হ্যাশ থেকে বাঁচার কোন উপায় আছে? আমি চেষ্টা \এবং !, কিন্তু কিছুই কাজ করে। পূর্ববর্তী শ্বেতস্থানগুলি #সংরক্ষণ করা হয়, সুতরাং তারা সমস্যাটির কোনও কার্যকর সমাধান নয়।


8
@ অ্যালেক্সবুডভস্কি কারণ ব্রেভিটিয়ের মূল্য আছে।
জাভি

8
যেহেতু গিট 1.8.2 (ফেব্রুয়ারী 2013), git config core.commentcharসেই মন্তব্য চরিত্রটি কনফিগার করতে দেয়। দেখুন নিচের আমার উত্তর
VonC

3
গিট ভি 2.0.0 (2014.05.21) যেহেতু git commit --cleanup=scissorsআরও নমনীয় হবে। আমার উত্তরে
সুনগাম

4
আমাকে অবশ্যই বলতে হবে, আমি হিট দিয়ে ইস্যু নম্বর চিহ্নিত করার সিদ্ধান্ত নেওয়ার সময় গিটহাবের লোকেরা এই সমস্যাটি নিয়ে ভাবেননি আমি অবাক!
মাইকেল শেপার

1
@ মিশেল সুষ্ঠু হওয়ার জন্য, এই সম্মেলনটি ইতিমধ্যে ম্যান্টিস, ট্র্যাক, রেডমাইন এবং সম্ভবত অন্যরা ব্যবহার করেছিলেন used আমি অনুমান করি যে গিটহাব কেবল চাকাটি পুনর্বহাল করার পরিবর্তে এটি অনুসরণ করার সিদ্ধান্ত নিয়েছে। স্ট্যাকওভারফ্লো
কেলভিন

উত্তর:


235

এই আচরণটি git commit'ডিফল্ট' ক্লিন-আপ 'আচরণের অংশ। আপনি যদি লাইনগুলি শুরু করে রাখতে চান তবে আপনি #বিকল্প ক্লিন-আপ মোড ব্যবহার করতে পারেন।

যেমন

git commit --cleanup=whitespace

আপনি যদি #এটি করেন তবে প্রতিশ্রুতিতে উপস্থিত হতে চান না এমন সমস্ত লাইন মুছে ফেলার জন্য আপনাকে সতর্কতা অবলম্বন করতে হবে ।


পরবর্তী প্রশ্নটি: গিটটি একটি # দিয়ে ডিফল্টরূপে শুরু হওয়া গিটারের সাথে পরিচিত হওয়া কমিট বার্তার মন্তব্যগুলি আমি কোথায় সম্পাদনা করতে পারি?
অ্যালেক্স

2
@ অ্যালেক্স: এটি commit.templateগিট কনফিগারেশন ভেরিয়েবল দ্বারা নিয়ন্ত্রিত ।
সিবি বেইলি

23
বিদ্যমান কমিটগুলি সংশোধন করার জন্য এটি দুর্দান্ত কাজ করে। যেমন:git commit --amend --cleanup=whitespace
জেমস অ্যান্ড্রেস

@ চারেলস বেইলি: আমি গিট কমিট-ডি / দেব / নাল দিয়ে পূর্বনির্ধারিত পাঠ্য থেকে মুক্তি পাওয়ার প্রত্যাশা করছিলাম তবে এটি এখনও প্রদর্শিত হচ্ছে
অ্যালেক্স

আপনি যেমন "# 123 কমিট ম্যাসেজ" এর প্রতিশ্রুতিবদ্ধ বার্তা রাখতে সক্ষম হলেন তেমনি ম্যাক এবং সোর্সট্রির জন্য গিটহাবের মতো ক্লায়েন্টগুলিতে মন্তব্য করার ক্ষেত্রেও আমি অনুমান করি যে এই ক্লায়েন্টরা হ্যাঁ করছে কি?
ফিল অস্টলার

134

মনে রাখবেন, git1.8.2 (ফেব্রুয়ারী 2013) থেকে , আপনি #কমিট বার্তায় মন্তব্য করা লাইনের জন্য ' ' এর চেয়ে আলাদা অক্ষর ব্যবহার করতে পারেন ।

এটি আপনাকে #আপনার বাগ নম্বর রেফারেন্সের জন্য ' ' ব্যবহার করতে দেয় ।

#ডিফল্টরূপে ' ' দিয়ে মন্তব্য করা হয় যখন সম্পাদকে বার্তাগুলি সম্পাদনা করতে ব্যবহারকারীকে জিজ্ঞাসা করা হয় তখন গিট বিভিন্ন "ইঙ্গিত" লাইন দেয় ।

core.commentCharকনফিগারেশন পরিবর্তনশীল এই 'কাস্টমাইজ করতে ব্যবহার করা যেতে পারে #একটি ভিন্ন চরিত্র।


তত্ত্ব অনুসারে, আপনি একটি শব্দ রাখতে পারেন core.commentChar(একাধিক অক্ষর), তবে গিট 2.0.x / 2.1 আরও কঠোর হবে (Q3 2014)।

এনগুইন থিয়ে এনগ্যাক দুয় ( pclouds) দ্বারা প্রতিশ্রুতিবদ্ধ 50b54fd দেখুন :

কনফিগারেশন: কোর.কমচ্যারে দৃ strict় থাকুন

আমরা মন্তব্য স্ট্রিং সমর্থন করি না (কমপক্ষে এখনও না) not এবং মাল্টি-বাইট চরিত্রের এনকোডিংটিও ভুল ব্যাখ্যা করা যেতে পারে।

দুটি কমা সহ পরীক্ষাটি আপডেট করা হয়েছে কারণ এটি এটি লঙ্ঘন করে। এটি প্যাচটির সাথে যুক্ত করা হয়েছে যা এফ 80 এ 9-তে প্রবর্তিত core.commentCharহয় (কাস্টম "মন্তব্য চর" - 2013-01-16 এর মঞ্জুরি দিন)। কেন সেই আচরণটি চাওয়া হয়েছে তা আমার কাছে পরিষ্কার নয় ।


git 2.0.x / 2.1 (Q3 2014) এর জন্য একটি স্বয়ংক্রিয় নির্বাচন যুক্ত করবে core.commentChar: কমিট 84c9dc2
দেখুন

core.commentChar" auto" কখন , কমেন্ট চরটি #ডিফল্ট হিসাবে ' ' দিয়ে শুরু হয় তবে এটি ইতিমধ্যে প্রস্তুত বার্তায় থাকলে একটি ছোট সাবসেটে অন্য একটি চর আবিষ্কার করুন। এটি আশ্চর্য হওয়া বন্ধ করে দেয় কারণ গিটটি কিছু লাইন অপ্রত্যাশিতভাবে স্ট্রিপ করে।

নোট করুন যে গিটটি #কাস্টম টেম্পলেটগুলিতে মন্তব্য চর হিসাবে ' ' স্বীকৃতি দেওয়ার জন্য যথেষ্ট স্মার্ট নয় এবং যদি চূড়ান্ত মন্তব্যের চরিত্রটি আলাদা হয় তবে তা রূপান্তর করতে পারে।
এটি কমিট বার্তার অংশ হিসাবে কাস্টম টেম্পলেটগুলিতে '#' লাইনগুলি মনে করে। সুতরাং এটি কাস্টম টেম্পলেটগুলির সাথে ব্যবহার করবেন না।

"অটো" এর জন্য প্রার্থীদের অক্ষরের তালিকা হ'ল:

# ; @ ! $ % ^ & | :

তার মানে কম্যান্ডের মত একটি কমান্ড git commit -m '#1 fixed issue'স্বয়ংক্রিয়ভাবে কমেন্টচারকে ' ;' এ স্যুইচ করবে , কারণ ' #' কমিট বার্তায় ব্যবহৃত হয়েছিল।


1
: এই পরে ফিক্স সিনট্যাক্স ঐ খ, এই সংশ্লিষ্ট প্রশ্ন দেখতে পাবেন stackoverflow.com/questions/16164624/...
অ্যালোয়িজ্ Mahdal

@ গুটেন ট্রু, এর প্রতিফলনের জন্য আমি উত্তরটি আবার লিখেছি।
ভোনসি

1
@ নিউবাইকা গিটের কোন সংস্করণ সহ আপনি দেখতে পাচ্ছেন যে ইন্টারেক্টিভ রিবেসের সময় সমর্থিত নয়?
ভোনসি

2
সুতরাং, এটি সেট করতে আপনি এটি করতে পারেন, যেমন:$ git config --global core.commentchar ';'
ডেভেটাপলি

6
আমি এই উত্তর ভালবাসি। : নতুন প্রস্তাব সমাধান জন্য Onelinergit config --global core.commentChar auto
aross

81

এখানে উত্তরগুলি ভাল এবং বিশদযুক্ত, তবে আমার মতো গিট নুব জন্য গিট কনফিগারেশন বিকল্পগুলি কাস্টমাইজ করা এত স্পষ্ট নয়। এখানে থেকে পরিবর্তন করার জন্য একটি উদাহরণ# থেকে ;মন্তব্য অক্ষর:

git config core.commentChar ";"

এটাই আপনার করা দরকার।


3
এই এছাড়াও ডিফল্ট মন্তব্য টেক্সট পরিবর্তন যখন একটি ব্যবহার করে Git একটি বার্তা কমিট যোগ git commitএকটি বার্তা কমিট সম্পাদন করা করার জন্য কনফিগার সম্পাদক খুলুন!
মাইকেল ট্রাউ

1
এক-অফ ফিক্সের জন্য, এটি ব্যবহার করুন: git -c core.commentChar="|" commit --amend( |আপনি যা চান তার সাথে প্রতিস্থাপন করুন )।
ড্রোগানস

62

আপনি কমান্ড লাইন বিকল্পটি ব্যবহার করতে পারেন -m:

git commit -m "#123 fixed"

35
তবে এটি একটি ভয়াবহ প্রতিশ্রুতি বার্তা। বাগটি কী ছিল এবং কীভাবে এটি ঠিক করা হয়েছিল তা অন্তর্ভুক্ত করে তা নিশ্চিত করুন
ভাল ব্যক্তি

3
প্রতিশ্রুতিবদ্ধ বার্তা ঠিক আছে যতক্ষণ না বাগের সংখ্যা রয়েছে
ট্রিডেন্ট

6
যদি বাগ ট্র্যাকিং সিস্টেমটি হঠাৎ দূষিত হয়ে যায় এবং আপনার ব্যাকআপ নেই! :)
ক্যাভম্যান_ডিক

38

যদি আপনি একটি ইন্টারেক্টিভ রিবেস করছেন, তবে আপনি যখন নিজের প্রতিশ্রুতি বার্তাটি কিছু না দিয়ে সংরক্ষণ করবেন (কারণ #শুরুতে এটি মন্তব্য করেছে এবং তাই এটি অগ্রাহ্য করা হয়েছে) গিট আপনাকে কী করবে তা দেখাবে:

Aborting commit due to empty commit message.
Could not amend commit after successfully picking 5e9159d9ce3a5c3c87a4fb7932fda4e53c7891db... 123 salt hashed passwords
This is most likely due to an empty commit message, or the pre-commit hook
failed. If the pre-commit hook failed, you may need to resolve the issue before
you are able to reword the commit.
You can amend the commit now, with

        git commit --amend

Once you are satisfied with your changes, run

        git rebase --continue

সুতরাং, কেবল বার্তাটি সংশোধন করুন:

git commit --amend -m "#123 salt hashed passwords"

এবং রিবেস চালিয়ে যান:

git rebase --continue

ইতিমধ্যে যে ব্যক্তি দায়বদ্ধতাকে ধাক্কা দিয়েছে তার পক্ষে এটি সঠিক, তবে বার্তাটি পরিবর্তন করতে চান
হোয়াং ত্রিনিহ

আপনি যদি নিজের সম্পাদক ব্যবহার করে কোনও বার্তা প্রবেশ করেন এবং এটিতে শুরুতে একটি হ্যাশ থাকে তবে এটি নতুন কমিটের ক্ষেত্রেও প্রযোজ্য।
ওভেন উইলিয়ামস

29

git commit --cleanup=scissorsব্যবহার করা উচিত. এটি গিট ভি 2.0.0 এ যুক্ত হয়েছে এ এ

থেকে git commit --help

--cleanup=<mode>
  scissors
    Same as whitespace, except that everything from (and including) the line
    "# ------------------------ >8 ------------------------" is truncated if the message
    is to be edited. "#" can be customized with core.commentChar.

মন্তব্যগুলি হাতছাড়া করে ব্যবহার করা commit.cleanup = whitespaceএবং অপসারণের চেয়ে এটি কীভাবে ভাল তা আমি বুঝতে পারি না # …, যেমন @ চারেলস বেইলি ইতিমধ্যে পরামর্শ দিয়েছেন। scissors-মোড কেবল অতিরিক্ত git format-patch/ mailinfo/ দ্বারা ব্যবহৃত কাঁচি-সিনট্যাক্স পরিষ্কার করে am; বার্তা প্রেরণে মন্তব্য যোগ করার সময় এটি সিনট্যাক্স ব্যবহার করে না…-- >8 --…
স্লিপ ডি থম্পসন

১. আমি মনে করি এটি আরও ভাল কারণ আমার "কমেন্টসকে # ...বাই-হার্ড অপসারণের দরকার নেই । ২. আমি আপনার মন্তব্যের দ্বিতীয় অংশ সম্পর্কে এতটা নিশ্চিত নই, scissorsমোডটি অবশ্যই অবশ্যই আছে you আপনি git commit --helpকোন সংস্করণ gitব্যবহার করছেন? @ স্লিপডি.টম্পসন
সুনগাম

তাই না? whitespaceমোডে 1. স্ট্রিপিং অফার করে 1. শীর্ষস্থানীয় এবং খালি লাইনগুলি অনুসরণ করা, 2. পেছনের সাদা স্থান, 3. ক্রমাগত খালি লাইনগুলি ধসে পড়ুন। scissors1. শীর্ষস্থানীয় এবং খালি লাইনগুলি অনুসরণ করছে, ২. সাদা রঙের স্থান অনুসরণ করা, ৩. ক্রমাগত খালি লাইন ধস, ৪. লাইন থেকে সমস্ত কিছু (এবং অন্তর্ভুক্ত) # -…- >8 -…-। তবে, / / # -…- >8 -…-ব্যবহার করার সময় কাঁচি লাইনগুলি ( whenোকানো হয়) । সুতরাং একটি সাধারণ / / / কর্মপ্রবাহের জন্য, স্ট্রিপিং মোড মোডের তুলনায় শূন্য সুবিধা দেয় । v2.11.0git-format-patchmailinfoamgit-commitmergerebasecherry-pickscissorswhitespace
স্লিপ ডি থম্পসন

@ স্লিপডি.টমসন আপনি গিটের কোন সংস্করণ ব্যবহার করছেন? আমি 2.8.3 ব্যবহার করছি এবং git commit --cleanup=scissors করে পূর্বে লিখুন # ------------------------ >8 ------------------------সামনে লাইন git statusতথ্য। নীচের মত: `# ------------------------> 8 ------------------- ----- # উপরের লাইনটি স্পর্শ করবেন না। # নীচের সমস্ত কিছুই সরানো হবে। # শাখা মাস্টারে # # প্রাথমিক প্রতিশ্রুতিবদ্ধ # # পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ হতে হবে: # নতুন ফাইল: .গিটিগনোর `
সুনামাম

1
আমি বিশ্বাস করি আমি এর নীচে পৌঁছেছি। Git প্রকৃতপক্ষে সন্নিবেশ করে # ------------------------ >8 ------------------------অবস্থা পাঠ্য আগে "দেখে মনে হচ্ছে আপনি হতে পারে ...": _ যখন ব্যবহার scissors; যাইহোক, এটা কাঁচি লাইন সন্নিবেশ পর# Conflicts: … পাঠ্য। আমি commit.status = falseআমার সেট করেছিলাম .gitconfig, সুতরাং আমি কোনও স্থিতি পাঠ্য দেখছি না, কেবল বিবাদযুক্ত পাঠ্য। আমি সংশোধন করেছি; upvote এ পরিবর্তন।
স্লিপ ডি থম্পসন

3

টিকিট নম্বরের জন্য আলাদা উপসর্গ ব্যবহার করুন। অথবা "বাগ # 42" এর মতো টিকিট নম্বরে একটি শব্দ প্রিপেন্ড করুন। বা লাইনে একটি একক স্থান অক্ষর প্রিপেন্ড করুন; আপনি যদি সেই সাদা স্থান সরাতে চান তবে আপনি এটির জন্য কমিট হুক যোগ করতে পারেন।

আমি ব্যক্তিগতভাবে হুক দ্বারা এই ধরণের প্রতিশ্রুতিবদ্ধ বার্তা ম্যানিপুলেশনটি না করাই চাই কারণ আপনি যখন এটি চান না তখন এটি ট্রিগার হয় তখন তা খুব বিরক্তিকর হতে পারে। সবচেয়ে সহজ সমাধানটি সম্ভবত সমস্যার পুনরায় চিন্তা করা think


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

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


5
এটি পুরোপুরি যুক্তিসঙ্গত বৈশিষ্ট্যের অনুরোধ। বিশেষত ট্র্যাক, এএএএফসিটি, একটি হ্যাশ দিয়ে শুরু করে স্লিপ নম্বরটি দিয়ে কমিট বার্তাটি শুরু না হলে ট্র্যাক একটি বাগ স্লিপের সাথে কোন প্রতিশ্রুতি যুক্ত করে না তার আলোকে। সুতরাং এটি কেবল কারও মানদণ্ড নয়, এটি একটি সরঞ্জামের প্রয়োজনীয় সিনট্যাক্স। গিট ডেভসরা সিদ্ধান্ত নিতে দিন এটি সার্থক কিনা or (এবং হ্যাঁ, ট্র্যাক পারে এছাড়াও সমস্যাটি সমাধানের আছে যে গীত না অনুরোধ সঙ্গে কিছুই ভুল কি এটা করতে পারেন, অত্যধিক।।)
লুক Maurer

"বিশেষত ট্র্যাক, এএএএফসিটি, একটি হ্যাশ দিয়ে শুরু করে স্লিপ নম্বর দিয়ে যদি কমিট বার্তাটি শুরু না করে তবে বাগ স্লিপের সাথে কোন প্রতিশ্রুতি সংযুক্ত করে না" এই আলোকে। " - ট্র্যাকের সাথে আমার সীমিত অভিজ্ঞতায় #xxxপ্রতিশ্রুতি বার্তার যে কোনও জায়গায় ঘটনার মতো কিছু সমস্যার সাথে যুক্ত হবে। এটি কমিটের শুরুতে হবে না to হয়তো এই এমন কিছু যা গত পাঁচ বছরে পরিবর্তিত হয়েছে?
গিলডেনস্টন

1

আমার সমস্ত প্রতিশ্রুতি দিয়ে শুরু হয় #issueNumberতাই আমি এই বয়লারপ্লেটটি আমার vim .git/hooks/commit-msg:

NAME=$(git branch | grep '*' | sed 's/* //') 
echo "$NAME"' '$(cat "$1") > "$1"

সুতরাং ধরা যাক আমাদের শাখা আছে #15এবং আমরা প্রতিশ্রুতিবদ্ধ বার্তা দেই add new awesome feature। এই পদ্ধতির সাথে চূড়ান্ত প্রতিশ্রুতি বার্তা হবে #15 add new awesome feature

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