গিট: আমি কী 'সংশোধিত সামগ্রী' / স্ট্যাটাসে, ডিফ ইত্যাদির ক্ষেত্রে নোংরা সাবমডিউলের এন্ট্রিগুলির তালিকাটি দমন করতে পারি?


123

কিছুক্ষণের মধ্যে (প্রায় 1.6.x প্রকাশিত, আমার মনে হয়) গিট সাবমোডিয়ুলের অভ্যন্তরে পরিবর্তনগুলি সম্পর্কে সচেতন হয়েছিল। এটি কেবল আমাকে বিরক্ত করার জন্য কাজ করে:

it গিট স্ট্যাটাস বিক্রেতা | গ্রেপ পরিবর্তিত:
# সংশোধিত: বিক্রেতা / রেল (পরিবর্তিত সামগ্রী)
it গিট ডিফ বিক্রেতার /
পৃথক - একটি / বিক্রেতার / রেল খ / বিক্রেতার / রেলগুলি
--- একটি / বিক্রেতা / রেল
+++ বি / বিক্রেতা / রেল
@@ -1 +1 @@
-সুবিপ্রজেক্ট 046c900df27994d454b7f906caa0e4226bb42b6f প্রতিশ্রুতিবদ্ধ
+ সাবপ্রজেক্ট কমিট 046c900df27994d454b7f906caa0e4226bb42b6f- নোংরা

দয়া করে এটি বন্ধ করুন?

সম্পাদনা:

ঠিক আছে, তাই আমার একটি উত্তর আছে। এখন আমার আর একটি প্রশ্ন আছে:

আমি কি এটি ভিতরে রাখতে পারি ~/.gitconfig? আমার প্রাথমিক থেকে দেখা যাচ্ছে যে আমি পারছি না, এবং প্যাচকে স্কিম করে প্রতিশ্রুতিবদ্ধ কিছুই দেখিনি। (আমি অনুমান করি যে আমি এখনও একটি উপনাম তৈরি করতে পারি))


আমি এই সম্পর্কিত গিট মেলিং তালিকায় কিছু প্যাচ দেখতে পাচ্ছি, জুন ২০১০-এর ডেটিং So সুতরাং আশা করি এটি একটি আসন্ন প্রকাশে। ('গিট "--ignore-submodules = নোংরা" "এর জন্য গুগল)
কেচ

বার্তাটি কেন ঘটে তা ব্যাখ্যা করার জন্য +1!
dotancohen

উত্তর:


175

এমনকি .gitmodules ফাইলের মধ্যে প্রতিটি যুক্ত সাবমডিউলের জন্য উপেক্ষা মোড সেট করার সম্ভাবনা রয়েছে।

ঠিক আজই আমি এই সমস্যার মুখোমুখি হয়েছি এবং সমাধানের সন্ধানের পরে তাৎক্ষণিকভাবে এটি সম্পর্কে আমার ব্লগে একটি নিবন্ধ লিখেছিলাম: গিট সাবমোডিয়ুলের পরিবর্তনগুলি কীভাবে উপেক্ষা করবেন

এর সংক্ষেপ:

আপনি একবার সাবমডিউল যুক্ত করলে .gitmodulesআপনার সংগ্রহস্থলের মূলটিতে একটি ফাইল থাকবে

কেবলমাত্র সেই .gitmodulesফাইলটিতে একটি লাইন যুক্ত করুন:

[submodule "bundle/fugitive"]
    path = bundle/fugitive
    url = git://github.com/tpope/vim-fugitive.git
    ignore = dirty

5
+1, তবে আমি আপনার ব্লগ পোস্টের মূল অংশটি এসও-তে আপনার উত্তরটিতে অন্তর্ভুক্ত করেছি: আপনার বাহ্যিক লিঙ্কটি একদিন অবৈধ হয়ে উঠতে পারে, এসও উত্তরগুলির বিপরীতে যা চিরকাল থাকবে (এসও ডাম্পের মাধ্যমে: ব্লগ.স্ট্যাকওভারফ্লো.com / 2009/ 06 /… )
ভনসি

5
git statusপ্রত্যাশা অনুযায়ী কাজ করার আগে আমার .gitmodule ফাইলটি প্রতিশ্রুতিবদ্ধ করার দরকার পড়েছে । এছাড়াও আপনার কমপক্ষে 1.7.4 বা আরও ভাল প্রয়োজন আমার বিশ্বাস।
এ্যালেম্বই

জন্য .gitignoreফাইল, একটি ব্যক্তিগত সংস্করণ বলা হয় excludeঅবস্থিত .git/info/কোন সংস্করণটি ঘাঁটা নয়। ফাইলটির জন্য কি কোনও অনুরূপ ফাইল রয়েছে .gitmodules, যা আপনাকে কেবল প্যারেন্ট রিপোজিটরির পরিবর্তে সাবমোডিয়ালে পরিবর্তন দমন করতে দেবে .gitmodules?
হ্যালো গুডবাই

2
আমি একটি শাখা ট্র্যাক করে একটি সাবমডিউল দিয়ে কাজ করতে পারি না। এটি কি সমর্থন করে না? `` `[সাব-মডিউল" স্মট্যাক / উত্তরযোগ্য / হোস্টস "] পথ = স্মাট্যাক / উত্তরযোগ্য / হোস্ট url = https: // ... শাখা = মাস্টার উপেক্ষা = নোংরা` `` `` `
মার্ক আব্রামোভিটজ

1
@ মারাকআব্রামউইটজ আমি যে একই ইস্যুতে ভেবেছি তা নিয়ে হোঁচট খেয়েছি - আপনি কি এর কোন সমাধান পেয়েছেন?
সেবাস্তিয়ান জি মেরিনেসকু

61

আপনি দমন করতে পারেন এমন দুটি ধরণের পরিবর্তন বিজ্ঞপ্তি রয়েছে।

প্রথমটি হ'ল untracked contentযখন আপনি আপনার সাবমডিউডটিতে পরিবর্তন করেন তবে এখনও সেগুলি প্রতিশ্রুতিবদ্ধ হন না। পিতামাতা সংগ্রহস্থলগুলি এগুলি লক্ষ্য করে এবং git statusসে অনুযায়ী এটি প্রতিবেদন করে:

modified: modules/media (untracked content)

আপনি এটি দিয়ে দমন করতে পারেন:

[submodule "modules/media"]
   path = modules/media
   url = git@github.com:user/media.git
   ignore = dirty

যাইহোক, আপনি একবার এই পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করার পরে, প্যারেন্টের সংগ্রহস্থল আবার নোটিশ গ্রহণ করবে এবং সে অনুযায়ী তাদের প্রতিবেদন করবে:

modified:   modules/media (new commits)

আপনি যদি এগুলিও দমন করতে চান তবে আপনাকে allপরিবর্তনগুলি উপেক্ষা করতে হবে

[submodule "modules/media"]
   path = modules/media
   url = git@github.com:user/media.git
   ignore = all

2
জন্য .gitignoreফাইল, একটি ব্যক্তিগত সংস্করণ বলা হয় excludeঅবস্থিত .git/info/কোন সংস্করণটি ঘাঁটা নয়। ফাইলটির জন্য কি কোনও অনুরূপ ফাইল রয়েছে .gitmodules, যা আপনাকে কেবল প্যারেন্ট রিপোজিটরির পরিবর্তে সাবমোডিয়ালে পরিবর্তন দমন করতে দেবে .gitmodules?
হ্যালো গুডবাই

1
হ্যালো গুডবি: আপনি যদি .git / মডিউলগুলি / $ MODULENAME / পরীক্ষা করেন তবে আপনি দেখতে পাবেন যে মডিউলের জন্য .git ডিরেক্টরি বলে মনে হচ্ছে। সেই জায়গায় তথ্য পরিবর্তন / ফাইল বাদ দেওয়া কাজ করে।
পলডাব্লু

1
ignore = allঅংশ দরকারী।
এরিক ওয়াং

53

আপডেট করুন: দেখুন (এবং ভোট দিন) nilshaldenwang এর উত্তর সম্ভাবনা সংক্রান্ত জুড়তে .gitmodulesফাইল একটি প্রদত্ত submodule নোংরা রাষ্ট্র উপেক্ষা একটি কনফিগ প্যারামিটার।

ignore = dirty

সুতরাং গিট 1.7.2 আউট এবং এর --ignore-submodulesবিকল্প অন্তর্ভুক্ত status

থেকে git help status:

--ignore-submodules [= <যখন>]
    পরিবর্তনগুলি সন্ধান করার সময় সাবমোডিয়ালে পরিবর্তনগুলি উপেক্ষা করুন।
    <যখন হয় "অবরুদ্ধ", "নোংরা" বা "সমস্ত" হতে পারে, যা
    ডিফল্ট হয়। যখন "আনট্র্যাকড" ব্যবহার করা হয় সাবমডিউলগুলি
    নোংরা হিসাবে বিবেচনা করা হয় না যখন তারা কেবল তালবিহীন থাকে
    সামগ্রী (তবে তারা এখনও পরিবর্তিত সামগ্রীর জন্য স্ক্যান করা আছে)।
    "নোংরা" ব্যবহার করে কাজের গাছের সমস্ত পরিবর্তনকে উপেক্ষা করে
    সাবমডিউলগুলি কেবলমাত্র সঞ্চিত কমিটগুলিতে পরিবর্তন করে
    সুপারপ্রজেক্টটি দেখানো হয়েছে (এটি আগে আচরণ ছিল
    1.7.0)। "সমস্ত" ব্যবহার করে সাবমডিউলে (এবং
    সাবমডিউল সংক্ষিপ্তসারগুলির আউটপুট দমন করে যখন
    কনফিগারেশন বিকল্পের স্থিতি.সুবডিউডসুলম্যারি সেট করা আছে)।

আমি যে মান চাই dirty

git status --ignore-submodules=dirty

আমি একটি নাম ব্যবহার করি কারণ আমি অলস:

alias gst='git status --ignore-submodules=dirty'

2
যেহেতু এটি একটি স্বীকৃত উত্তর, আমার মনে হয় আপনার এখানে ফাইলের ignore=dirtyপৃথক এন্ট্রিগুলিতে যুক্ত করার বিকল্পটি যুক্ত করা উচিত .gitmodules
অ্যান্ড্রি দ্রোজডিয়ুক

14

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

গিট 1.7.2-আরসি 2 প্রকাশেও ঘোষণা করা হয়েছে :

Git v1.7.2 Release Notes (draft)
================================

Updates since v1.7.1
--------------------

" git status" শিখেছি " --ignore-submodules" বিকল্প।

অর্থ:

git config --global diff.ignoreSubmodules dirty

বিকল্প হিসাবে এটি সম্পর্কিত আপাতত পছন্দ করা পদ্ধতির নয় :

এই সিরিজের পরে আমি একটি কনফিগার বিকল্প ' ignore' যুক্ত করার পরিকল্পনা করছি .gitmodules, যা প্রতিটি সাবমোডুলের জন্য "সমস্ত", "নোংরা", "চিহ্নবিহীন" বা "কিছুই নয়" (ডিফল্ট) সেট করা যেতে পারে।

" git diff" এবং " git status" প্রতিটি সাবমডিউলের জন্য সেই কনফিগারেশন মানটি ব্যবহার করবে।
" --ignore-submodule" এই ডিফল্টটিকে ওভাররাইডগুলি ব্যবহার করে (এবং কনফিগার সেটিংসকে ওভাররাইড করতে সক্ষম করতে নতুন প্যারামিটার "কিছুই নয়" যুক্ত করা হবে)।

এবং git submdule syncপ্রতিবার " " বিকল্পটি পরিবর্তিত হওয়ার পরেও এড়াতে , আমি .git/configপ্রথমে এটি অনুসন্ধান করতে চাই ।
যদি এটি সেখানে না পাওয়া যায় .gitmodulesতবে উপস্থিত থাকলে তা নেওয়া হবে ।

সুতরাং ব্যবহারকারীরা সেটিংটি ওভাররাইড করতে পারে তবে তারা যদি তা না করে তবে আপস্ট্রিম সহজেই এটি পরিবর্তন করতে পারে (যেমন কোনও সাবমডিউলগুলি .gitignoreআপডেট করা হয়েছে যাতে এটি ignore=untrackedআর অপসারণের প্রয়োজন হয় না)।
এছাড়াও সুইচিং শাখা প্রভাব সঙ্গে সঙ্গে যদি 'থাকবে ignoreএ' এন্ট্রি .gitmodulesশাখার মধ্যে ভিন্ন।


কোনও নির্দিষ্ট সাবমোডিয়ুলকে উপেক্ষা করার জন্য গিটের স্থিতি (বা কোনও গিট কমান্ড) তৈরি করার জন্য আরেকটি পদ্ধতি গিট 2.13 (Q2 2017) এর সাথে উপলব্ধ:

git config submodule.<name>.active false

" গিট সাবমডিউলের জন্য নতুন প্রতিশ্রুতিগুলি উপেক্ষা করুন " এ আরও দেখুন ।


আমি প্রশ্নটি একটি গিটকনফিগ বিট দিয়ে আপডেট করেছি। উত্তরটি যদি আপনি জানেন তবে কেবল পিং করছেন।
kch

@ কেচএইচ: আমি এই ধরণের সেটিংটি সংরক্ষণের জন্য প্রস্তাবিত পদ্ধতির সাথে উত্তরটি আপডেট করেছি।
ভনসি

@ জলজী: যেমন আপনি আপনার অন্য মন্তব্যে উল্লেখ করেছেন: " ignore = dirty"
ভোনসি

1
@ড্রোজি: আমি অতিরিক্ত কনফিগার প্যারামিটার "উপেক্ষা = নোংরা" দিয়ে নীলশালেনওয়াংয়ের উত্তরকে উত্সাহিত এবং সম্পন্ন করেছি, আমি সরকারী উত্তরটি সম্পাদনা করেছি এবং নীলশালেনওয়াংয়ের পোস্টের সাথে একটি লিঙ্ক যুক্ত করেছি।
ভনসি

ধন্যবাদ, ব্যক্তিগত কিছুই নয়, তবে আমি কেবলমাত্র শীর্ষে আরও দরকারী উত্তর চেয়েছিলাম, যা আমি প্রাথমিকভাবে মিস করেছি!
অ্যান্ড্রি দ্রোজডিয়ুক

11

আপনি ব্যবহার করতে পারেন

% git config [--global] submodule.ignore dirty

submodule.ignore = dirtyআপনার .git/configফাইল সেট করতে । --globalআপনার মধ্যে উপেক্ষা করা পতাকা সেট করবে এবং আপনার ~/.gitconfigসমস্ত ভান্ডারগুলিতে প্রয়োগ করবে। এটি ছাড়া এটি .git/configবর্তমানে আপনি যে রেপোতে রয়েছেন তার জন্য সেট করা উচিত ।

আমি এটিরsubmodule.<name>.ignore মধ্যে কেবলমাত্র ডকুমেন্টেশন খুঁজে পাচ্ছি তা হ'ল গিট-কনফিগার ডক্সে । আমি এটি একটি .gitmodules ফাইল থেকে আমার। / .Gitconfig এ সরিয়েছি এবং এটি এখনও আমার জন্য কাজ করছে।


@ PawełGościcki আমি নিশ্চিত করতে পারি যে এটি গিট 2.0.0 তে কাজ করে।
সিরো সান্তিলি :19 冠状 病 六四 事件 法轮功

6

আপনি যোগ করা প্রয়োজন

উপেক্ষা = নোংরা

to .gitmodules


.Gitmodule এ আপনি এটি কোথায় যুক্ত করবেন?
অ্যান্ড্রি দ্রোজডিয়ুক

@ hydrozzy আপনি এটিকে উপেক্ষা করতে চান এমন প্রতিটি সাব-মডুলেলের বিভাগের অধীনে যুক্ত করুন, যেখানে "পথ" এবং "url" মানগুলি সংজ্ঞায়িত করা হয়েছে।
jsdalton

2

সুতরাং git v1.7.2-rc2 এর যা আছে তা আমার কাছে রয়েছে:

it git diff --ignore-submodules = নোংরা বিক্রেতা
# আউটপুট নেই
it গিটের স্থিতি --ignore-submodules = নোংরা বিক্রেতা
# শাখায়…
প্রতিশ্রুতিবদ্ধ কিছুই (পরিশ্রমী ডিরেক্টরি পরিষ্কার)

আপনার নিজের গিট কিভাবে তৈরি করছেন:

# get git
git clone git://git.kernel.org/pub/scm/git/git.git git
cd git
git checkout v1.7.2-rc2

# make git. beware of setting prefix
make configure
./configure --prefix=/usr/local
make
sudo make install

# you REALLY don't want to `make doc`, use this instead
sudo make quick-install-man
sudo make quick-install-html

1
আমি এখানে সাত Gits গণনা: git clone git://git.kernel.org/pub/scm/git/git.git git
dotancohen

2

আমি এখানে আরও বিস্তারিতভাবে এই প্রশ্নের উত্তর দিয়েছেন ।

শেষ ঘন্টা

git config --global diff.ignoreSubmodules dirty

এই পরিবর্তনগুলি উপেক্ষা করার জন্য একটি স্থানীয় কনফিগারেশন বিকল্প যুক্ত করতে।


1

আপনি যোগ করতে চাইবেন না ignore = dirtyকরতে .gitmodules, আপনি পরিবর্তনগুলি আপনি উপেক্ষা করতে চায় সে সম্পর্কে আরো নির্বাচনী হতে চান হতে পারে।

এটি করতে, প্যাটার্নগুলি যুক্ত করুন .git/submodule_foo/bar/info/exclude, submodule_foo/bar/সাবমডিউলের পথটি কোথায় ।

নিদর্শনগুলি আপনি যে প্যাটার্নগুলিতে যুক্ত করবেন সেগুলির অনুরূপ .gitignore, মূলটি সাবমডিউল ডিরেক্টরি হিসাবে। উদাহরণস্বরূপ, এই প্যাটার্নটি সাবমোডিয়ুলের buildডিরেক্টরিটিকে উপেক্ষা করে submodule_foo/bar/:

# in .git/submodule_foo/bar/info/exclude:
/build/

3
আমি মনে করি এটি কোনও সাবমডিউলের অভ্যন্তরেও পরিবর্তনগুলি আড়াল করবে। আমি কেবল সাবমডিউলের বাইরে থাকাকালীন পরিবর্তনগুলি লুকিয়ে রাখতে চাই। ভিতরে থাকা অবস্থায়, যখন আমি সক্রিয়ভাবে সাবমডিউলে কাজ করছি তখন তারা ঠিকঠাক থাকে।
রাফেল শোয়েকার্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.