سؤال

إذا كنت أعمل في فروع متعددة على ميزة واحدة، فأنا استخدم git pull branch1 branch2 branch3 لسحب جميع التغييرات في فرع Master الخاص بي. ومع ذلك، يتم نسخ جميع سجلات الالتزام لكل فرع أيضا. كيف يمكنني تسوية تسجيل الدخول إلى رسالة واحدة؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام التفاعلية repase. و "الاسكواش" ارتكب - انظر أيضا جيت تعليمي جاهز على الاسكواش عبر Rebase. وبعد آسف لمجرد تفريغ رابط عليك ولكن هذا تعليمي شامل جدا. أوه، وهذا سوف يسحق أيضا دمج الخاص بك على ما يرام.

نصائح أخرى

"دمج جيت - -Squash" (بعد "جلب جيت"؛ "git pull" هو مجرد جمل + دمج، pehaps كما يسمح أيضا بخيار - squash) ربما يكون ما تريد.

من عند git-merge (1):

--قرع

إنتاج شجرة العمل ودولة الفهرس كما لو حدث دمج حقيقي، ولكن لا تصنع في الواقع ارتكاب أو تحريك الرأس، ولا سجل $GIT_DIR/MERGE_HEAD للتسبب في أمر ارتكاب GIT التالي لإنشاء ارتكاب دمج. هذا يسمح لك بإنشاء ارتكاب واحد علاوة على الجزء العلوي من الفرع الحالي هو نفسه هو دمج فرع آخر (أو أكثر في حالة الأخطبوط).

كما علق براين أبيض المشكلة مع git merge --squash هو أنه لا يوفر لك رابط مرئي، وبالتالي لا تعيد التتبع إلى الفرع (أو التغييرات الفردية) التي قمت بالاندماج فيها.

بوضوح (عند ينظر إليها على أنها رسم بياني git log --graph)، وهو فرع مهم تم دمجه في ظهوره لا يختلف عن فرع تجريبي قد افسدت معه وتجاهل بسعادة. كلاهما معلق فقط هناك غير متصل بأي شيء. أنا شخصيا أريد أن أعرف أنه تم دمج فرع معين فيه حتى أعرف أن العمل قد تم.

الحل الذي يعمل بالنسبة لي هو استخدام دمج مع الخيار الذي لا يسرد.

git merge --no-ff somebranch -m "my commit message"

هذه القوى جيت لإنشاء ارتكاب واحد مع جميع التغييرات الفرعية المضمنة، يمكنك ضبط رسالة الالتزام بنفسك (إذا كنت تريد) ولكن الأهم من ذلك، فإنه يربط الالتزام الجديد بالعودة إلى الفرع الذي اندمج منه. هذا يظهر بوضوح أن هذا العمل في هذا الفرع مكتمل ولكن أيضا يسمح لك أيضا بتتبع المراجعة للاطلاع على تفاصيل الفرد من الفرع المدمج.

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

ملاحظة: اضطررت إلى رسم واحدة من الموصلات يدويا كما كان مثل هذا اللون الأزرق الداكن كان بالكاد مرئيا.

git log output

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