সংগ্রহস্থলের বাইরে একটি অবস্থান চেকআউট Git ফাইল


18

রিপোজিটরির বাইরে কোনও স্থানে "চেকআউট" করা কি সম্ভব? আমি কি মানে ".git" ডিরেক্টরি ছাড়া একটি শাখা একটি ক্লোন।

উদাহরণস্বরূপ: একটি ওয়েবসাইট পরিচালনা করার জন্য গিট ব্যবহার করুন। আপনি কিছু ফাইল সম্পাদনা করুন, WebDAV এর মাধ্যমে কোনও ওয়েব সার্ভারে ফাইলগুলি অনুলিপি করুন এবং অনুলিপি করুন। WebDAV- পাথটি রিপোজিটরির বাইরে অবস্থান হবে, যার মধ্যে ".git" থাকা উচিত নয়।

এই সমস্যাটির জন্য সমস্যাটি হতে পারে না, কিন্তু এটি কি সম্ভব?

উত্তর:


18

হ্যাঁ, এই অবশ্যই সম্ভব।

চলুন বলেছি আমার নামে একটি বেয়ার রিপোজিটরি আছে /srv/production.git গন্তব্য সিস্টেম / সার্ভারে।

গন্তব্য সিস্টেমে আমি কমান্ডটি ব্যবহার করতে পারি cd /srv/production.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f

যদি আমি একটি অ-ন্যূনতম সংগ্রহস্থলের মধ্যে থাকি তবে কমান্ডটি সামান্য ভিন্ন। চলুন আমি একটি অ-বেয়ার রিসোজিটরি আছে বলে /srv/testing। চেকআউট যে আমি ব্যবহার করতে হবে cd /srv/testing/.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f

আসলে আমার সিস্টেমে আমি এমনকি একটি পোস্ট-কমিট হুক এই স্বয়ংক্রিয় production.git সংগ্রহস্থল। তাই আপনি ধাক্কা যখন production.git সর্বশেষ সংস্করণ স্বয়ংক্রিয়ভাবে ওয়েব রুট চেক আউট হয়।

#!/bin/sh
#
# An example hook script that is called after a successful
# commit is made.
#
# To enable this hook, rename this file to "post-commit".

GIT_WORK_TREE=/srv/production-www/ git checkout -f
# ... misc other commands to verify permissions are set correctly.

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


একাধিক স্থানে অনুসন্ধান .. শুধুমাত্র কাজ সমাধান, পরিষ্কার!
— karthikeayan

5

আপনি শুধু ফাইল চান, আপনি ব্যবহার করতে পারেন git archive। সাধারণত এটি টারববল বা জিপের মতো একটি সংরক্ষণাগারে লিখে, তবে আপনি এটিও পাইপ করতে পারেন:

git archive master | tar -x -C /some/path

এখানে, master অবশ্যই শাখা আপনি সংরক্ষণ করতে চান, এবং /some/path শুধু ফাইল থাকবে - না .git অথবা .gitignore।


অথবা আপনি ব্যবহার করতে পারেন git checkout-index যা ফাইলগুলির একটি "চেকআউট" অনুরূপ ঘনিষ্ঠভাবে:

git checkout-index -f -a --prefix=/some/path/

এখানে -a বিকল্প বলছে git সব ফাইল চেক আউট। উপসর্গ আউটপুট প্রিমেড করা হবে। কেউ লিখেছে এই চারপাশে একটি মোড়ানো একটি দিতে git export।


2
আমি মনে করি আপনি এটি প্রয়োজন আরো কঠিন করা হয়। শুধু রান GIT_WORK_TREE=/destinationpath git checkout -f যখন আপনার বর্তমান ডিরেক্টরি একটি ন্যূনতম সংগ্রহস্থলের শীর্ষে, অথবা .git সাবডিরেক্টরির উপরে থাকে। আপনি একটি চেকআউট / destinationpath পেতে হবে
— Zoredache

ঠিক আছে, আমি যেকোনোভাবেই সেই বিকল্পটিকে +1 করেছি, আপনার কাছে +1।
— slhck

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