Git rebase (دمج Squash) فرع الميزة الخاص بي إلى فرع آخر

StackOverflow https://stackoverflow.com//questions/9622131

  •  09-12-2019
  •  | 
  •  

سؤال

أنا أبحث عن أمر git لمساعدتي في فروع الميزات الخاصة بي عندما تكون جاهزة للانتقال إلى Master.سيؤدي أمر git هذا إلى سحق جميع التغييرات التي أجريتها على الفرع الخاص بي في التزام واحد أعلى الفرع الرئيسي.أفعل هذا اليوم مع:

git rebase origin/master
git rebase -i HEAD~4

حيث 4 هو عدد مرات الالتزام بالاسكواش.ومع ذلك، هذا يتطلب مني أن أعرف عدد الالتزامات التي لدي.أفعل هذا اليوم عن طريق تشغيل:

git log HEAD...origin/master

ومن ثم حساب الالتزامات.

أشعر كما لو أنه يجب أن تكون هناك طريقة أفضل للقيام بذلك.أم أن هذه هي الطريقة التي يفعلها الآخرون أيضًا؟

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

المحلول

كل ما عليك القيام به هو:

git checkout feature_branch
git rebase master
git checkout master
git merge --squash feature_branch

كما مستندات ل git merge --squash يقول:

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

بعد ذلك، يمكنك git commit تغييراتك التي تم تنظيمها بالفعل.

نصائح أخرى

هنا هو ما أقوم به، تجمع من الكثير من الخبرة في العمل في فرق أكبر: giveacodicetagpre.

آمل أن يساعد هذا!

أعتقد أنك تبحث عنه git merge --squash.يجب أن يقوم بإحضار الالتزامات من فرع الميزات الخاص بك إلى الملف الرئيسي وسحقها، حتى تتمكن من إنشاء التزام واحد.

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