গিট সহ আমার একটি প্রকল্প রয়েছে এবং আমি কেবল একটি নির্দিষ্ট ডিরেক্টরি ক্লোন করতে বা টানতে চাই যেমন মাইপ্রজেক্ট / জাভাস্ক্রিপ্ট যেমন সাবভার্সন করে।
কিছু পরিবর্তন করুন, প্রতিশ্রুতিবদ্ধ এবং আবার পিছনে ধাক্কা।
এটা সম্ভব?
গিট সহ আমার একটি প্রকল্প রয়েছে এবং আমি কেবল একটি নির্দিষ্ট ডিরেক্টরি ক্লোন করতে বা টানতে চাই যেমন মাইপ্রজেক্ট / জাভাস্ক্রিপ্ট যেমন সাবভার্সন করে।
কিছু পরিবর্তন করুন, প্রতিশ্রুতিবদ্ধ এবং আবার পিছনে ধাক্কা।
এটা সম্ভব?
উত্তর:
git fetch
git checkout HEAD path/to/your/dir/or/file
ডিরেক্টরিতে " path/...
" ইন (3) যেখানে আপনার " .../file
" রপোরো মূলের নীচে ডিরেক্টরিতে শুরু হয়
লক্ষ্য করুন যে "হেড" এর পরিবর্তে একটি নির্দিষ্ট কমিটের হ্যাশ কোড ব্যবহার করা যেতে পারে এবং তারপরে আপনি সেই প্রতিশ্রুতি সম্পর্কিত নির্দিষ্ট সংশোধন (ফাইল) বা সংশোধন (দির) পাবেন।
--
প্রয়োজন নেই। এটি বিটকে তারপরে পাথ হিসাবে ব্যাখ্যা করার জন্য বাধ্য করে। সুতরাং, হ্যাঁ, আপনি যে ফাইলটি --help
চেকআউট করতে চান সেই ফাইলটি যদি এই হাইফেনগুলির সাথে উপসর্গ করা প্রয়োজন হয়:git checkout HEAD -- --help
একটি খালি ডিরেক্টরিতে:
git init
git remote add [REMOTE_NAME] [GIT_URL]
git fetch REMOTE_NAME
git checkout REMOTE_NAME/BRANCH -- path/to/directory
fetch
বা checkout
কমান্ড নেই, remote add
পুরো মাস্টার শাখাটি পেতে আমরা কেবল কমান্ডের পরে পুল অনুরোধ করতে পারি।
অনেক উত্তর খোঁজার পরেও, খুঁজে না পাওয়া, হাল ছেড়ে দেওয়া, আবার চেষ্টা করার পরে অবশেষে আমি এর অন্য একটি থ্রেডে এর সমাধান পেয়েছি:
একটি ফোল্ডার ছাড়া সমস্ত কীভাবে গিট-টান করতে হবে
কী আছে তা অনুলিপি করতে:
git init
git remote add -f origin <url>
git config core.sparsecheckout true
echo <dir1>/ >> .git/info/sparse-checkout
echo <dir2>/ >> .git/info/sparse-checkout
echo <dir3>/ >> .git/info/sparse-checkout
git pull origin master
ওপি যা চায় তা করতে (কেবল একটি দিরের উপর কাজ করুন), .git/info/sparse-checkout
উপরের পদক্ষেপগুলি করার সময় কেবল সেই একটি দিরের সাথে যুক্ত করুন ।
@Cforbish কে অনেক ধন্যবাদ!
master
। কেবলমাত্র আপনি git branch --set-upstream-to=origin/<branch>
সঠিকভাবে
এটা সম্ভব না. আপনার সমস্ত সংগ্রহস্থল বা কিছুই টানতে হবে।
সম্ভবত এই আদেশটি সহায়ক হতে পারে:
git archive --remote=MyRemoteGitRepo --format=tar BranchName_or_commit path/to/your/dir/or/file > files.tar
"এট ভয়েলি"
আপনি যদি কোনও ডিরেক্টরিতে প্রবেশ না করেই সর্বশেষ পরিবর্তনগুলি পেতে চান তবে আপনি এটি করতে পারেন:
$ git -C <Path to directory> pull
git clone --filter
গিট 2.19 থেকে
এই বিকল্পটি প্রকৃতপক্ষে সার্ভার থেকে অপ্রয়োজনীয় অবজেক্টগুলি আনতে চলে যাবে।
আমি বর্তমান সমর্থন স্থিতি বিশদটি বিশদে একটি উত্তর লিখেছি: আমি কীভাবে কেবল গিট সংগ্রহস্থলের একটি উপ-ডিরেক্টরিকে ক্লোন করব?
এটি খুব সম্ভবত যে git clone
অঞ্চলে যা কিছু বাস্তবায়িত হবে তারও git pull
এনালগ থাকবে।
এই কাজগুলি চেষ্টা করে পরীক্ষিত!
mkdir <directory name> ; //Same directory name as the one you want to pull
cd <directory name>;
git remote add origin <GIT_URL>;
git checkout -b '<branch name>';
git config core.sparsecheckout true;
echo <directory name>/ >> .git/info/sparse-checkout;
git pull origin <pull branch name>
আশা করি এটি সহায়ক ছিল!
কখনও কখনও, আপনি কেবল বিচ্ছিন্নতার মধ্য দিয়ে যাওয়ার দৃ going়বিধি ছাড়াই ফাইলগুলির পূর্ববর্তী অনুলিপিগুলি একবার দেখতে চান।
এই জাতীয় ক্ষেত্রে, কোনও সংগ্রহস্থলটির ক্লোন তৈরি করা এবং আপনার আগ্রহী যে নির্দিষ্ট প্রতিশ্রুতিটি পরীক্ষা করতে চান এবং যে ক্লোন করা সংগ্রহস্থলের সাব-ডিরেক্টরিতে একবার দেখে তা পরীক্ষা করা ঠিক তত সহজ। সমস্ত কিছু স্থানীয় হওয়ার কারণে আপনি যখন কাজটি শেষ করেন আপনি কেবল এই ক্লোনটি মুছতে পারেন।
তাত্ত্বিক ফাইলের পাথ এবং আমার মতো উদাহরণগুলির সাথে লড়াইয়ের জন্য, এখানে একটি বাস্তব বিশ্বের উদাহরণ: মাইক্রোসফ্ট গিট হাবের উপর তাদের ডক্স এবং উদাহরণ সরবরাহ করে, দুর্ভাগ্যক্রমে তারা এই সমস্ত সংগ্রহস্থলগুলিতে বিশাল আকারের বিষয়ের জন্য তাদের উদাহরণ ফাইলগুলি সংগ্রহ করে:
https://github.com/microsoftarchive/msdn-code-gallery-community-s-z
আমি কেবল মাইক্রোসফ্ট ডায়নামিক্স জেএস ফাইলগুলিতে আগ্রহী ছিলাম
msdn-code-gallery-community-s-z/Sdk.Soap.js/
সুতরাং আমি নিম্নলিখিতটি করেছিলাম
একটা তৈরি কর
msdn-code-gallery-community-s-zSdkSoapjs\.git\info\sparse-checkout
ডিস্কে আমার সংগ্রহস্থল ফোল্ডারে ফাইল দিন
git sparse-checkout init
সেই ডিরেক্টরিতে উইন্ডোতে সেন্টিমিডি ব্যবহার করে
ফাইলের বিষয়বস্তু
msdn-code-gallery-community-s-zSdkSoapjs\.git\info\sparse-checkout
হয়
Sdk.Soap.js/*
অবশেষে একটি
git pull origin master