সংগ্রহস্থলের বাইরে একটি অবস্থান চেকআউট 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.