গিটটি কেবলমাত্র পরিবর্তিত পরিবর্তনগুলি যুক্ত করে এবং তালিবদ্ধ ফাইলগুলিকে উপেক্ষা করে


658

আমি "গিট স্ট্যাটাস" দৌড়েছি এবং নীচে তালিকাভুক্ত কিছু ফাইল রয়েছে যা পরিবর্তিত হয়েছিল / বা শিরোনামের অধীনে "পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করার জন্য পর্যায়ের হয় না" under এটি এমন কিছু চিহ্নযুক্ত ফাইল তালিকাভুক্ত করেছে যা আমি উপেক্ষা করতে চাই (এই ডিরেক্টরিগুলিতে আমার একটি ".gitignore" ফাইল রয়েছে)।

আমি পরিবর্তিত ফাইলগুলি মঞ্চায়িত করতে চাই যাতে আমি সেগুলি প্রতিশ্রুতিবদ্ধ করতে পারি। যখন আমি "গিট অ্যাড।" দৌড়েছিলাম, তখন এটি সংশোধিত ফাইল এবং যে ফাইলগুলিকে আমি মঞ্চে উপেক্ষা করতে চাই তা যুক্ত করেছে।

নীচের গিট স্ট্যাটাসের সাথে উপস্থাপন করা থাকলে আমি কীভাবে কেবলমাত্র পরিবর্তিত ফাইল যুক্ত করব এবং আনক্র্যাক করা ফাইলগুলিকে উপেক্ষা করব।

এছাড়াও, আমার ".gitignore" ফাইলগুলি কি সঠিকভাবে কাজ করছে?

$ git status
# On branch addLocation
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   someProject/path/domain/viewer/LocationDO.java
#       modified:   someProject/path/service/ld/LdService.java
#       modified:   someProject/path/service/ld/LdServiceImpl.java
#       modified:   someProject/path/web/jsf/viewer/LocationFormAction.java
#       modified:   someProject/war/WEB-INF/classes/message/viewer/viewer.properties
#       modified:   someProject/war/page/viewer/searchForm.xhtml
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .metadata/
#       someProject/build/
no changes added to commit (use "git add" and/or "git commit -a")

1
আপনি ফাইলগুলি ট্র্যাক করার পরে যদি .gitignore ফাইল যুক্ত করেন তবে .gitignore ফাইলটি ইতিমধ্যে ট্র্যাক করা ফাইলগুলিকে অগ্রাহ্য করবে না। এটি একটি সমস্যা হতে পারে।
বিকেএসপুরগাঁও

উত্তর:


904

আদর্শভাবে আপনার .gitignoreযাতে তালিকার চিহ্নবিহীন (এবং উপেক্ষা করা) ফাইলগুলি স্ট্যাটাসে প্রদর্শিত হতে বাধা দেওয়া উচিত, git addইত্যাদি ব্যবহার করে যুক্ত করা উচিত তাই আমি আপনাকে আপনার সংশোধন করতে বলব.gitignore

আপনি এটি করতে পারেন git add -uযাতে এটি সংশোধিত এবং মোছা ফাইলগুলিকে মঞ্চস্থ করে তুলবে।

আপনি git commit -aকেবল পরিবর্তিত এবং মুছে ফেলা ফাইলগুলি প্রতিশ্রুতিবদ্ধ করতেও করতে পারেন ।

মনে রাখবেন যে আপনার যদি 2.0 এর আগে গিট অফ সংস্করণ থাকে এবং ব্যবহার করা হয় git add .তবে আপনাকে ব্যবহার করতে হবে git add -u .(" " git add -A"এবং" git add ." " এর পার্থক্য দেখুন )।


74
আগ্রহের বিষয়, এটি ( add -u) কেবলমাত্র modified ফাইল যুক্ত করে না , এটিও "যুক্ত করে" deleted.. এমন কিছু যা আমি বর্তমানে প্রতিরোধ করার চেষ্টা করছি।
Zach Lysobey

6
কেবলমাত্র পরিবর্তিত ফাইল যুক্ত করতে, আমি সাধারণত আমার রেপো এবং টাইপের শীর্ষ ডিরেক্টরিতে যাই for fil in $(git diff --name-only --relative); do git add $fil; done। যদি আমি এটি প্রচুর ব্যবহার করতে পারি (আমি না) তবে আমি আমার ~/.bashrcফাইলটিতে এটির জন্য একটি নাম রাখি । এটি অবশ্যই কেবল ব্যাশে কাজ করে।
Krøllebølle

8
কোনও নির্দিষ্ট উত্তর নেই, কেবল "বেশিরভাগ মানুষের জন্য" উত্তর? এটি সঠিকভাবে করতে আমাকে আরও একটি প্রক্রিয়া ব্যবহার করতে হবে? এটি কীভাবে গিট অ্যাডে তৈরি হয় না? এটি করার মতো সাধারণ জিনিস মনে হচ্ছে like
স্যামুয়েল

2
বিশেষ দ্রষ্টব্য আপনি বিজোড় ফাইলের নামের (স্পেস, আস্টেরিক্স, কি না) আছে পদ্ধতি এসব মন্তব্য উল্লেখ ব্যর্থ হবে। যেকোন অদ্ভুত নামযুক্ত ফাইলগুলি যথাযথভাবে পালাতে, ব্যবহার করুন:IFS=$(echo -en "\n\b"); for file in $(git diff --name-only); do git add "$file"; done
অরভোলোফিল

3
git add -uএর জন্য সংক্ষিপ্ত git add --updateএবং git commit -aসংক্ষিপ্তgit commit --all
হুগো

95

এটি আমার পক্ষে কাজ করেছে:

#!/bin/bash

git add `git status | grep modified | sed 's/\(.*modified:\s*\)//'`

বা আরও ভাল:

$ git ls-files --modified | xargs git add

আপনি গ্রুপটি (()) লাগবে না যদি আপনি গ্রুপটি পুনরায় ব্যবহার করতে না চান, এবং আমার জন্য ফাইলের সামনে বামে সাদা স্থান। এটি এই ক্ষেত্রে শেষ ফলাফলকে প্রভাবিত করবে না এমন নয়, তবে এখানে উদাহরণ স্থাপনের জন্য আমি যে সেড কমান্ডটি ব্যবহার করেছি তা হল: 's /..* পরিবর্তিত: * //'। ম্যাক ওএস এক্স 10.9.5 এ যাচাই করা হয়েছে।
স্যামুয়েল

@ সামুয়েল গ্রুপিং এক্সপ্রেশন টেস্ট করার সময় দুর্দান্ত। তারপরে আমি স্কয়ার বন্ধনীগুলির মধ্যে ম্যাচটি মুদ্রণ করতে পারি যে আমি ঠিক আছি see
ব্যবহারকারীর 877329

1
@। আপনার সমাধানটি পরিবর্তিত এবং চিহ্নবিহীন ফাইল যুক্ত করে এবং এটির সমান git add -u, সুতরাং এটি প্রশ্নের উত্তর দেয় না।
নিক ভলিনকিন

7
- সংশোধিতগুলি মুছে ফেলা পাশাপাশি ঠিক পরিবর্তিত হিসাবে অন্তর্ভুক্ত বলে মনে হচ্ছে
ডার্মাট

2
গিট ডিফার্ক-ফাইল -z --diff-ফিল্টার = এম - নামমাত্র | xargs -0 গিট অ্যাড - ড্রাই-রান ভাল কাজ করে বলে মনে হচ্ছে।
DMart

10
git commit -a -m "message"

-এ: এই প্রতিশ্রুতিতে সমস্ত পরিবর্তিত / মোছা ফাইল অন্তর্ভুক্ত রয়েছে। তবে মনে রাখবেন যে আনট্র্যাকড (নতুন) ফাইলগুলি অন্তর্ভুক্ত নয়।

-ম: কমিটের বার্তা সেট করে


4

আপনি বর্তমানে যা বলছেন তা আপনি বলেননি .gitignore, তবে .gitignoreআপনার মূল ডিরেক্টরিতে নিম্নলিখিত বিষয়বস্তুগুলির সাথে কৌশলটি করা উচিত।

.metadata
build

3
আমি আমার .gitignore সব ভুল ব্যবহার করছিলাম। আমার প্রতিটি ডিরেক্টরিতে একটি খালি .gitignore ফাইল ছিল যা আমি এতে থাকা সামগ্রীর সাথে একক গিটিগনোর না করে উপেক্ষা করতে চেয়েছিলাম।
স্টিভ

1
@ স্টিভ: এটি যদি প্রতিটি হয় তবে কাজ করবে। gitognoreএকটি শুরু আছে (সবকিছু উপেক্ষা)। তবে .gitignoreশীর্ষস্থানীয় ডিরেক্টরিতে থাকা একটি এককটি সাধারণত ব্যবহার করা সহজ এবং যথেষ্ট।
মার্টিনাস

2

আমি এটি চেষ্টা করেছিলাম যাতে আমি প্রথমে ফাইলগুলির তালিকা দেখতে পারি:

git status | grep "modified:" | awk '{print "git add  " $2}' > file.sh

cat ./file.sh

এক্সিকিউট:

chmod a+x file.sh
./file.sh 

সম্পাদনা: (মন্তব্য দেখুন) এটি এক ধাপে অর্জন করা যেতে পারে:

git status | grep "modified:" | awk '{print $2}' | xargs git add && git status

1
এটি এক ধাপে অর্জন করা যেতে পারে:git status | grep modified | awk '{print $2}' | xargs git add && git status
চয়েলটন বি হিগগিনবটম

হ্যাঁ, আমারও সেই সমাধানটি দেওয়া উচিত ছিল, ধন্যবাদ, আমি পোস্টটি আপডেট করেছি।
মাইক কিউ

1

নিশ্চিত না যে এটি কোনও বৈশিষ্ট্য বা বাগ কিনা তবে এটি আমাদের জন্য কাজ করেছে:

git commit '' -m "Message"

খালি ফাইল তালিকা '' নোট করুন। গিট এটি সংশোধন করা সমস্ত ট্র্যাকযুক্ত ফাইলগুলি মঞ্চস্থ করা না হলেও, এবং অনিবন্ধিত ফাইলগুলিকে উপেক্ষা করার জন্য এটি ব্যাখ্যা করে।


--Amend ব্যবহার করার সময় এটি অবশ্যই কাজ করে না
ঘোস্টটিকেট

0

সংশোধিত এবং মুছে ফেলা ফাইল পর্যায় করতে

git add -u

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