কমান্ড লাইন থেকে 'গিট কমিট-এম' এ লাইন ব্রেকটি যুক্ত করুন


746

আমি কমান্ড লাইন থেকে গিট ব্যবহার করছি git commit -m ""এবং ভিমে না গিয়ে প্রতিশ্রুতি বার্তায় (ব্যবহার করে ) একটি লাইন ব্রেক যুক্ত করার চেষ্টা করছি ।

এটা কি সম্ভব?


6
একটি দ্রষ্টব্য হিসাবে, এখানে একটি লিঙ্ক যা ভাল প্রতিশ্রুতি বার্তাগুলির সংক্ষিপ্তসার জানিয়েছে - github.com/erlang/otp/wiki/Writing-good-commit- ম্যাসেজ যদি এটি কাউকে সহায়তা করে।
ওয়েডএলফবি0y

5
এমন কিছু GIT_EDITOR="emacs" git commit -m 'paragraph1' -m 'paragraph2' -eআপনাকে এড়াতে সহায়তা করবে vim
jotik

উত্তর:


693

অবশ্যই, এটি কীভাবে করা হয় তা আপনার শেলের উপর নির্ভর করে। বাশে, আপনি বার্তার চারপাশে একক উদ্ধৃতি ব্যবহার করতে পারেন এবং কেবল উদ্ধৃতিটি খোলা রাখতে পারেন, যা আপনি উদ্ধৃতিটি বন্ধ না করা পর্যন্ত বাশকে অন্য লাইনের জন্য অনুরোধ জানাবে। এটার মত:

git commit -m 'Message

goes
here'

বিকল্পভাবে, আপনি একটি "এখানে নথি" ব্যবহার করতে পারেন (এটি হেরডোক হিসাবেও পরিচিত):

git commit -F- <<EOF
Message

goes
here
EOF

53
@ পিটার ফার্মারের উত্তর পরে উল্লেখ করেছে যে গিট কনভেনশন দৃশ্যত এমন কিছু: সংক্ষিপ্তসারের জন্য 1 লাইন, দুটি লাইন বিরতি, তারপরে একটি বিশদ বার্তা।
নিক স্পেস্ক

4
এছাড়াও, নীচে পোস্ট দেখুন @ ইএস। একটি সাধারণ ক্যারেজ রিটার্ন কৌশলটি করে।
হাকান এনসারী

6
উইন্ডোজে মোহামাদআলি, কমান্ডলাইন পার্সিং আলাদাভাবে
সাইমন রিখটার

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

2
@ নিখিল, অনেক প্রোগ্রাম স্টিলিন বা স্টডআউট বলতে ফাইলের নাম হিসাবে একক ড্যাশ সমর্থন করে। সঙ্গে এখানে ডকুমেন্ট , gitকমান্ড stdin থেকে বার্তা পাঠ্য পড়তে পারেন, এবং -Fবিকল্প ফাইলের নাম থেকে বার্তা পড়তে দেয়।
সাইমন রিখটার

513

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

git commit -m "My head line" -m "My content line."

লক্ষ করুন যে এটি পৃথক অনুচ্ছেদ তৈরি করে - লাইনগুলি নয়। সুতরাং প্রতিটি দুটি -mলাইনের মধ্যে একটি ফাঁকা রেখা থাকবে , যেমন:

My head line

My content line.

80
উইন্ডোজে কাজ করার সুবিধা রয়েছে যেখানে অন্যত্র উল্লিখিত কৌশলগুলি কাজ করে না। -mপ্রতিটি লাইনের জন্য পৃথক করুন । নিস!
ddotsenko

8
এই পদ্ধতিটি ব্যবহার করে তৈরি করা বার্তাগুলি উইন্ডোজ এবং টরটোজজিটের জন্য গিটহাব, গিটহাবের উপর সঠিকভাবে প্রদর্শন করে।
রিচার্ড

11
@ ডিডটসেনকো এটি লিনাক্স / ম্যাকে কাজ করার সুবিধা, যেখানে আমাদের শালীন শেল রয়েছে =)
সিওরো সান্তিলি 法轮功 病毒 审查 六四 事件

7
থেকে man git commit: -m <msg>, --message = <msg> প্রদত্ত <msg> কমিট বার্তা হিসাবে ব্যবহার করুন। যদি একাধিক-এম বিকল্প দেওয়া হয়, তবে তাদের মানগুলি পৃথক অনুচ্ছেদ হিসাবে সংযুক্ত করা হয়।
আমেদী ভ্যান গ্যাস

55
লক্ষ করুন যে এটি পৃথক অনুচ্ছেদ তৈরি করে - লাইনগুলি নয়। সুতরাং প্রতিটি দুটি -mলাইনের মধ্যে একটি ফাঁকা রেখা থাকবে ।
ওহাদ স্নাইডার

398

কমান্ড লাইন থেকে গিট ব্যবহার করে বাশের সাথে আপনি নিম্নলিখিতটি করতে পারেন:

git commit -m "this is
> a line
> with new lines
> maybe"

Enterআপনি যখন নতুন লাইন চান তখন কেবল টাইপ করুন এবং টিপুন , ">" চিহ্নটির অর্থ আপনি চাপ দিয়েছিলেন Enterএবং সেখানে একটি নতুন লাইন রয়েছে। অন্যান্য উত্তরগুলিও কাজ করে।


6
এটি কেন কাজ করে তা সম্পর্কে আবিজার্নানের জবাব স্পষ্ট করে - বাশ শেলটি <ডাব্লুবিডি> এন্টার </ কেবিডি> কী-প্রেসটিকে নতুন লাইন হিসাবে প্রথম ডাবল-উদ্ধৃতি চরিত্রটি 'বন্ধ' (ততক্ষণে ডাবল-কোট চরিত্র সহ) না হওয়া পর্যন্ত ব্যাখ্যা করে।
কেনি ইভিট

1
আমাকে একমত হতে হবে যে এটি গ্রহণযোগ্য উত্তর যা আরও কার্যকর, সহজ এবং ব্যবহারিক সমাধান। এটি আমার জন্য গিট 1.8.2.1 ব্যবহার করে ভাল কাজ করে। আমার কাছ থেকে +1
crmpicco

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

2
Zsh এ এটি ব্যবহার করবেন না! টার্মিনালটি বন্ধ হয়ে যাবে এবং আপনি যা টাইপ করেছেন তা হারাবেন।
লাইক

3
উইন্ডোজের জন্য গিটবাশ-এ কাজ করে।
ওমর তারিক

110

আপনি ব্যবহার করতে সক্ষম হওয়া উচিত

git commit -m $'first line\nsecond line'

থেকে ব্যাশ ম্যানুয়াল :

ফর্মের শব্দগুলি ' স্ট্রিং ' বিশেষভাবে চিকিত্সা করা হয়। শব্দটি স্ট্রিংয়ে প্রসারিত হয় , এএনএসআই সি স্ট্যান্ডার্ড অনুসারে ব্যাকস্ল্যাশ-পলায়নযুক্ত অক্ষর প্রতিস্থাপন করা হয়েছিল।

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


@ আরসি: বাশের কোন সংস্করণ আপনি ব্যবহার করছেন? আপনি যখন কি দেখতে পাবেন echo $'one\ntwo'?
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

1
আরএসআই ash বাশ - রূপান্তর জিএনইউ ব্যাশ, সংস্করণ ৩.২.৫৩ (১) -রেলিজ (x86_64-আপেল-ডারউইন ১৩) কপিরাইট (সি) ২০০ Free ফ্রি সফটওয়্যার ফাউন্ডেশন, ইনক। কমান্ডের আউটপুটটি প্রত্যাশার মতো, দুটি পৃথকভাবে দেখানো হয়েছে লাইন!
ccoutinho

উইন্ডোজ me এ আমার জন্য এটির সেরা বিকল্পটি আপনাকে ধন্যবাদ
মোহামাদ আলী

2
$ এখানে মূল কী এবং আমি এটি প্রথম গ্লাসে লক্ষ্য করিনি। অন্যথায় আমি আমার বার্তার মাঝখানে একটি get n পাই।
ক্রিসোবি 19

1
এমনকি পুরো স্ট্রিংয়ের জন্য আপনাকে $ '...' ব্যবহার করতে হবে না; শুধু newline অক্ষর প্রায় এই ব্যবহার কাজ করবে: git commit -m "first line"$'\n'"second line"। কেবল নোট করুন আপনারটি শুরু করার আগে আপনাকে পূর্ববর্তী স্ট্রিংটি বন্ধ করতে হবে $'string'
প্লাজমাবিন্টুরং

95

আপনার গিট কমিটের সাথে লাইন ব্রেকগুলি যুক্ত করা

একটি বহু-লাইন প্রতিশ্রুতি বার্তা তৈরি করতে নিম্নলিখিত চেষ্টা করুন:

git commit -m "Demonstrate multi-line commit message in Powershell" -m "Add a title to your commit after -m enclosed in quotes,
then add the body of your comment after a second -m.
Press ENTER before closing the quotes to add a line break.
Repeat as needed.
Then close the quotes and hit ENTER twice to apply the commit."

তারপরে আপনি যা করেছেন তা যাচাই করুন:

git log -1

আপনি ভালো কিছু দিয়ে শেষ করা উচিত:

পাওয়ারশেলে মাল্টি-লাইন গিট কমিট বার্তা

স্ক্রিনশটটি পশগিতের সাথে পাওয়ারশেল ব্যবহার করে সেট আপ করা একটি উদাহরণ থেকে।


7
দুর্দান্ত উত্তর। আমি যুগে যুগে এটির জন্য সন্ধান করেছি এবং আমার গিট কমিট বার্তাগুলি ফর্ম্যাট করার বিভিন্ন উপায় চেষ্টা করেছি, তবে এটি সর্বোত্তম কাজ করে works আমি নিশ্চিত করতে পারি যে এটি গিট 1.8.2.1 এর সাথে প্রম্পটে কাজ করে।
crmpicco


2
উইন্ডোজের জন্য গিট বাশে এটি আমার পক্ষে অনেক কাজ করেছে
ইউলিসেস আলভেস

1
এটি সবচেয়ে সুসংগত পদ্ধতি হওয়ায় এটি বেছে নেওয়া উত্তর হওয়া উচিত, এটি অন্য কোনও পরামর্শ মতো সুনির্দিষ্ট সিএলআই প্রম্পটে নির্ভর করে না ..

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

44

এমন কিছু করছে

git commit -m"test\ntest"

কাজ করে না, তবে এরকম কিছু

git commit -m"$(echo -e "test\ntest")"

কাজ করে, তবে এটি খুব সুন্দর নয়। আপনি নিজের git-commitlbমধ্যে একটি কমান্ড স্থাপন করেছেন PATHযা এরকম কিছু করে:

#!/bin/bash

message=$1

git commit -m"$(echo -e "$message")"

এবং এটি এর মতো ব্যবহার করুন:

git commitlb "line1\nline2\nline3"

সতর্কতার শব্দ, আমার একটা অনুভূতি আছে যে সাধারণ কনভেনশনটির প্রথম সারির হিসাবে একটি সারসংক্ষেপ রেখা থাকা উচিত, এবং তারপরে দুটি লাইন ব্রেক হবে, এবং তারপরে কমিট বার্তায় একটি বর্ধিত বার্তা, সুতরাং এরকম কিছু করা সেই কনভেনশনটিকে ভেঙে ফেলবে। আপনি অবশ্যই করতে পারেন:

git commitlb "line1\n\nline2\nline3"

8
+1 এটি ছিল সেই সাধারণ সম্মেলন যা আমাকে এই পথটি নীচে দেখতে পেয়েছিল। ধন্যবাদ
অ্যালান হোয়াইটলা

39

গিট ডকুমেন্টেশন থেকে :

-m <msg>
--message = <msg>
প্রদত্ত <msg> কমিট বার্তা হিসাবে ব্যবহার করুন। যদি একাধিক -mবিকল্প দেওয়া হয়, তবে তাদের মানগুলি পৃথক অনুচ্ছেদ হিসাবে সংঘবদ্ধ হয়।

সুতরাং, আপনি যদি একাধিক প্রতিশ্রুতি বার্তাগুলি গোষ্ঠীভুক্ত করতে চান তবে এটির কাজটি করা উচিত:

git commit -m "commit message1" -m "commit message2"

অগ্নোস্টিক দ্রবণ (শেল-স্বতন্ত্র)। এর জন্য ধন্যবাদ. আমাদের আরটিএফএম করা দরকার :)
মাদ এম এম

38

আমি আশা করি এটি পোস্ট করা প্রশ্ন থেকে খুব দূরে নেতৃত্ব দিচ্ছে না, তবে ডিফল্ট সম্পাদক স্থাপন করে এবং তারপরে ব্যবহার করছে

git commit -e

আরো অনেক আরামদায়ক হতে পারে।


2
এই এক সেরা anwser হওয়া উচিত।
এইচএক্সপ্যাক্স

5
আপনি -eএটিকে ছেড়ে যেতে পারেন এবং এটি এখনও সম্পাদকটি খুলবে
jাঙ্গোনাট

এই উত্তরটি আমি খুঁজছিলাম।
তিনমিনিনো

28

স্টাফগুলিকে জটিল করার দরকার নেই। পরে -m "text...পরের লাইনে টিপে অর্জিত হয় EnterEnterচাপলে কখন >উপস্থিত হয়। আপনার হয়ে গেলে, কেবল "চাপুন এবং টিপুন Enter:

$ git commit -m "Another way of demonstrating multicommit messages:
>
> This is a new line written
> This is another new line written
> This one is really awesome too and we can continue doing so till ..."

$ git log -1
commit 5474e383f2eda610be6211d8697ed1503400ee42 (HEAD -> test2)
Author: ************** <*********@gmail.com>
Date:   Mon Oct 9 13:30:26 2017 +0200

Another way of demonstrating multicommit messages:

This is a new line written
This is another new line written
This one is really awesome too and we can continue doing so till ...

1
এই উত্তর যথেষ্ট প্রেম পাচ্ছে না!
সিব্লাইন

1
এটি দুর্দান্ত উত্তর, নতুন লাইনগুলি গিথুবে সঠিকভাবে দেখানো হয়েছে। প্রথম লাইন শিরোনাম হিসাবে দেখায়।
যোগেশ উমেশ ভৈতি

18

আমি ম্যাকের উপর zsh ব্যবহার করি এবং ডাবল কোট (") এর মধ্যে আমি বহু-লাইন প্রতিশ্রুতি বার্তা পোস্ট করতে পারি Bas মূলত আমি নতুন লাইনের জন্য টাইপ করতে এবং চাপতে থাকি, তবে বার্তাটি গিটকে প্রেরণ করা হয় না যতক্ষণ না আমি উদ্ধৃতিগুলি বন্ধ করি এবং ফিরে না আসি ।


7
আপনি একইভাবে ব্যাশে করতে পারেন।
পিটার ফার্মার

17

বাশ / জেডসে আপনি কেবলমাত্র উদ্ধৃতিগুলির ভিতরে আক্ষরিক লাইন বিরতি ব্যবহার করতে পারেন:

git commit -m 'Multi-line
commit
message'

এএনএসআই-সি উদ্ধৃতি বাশ / জেডএস - এও কাজ করে:

git commit -m $'Multi-line\ncommit\nmessage'

কমিট ম্যাসেজটি সম্পাদনা করতে আপনি নিজের পছন্দসই সম্পাদক ব্যবহার করতে গিটকে নির্দেশও দিতে পারেন। গিট-কমিট সম্পর্কিত ডক্স থেকে :

কমিট লগ বার্তা সম্পাদনা করতে ব্যবহৃত সম্পাদক GIT_EDITORপরিবেশ পরিবর্তনশীল, core.editorকনফিগারেশন ভেরিয়েবল, VISUALএনভায়রনমেন্ট ভেরিয়েবল বা EDITOR পরিবেশ পরিবর্তনশীল (সেই ক্রমে) থেকে চয়ন করা হবে। বিশদ জন্য গিট-ওয়ার দেখুন ।


5

ব্যক্তিগতভাবে, viকমান্ড লাইনে git commit --amendঠিক পরে না করে বরং (বা আপনার পছন্দের গিট সম্পাদক যাই হোক না কেন) এর পরে কমিট বার্তাগুলি সংশোধন করা আমার পক্ষে সবচেয়ে সহজ মনে হয়েছে git commit


6
আপনি কেবল ব্যবহার করে সংশোধন না করে এই একই ফলাফল অর্জন করতে পারেন git commit -e
নাথান হিন্চে

4
বা সহজভাবে git commit, এবং এটি কমিট বার্তা টেম্পলেট সহ একটি সম্পাদক খুলবে।
জিম স্টুয়ার্ট

5

আপনি যদি ব্যাশ ব্যবহার করছেন তবে হিট C-x C-e( Ctrl+ x Ctrl+ e) করুন এবং এটি আপনার পছন্দসই সম্পাদকের বর্তমান কমান্ডটি খুলবে।

আপনি পছন্দসই সম্পাদককে টুইট করে VISUALএবং পরিবর্তন করতে পারেন EDITOR

আমার মধ্যে যা আছে তা .bashrc:

export ALTERNATE_EDITOR=''
export EDITOR='emacsclient -t'
export VISUAL='emacsclient -c'
export SUDO_EDITOR='emacsclient -t'

1
তাহলে কেন কেউ এটিকে হ্রাস করলেন? ব্যাশে মাল্টলাইন কমান্ডের সাথে কাজ করার এটি সর্বাধিক সুবিধাজনক উপায়, আপনাকে কেবল একবার এটি কনফিগার করতে হবে। আমি এখানে অন্যান্য উত্তরে দেখানো অন্যান্য মূ .় পরামর্শগুলি ব্যবহার করছি, তবে একবার আপনি আপনার প্রিয় পাঠ্য সম্পাদকটিতে আপনার আদেশগুলি সম্পাদনা করতে শিখলে আর ফিরে আসার উপায় নেই।
আলেকস-ড্যানিয়েল জাকিমেনকো-এ।

1
এটি এতটা হৃদয়বিদারকভাবে দরকারী আমি কেবল বিশ্বাস করতে পারি না আমি এটি ছাড়া আমার গত বছরগুলি বেঁচে ছিলাম।
সিনিডেড

2

এখানে স্ট্যান্ডার্ড সেন্টিমিডি.এক্সই শেল (আপনার কিছু পরীক্ষার-ত্রুটির সময় বাঁচানোর জন্য) উইন্ডোজটিতে ব্যর্থ সমাধানগুলির একটি তালিকা রয়েছে :

  • git commit -m 'Hello Enter কাজ করে না: এটি কোনও নতুন লাইন চাইবে না

  • git commit -m "Hello Enter একই রচয়িতা

  • git commit -m "Hello^ Enter একই রচয়িতা

  • git commit -m 'Hello^ Enter World'দেখে মনে হচ্ছে কাজ করছে কারণ এটি "আরও?" এবং একটি নতুন লাইন লিখতে দেয়, তবে শেষ পর্যন্ত আপনি যখন git logদেখবেন যে এটি এখনও একটি লাইন বার্তা ...

টিএল; ডিআর: এমনকি উইন্ডোজে হলেও, কমান্ডলাইন পার্সিং আলাদাভাবে কাজ করে এবং মাল্টলাইন ইনপুটটিকে ^অনুমতি দেয় তবে এটি এখানে সহায়তা করে না।

শেষ পর্যন্ত git commit -eসম্ভবত সেরা বিকল্প।


"শেল" উইন্ডোজ অফারের জন্য কেবল সেই দু: খজনক, দুঃখজনক অজুহাতটি ব্যবহার করবেন না।
jthill

2

দুঃখের বিষয়, গিট তার বার্তায় কোনও নতুন লাইন চরিত্রের জন্য অনুমতি দেয় বলে মনে হচ্ছে না। ইতিমধ্যে উপরে বিভিন্ন যুক্তিসঙ্গত সমাধান রয়েছে, তবে স্ক্রিপ্ট করার সময় এগুলি বিরক্তিকর হয়। এখানে নথিগুলিও কাজ করে তবে এটি মোকাবেলা করতে কিছুটা বিরক্তিকরও হতে পারে (ভাবুন ইয়ামল ফাইলগুলি)

আমি যা করেছি তা এখানে:

git commit \
    --message "Subject" \
    --message "First line$(echo)Second line$(echo)Third Line"

যদিও এটি এখনও কুৎসিত, এটি 'ওয়ান-লাইনার' এর জন্য মঞ্জুরি দেয় যা এখনও কার্যকর হতে পারে। সাধারণত স্ট্রিংগুলি ভেরিয়েবল হয় বা ভেরিয়েবলের সাথে একত্রিত হয়, কদর্যগুলি সর্বনিম্ন রাখা যেতে পারে।


1

আমি এমন কাউকে উল্লেখ করতে দেখছি না যে আপনি কোনও বার্তা না দিলে এটি আপনার জন্য ন্যানো খুলবে (কমপক্ষে লিনাক্সে) যেখানে আপনি একাধিক লাইন লিখতে পারেন ...

শুধুমাত্র এটির প্রয়োজন:

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