سؤال

هل هناك طريقة بسيطة للتصدير / الأرشيف فقط الملفات التي تم تغييرها من الالتزام أو سلسلة معينة من ارتكاب ارتكاب الجيت؟ لا أستطيع أن أجد تعليمات واضحة للقيام بذلك (وأنا جديد على Linux / GIT).

أنا أستخدم msysgit، وبالنسبة للجزء الأكبر أنا بخير مع نشر مستودعات كاملة ولكن في كثير من الحالات هو أكثر كفاءة للغاية لنشر إصلاحات صغيرة بعض الملفات في وقت واحد.

دفع / سحب / تثبيت git على الخوادم البعيدة ليس خيارا حقا حيث يختلف مستوى وصول بلدي بين المشاريع والعملاء.

هل هناك طريقة مباشرة إلى (تخمين تقريبي):

pipe 'diff --names-only' to 'git-archive'? 
هل كانت مفيدة؟

المحلول

لا أعتقد أن هناك أي حاجة لإشراك أرشيف الجيت. استخدام --name-only, ، يمكنك تزيين الملفات:

tar czf new-files.tar.gz `git diff --name-only [diff options]`

منذ أن كنت جديدا في لينكس، قد يحتاج ذلك إلى بعض التفسير:

يتسبب Backticks في سطر الأوامر في تنفيذ القشرة أولا في تنفيذ الأمر داخل Backticks، ثم استبدل إخراج هذا الأمر في سطر الأوامر tar. وبعد لذلك git diff يتم تشغيل أولا، مما يولد قائمة بأسماء الملفات، واحد على كل سطر. يتم اندلاع الخطوط الجديدة إلى المسافات ويتم وضع قائمة الملفات بأكملها على tar سطر الأوامر. ثم tar يتم تشغيل لإنشاء الأرشيف المحدد. لاحظ أن هذا يمكن أن يولد خطوط أمرية طويلة جدا، لذلك إذا كان لديك عدد كبير جدا من الملفات التي تم تغييرها، فقد تحتاج إلى تقنية مختلفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top