আমি কীভাবে কেবল কিছু ফাইল কমিট করব?


259

আমার দুটি প্রকল্প আছে। একটি হ'ল "অফিসিয়াল" প্রকল্প এবং দ্বিতীয়টি হল হালকা পরিবর্তন (কিছু ফাইল যুক্ত)) আমি নতুন শাখা তৈরি করেছি এবং আমি তাদের কাছে নতুন ফাইলগুলি রেখেছি। তবে উন্নয়নের সময় উভয় শাখায় সাধারণ কিছু ফাইল পরিবর্তিত হয়।

আমি কেবল এই ফাইলগুলি কীভাবে প্রতিশ্রুতিবদ্ধ করব?


এই দুটি প্রকল্পগুলি কি একই গিট সংগ্রহস্থলের সাথে সংযুক্ত রয়েছে?
ওলেকসান্ডার

হ্যাঁ, এটি একই সংগ্রহস্থল, তবে আমি আমার শাখাটি সার্ভারে রাখতে চাই না
নিপস

তাহলে আপনি কেন আপনার নতুন শাখাকে মাস্টার (বা অন্যান্য অফিসিয়াল শাখায়) মার্জ করবেন না
ওলেকসান্ডার

1
এসব প্রশ্নের উত্তর আপনি সাহায্য হইবে: stackoverflow.com/questions/7161860/... stackoverflow.com/questions/7175869/...
eckes

উত্তর:


261

আমি মনে করি আপনি একটি শাখায় পরিবর্তনগুলি সংঘটিত করতে চান এবং সেই পরিবর্তনগুলি অন্য শাখায় দৃশ্যমান করতে চান। শাখা পরিবর্তন করার সময় গিটে আপনার শিরোনামের শীর্ষে কোনও পরিবর্তন করা উচিত নয়।

আপনি কেবল পরিবর্তিত ফাইলগুলি দ্বারা প্রতিশ্রুতিবদ্ধ:

git commit [some files]

অথবা আপনি যদি নিশ্চিত হন যে আপনার কাছে একটি পরিষ্কার মঞ্চ রয়েছে

git add [some files]       # add [some files] to staging area
git add [some more files]  # add [some more files] to staging area
git commit                 # commit [some files] and [some more files]

আপনি যদি উভয় শাখায় সেই প্রতিশ্রুতিটি উপলব্ধ করতে চান তবে

git stash                     # remove all changes from HEAD and save them somewhere else
git checkout <other-project>  # change branches
git cherry-pick <commit-id>   # pick a commit from ANY branch and apply it to the current
git checkout <first-project>  # change to the other branch
git stash pop                 # restore all changes again

22
আক্ষরিকভাবে কেবল সেই ফাইলগুলিকে প্রতিশ্রুতিবদ্ধ করতে, অন্যান্য পরিবর্তনগুলি মঞ্চস্থ করা হলেও, দ্বিতীয় উদাহরণটি ( git commit [some files], যা --onlyস্যুইচটি বোঝায় ) ব্যবহার করা উচিত। প্রথম উদাহরণটি ( git add [some files]এরপরে git commit) এছাড়াও মঞ্চস্থ হওয়া অন্য যে কোনও পরিবর্তন সম্পাদন করবে।
লেসিকোস

4
গিট কমিট [কিছু ফাইল] এর উদাহরণ সরবরাহ করতে আমি সহায়ক হব। আপনার কীভাবে [কিছু ফাইল], কমা, সাদা স্থান প্রতিস্থাপন করা উচিত?
ক্লাদিউ ক্রিঙ্গা

2
@ ক্লাউডিউ সাধারণত শেল স্টাফ হয় স্থান সীমাবদ্ধ। এবং যদি আপনি যথেষ্ট গভীর ডুব দেন তবে আপনি যে কোনও কিছুতে এটি পরিবর্তন করতে পারেন
অ্যালেক্স

আপনি যদি কয়েকটি উদাহরণ যুক্ত করতে পারেন তবে এই উত্তরটি দুর্দান্ত থাকবে।
ইয়ামুর

154

আপনি যে ফাইলগুলি প্রতিশ্রুতিবদ্ধ করতে চান তার একটি তালিকা পান

$ git status

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:   file1
modified:   file2
modified:   file3
modified:   file4

মঞ্চে ফাইল যুক্ত করুন

$ git add file1 file2

আপনি কি প্রতিশ্রুতি দিচ্ছেন তা পরীক্ষা করে দেখুন

$ git status

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   file1
    modified:   file2

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:   file3
    modified:   file4

প্রতিশ্রুতিবদ্ধ বার্তা দিয়ে ফাইলগুলি কমিট করুন

$ git commit -m "Fixed files 1 and 2"

যদি আপনি দুর্ঘটনাক্রমে ভুল ফাইলগুলি প্রতিশ্রুতিবদ্ধ হন

$ git reset --soft HEAD~1

আপনি যদি ফাইলগুলি আনস্টেজ করতে এবং আবার শুরু করতে চান

$ git reset

Unstaged changes after reset:
M file1
M file2
M file3
M file4


30

এর মধ্যে কিছু "অসম্পূর্ণ" বলে মনে হচ্ছে

লোকদের গোষ্ঠীগুলি তাদের উদ্ধৃতি ইত্যাদি ব্যবহার করা উচিত কিনা তা জানতে যাচ্ছে না ..

পাশাপাশি অবস্থানের পথগুলি দেখায় 1 নির্দিষ্ট ফাইল যুক্ত করুন

git add JobManager/Controllers/APIs/ProfileApiController.cs

প্রতিশ্রুতিবদ্ধ (মনে রাখবেন, প্রতিশ্রুতি কেবল স্থানীয়, এটি অন্য কোনও সিস্টেমকে প্রভাবিত করে না)

git commit -m "your message"  

রিমোট রেপোতে চাপ দিন

git push  (this is after the commit and this attempts to Merge INTO the remote location you have instructed it to merge into)

অন্যান্য উত্তর (গুলি) স্ট্যাশ ইত্যাদি দেখায় যা আপনি কখনও কখনও করতে চাইবেন


11

আপনি যদি ইতিমধ্যে ফাইল মঞ্চস্থ করেন তবে কেবল সেগুলি স্টেস্টেজ করুন:

git reset HEAD [file-name-A.ext] [file-name-B.ext]

তারপরে এগুলিকে কিছুটা পিছনে যুক্ত করুন।


11

মনে করুন আপনি একাধিক ফাইলে পরিবর্তন করেছেন, যেমন:

  • file1
  • File2
  • File3
  • File4
  • File5

তবে আপনি কেবল ফাইল 1 এবং ফাইল 3 এর পরিবর্তন করতে চান।

এটি করার জন্য দুটি উপায় রয়েছে:

1. কেবলমাত্র এই দুটি ফাইল ব্যবহার করে:

git add file1 file2

তারপর, প্রতিশ্রুতিবদ্ধ

git commit -m "your message"

তারপর ধাক্কা,

git push

২.ডাইরেক্ট কমিট

git commit file1 file3 -m "my message"

তারপর ধাক্কা,

git push

আসলে আমরা যদি নিয়মিতভাবে ফাইলগুলি সংশোধন করি এবং সেগুলি মঞ্চায়িত করি -> বড় প্রকল্পগুলি, সাধারণত লাইভ প্রকল্পগুলি তবে প্রথম পদ্ধতিটি কার্যকর
তবে আমরা যদি ফাইলগুলি সংশোধন করে সেগুলি মঞ্চায়িত না করে থাকি তবে আমরা সরাসরি কমিট -> ছোট প্রকল্পগুলি করতে পারি


দ্বিতীয় উদাহরণ হিসাবে যেমন ফাইলের নাম উল্লেখ না করা হয়, গিট এই আর্গুমেন্টগুলির জন্য কমান্ড পতাকাটি ধরে নেয় --only। তারপরে, এটি রেফারেন্সের git commit --only file1 --only file3 -m "my message"মতো শর্টকাট বা ব্যবহারের মতো একই কমান্ড হবে git commit -o file1 -o file3 -m "my message": git-scm.com/docs/git-commit
ব্যবহারকারী

0

আপনার যদি খুব বেশি কোড পরিবর্তন না করে থাকে তবে এটি একটি সহজ পদ্ধতির:

1. git stash
2. git stash apply
3. remove the files/code you don't want to commit
4. commit the remaining files/code you do want

তারপরে আপনি যদি পৃথক প্রতিশ্রুতি বা অন্য কোনও শাখায় আপনি মুছে ফেলা কোডটি (বিটগুলি করেননি যা করতে চান) চান, তবে এই শাখায় থাকাকালীন করুন:

5. git stash apply
6. git stash

৫ ম পদক্ষেপের সাথে আপনি ইতিমধ্যে স্ট্যাশ প্রয়োগ করেছেন এবং কোডটি আপনি প্রতিশ্রুতি দিয়েছিলেন যে আপনি চতুর্থ পদক্ষেপে চেয়েছিলেন, সদ্য প্রয়োগ হওয়া স্ট্যাশ-এ পৃথক এবং চিহ্নবিহীন কোডটি আপনি পদক্ষেপ 4 এ প্রতিশ্রুতি দেওয়ার আগে আপনি পদক্ষেপ 3 এ সরিয়েছেন কেবল কোড।

যেমন step ধাপটি আপনি যে কোডটি প্রতিশ্রুতিবদ্ধ করতে চাননি [সেগুলি করতে চান] তা স্ট্যাশ, কারণ আপনি সম্ভবত এই পরিবর্তনগুলি সঠিকভাবে হারাতে চান না? সুতরাং step ধাপে নতুন স্ট্যাশ এখন গিট স্ট্যাশ করে সঠিক শাখায় প্রয়োগ করে এবং প্রতিশ্রুতিবদ্ধ হয়ে এই বা অন্য কোনও শাখায় প্রতিশ্রুতিবদ্ধ হতে পারে।

স্পষ্টতই এটি অনুমান করে আপনি এক ধাপে পদক্ষেপগুলি করেন, আপনি যদি এই পদক্ষেপগুলিতে অন্য কোনও বিন্দুতে স্ট্যাশ করেন তবে আপনাকে উপরের প্রতিটি ধাপের জন্য স্ট্যাশ রেফটি নোট করতে হবে (কেবলমাত্র মৌলিক স্ট্যাশের চেয়ে সাম্প্রতিক স্ট্যাশ প্রয়োগ করুন)।

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