it-swarm.asia

نقل العمل الحالي غير الملتزم به إلى فرع جديد في Git

لقد بدأت بعض العمل على ميزة جديدة وبعد الترميز لبعض الشيء ، قررت أن تكون هذه الميزة في فرعها الخاص.

كيف يمكنني نقل التغييرات الحالية غير الملتزم بها إلى فرع جديد وإعادة تعيين حسابي الحالي؟

أريد إعادة تعيين فرعي الحالي مع الحفاظ على العمل الحالي في الميزة الجديدة.

2793
Dane O'Connor

استخدم ما يلي:

git checkout -b <new-branch>

سيؤدي ذلك إلى ترك فرعك الحالي كما هو وإنشاء فرع جديد والخروج منه والاحتفاظ بجميع التغييرات. يمكنك بعد ذلك الالتزام باستخدام:

git add <files>

والتزم بفرعك الجديد مع:

git commit -m "<Brief description of this commit>"

لا تنتمي التغييرات في دليل العمل والتغييرات التي يتم إجراؤها في الفهرس إلى أي فرع بعد. هذا يتغير حيث ستنتهي تلك التغييرات.

أنت لا إعادة تعيين الفرع الأصلي الخاص بك ، يبقى كما هو. الالتزام الأخير في <old-branch> سيظل كما هو. لذلك أنت checkout -b ثم تلتزم.

3265
knittl

بدلا من ذلك:

  1. حفظ التغييرات الحالية إلى stash مؤقت:

    $ git stash

  2. أنشئ فرعًا جديدًا استنادًا إلى هذا الخبث ، وانتقل إلى الفرع الجديد:

    $ git stash branch <new-branch> [email protected]{0}

نصيحة: استخدم مفتاح الجدولة لتقليل كتابة اسم الخبث.

287
Robin Qiu

إذا كنت تقوم بالتعهدات على الفرع الرئيسي الخاص بك أثناء ترميزك ، لكنك تريد الآن نقل هذه التعهدات إلى فرع مختلف:

  1. انسخ السجل الحالي إلى فرع جديد ، مع إحداث أي تغييرات غير ملتزم بها أيضًا:

    git checkout -b <new-feature-branch>
    
  2. الآن فرض فرع "فوضوي" الأصلي لاستعادة: (دون التبديل إليه)

    git branch -f <previous-branch> <earlier-commit-id>
    

    فمثلا:

    git branch -f master Origin/master
    

    أو إذا كنت قد ارتكبت 4 تعهدات:

    git branch -f master HEAD~4
    

تحذير:يبدو أن git branch -f master Origin/master سوف إعادة تعيين معلومات التتبع لهذا الفرع. لذلك إذا قمت بتكوين فرع master الخاص بك للدفع إلى مكان آخر بخلاف Origin/master ، فسيتم فقد هذا التكوين.

البديل هو استخدام هذه التقنية إعادة تعيين . لكن هذه التعليمات ستتجاهل أي تغييرات غير ملتزم بها لديك. إذا كنت ترغب في الاحتفاظ بها ، فعليك تخزينها أولاً وإخفائها في النهاية.

40
joeytwiddle

إذا ارتكبت ذلك ، فيمكنك أيضًا اختيار معرّف الالتزام الفردي. أفعل ذلك غالبًا عندما أبدأ العمل في برنامج الماجستير ، ثم أرغب في إنشاء فرع محلي قبل الدفع إلى أصل /.

git cherry-pick <commitID>

هناك الكثير الذي يمكنك القيام به مع اختيار الكرز ، كما هو موضح هنا ، ولكن هذا قد يكون حالة استخدام لك.

16
password

السيناريو الشائع هو ما يلي: لقد نسيت إنشاء فرع جديد للميزة الجديدة ، وكنت أقوم بكل العمل في فرع الميزة القديم. لقد ارتكبت جميع الأعمال "القديمة" للفرع الرئيسي ، وأريد أن ينمو فرعي الجديد من "الرئيسي". لم أقدم التزامًا واحدًا بعملي الجديد. هنا هو هيكل الفرع: "master" -> "Old_feature"

git stash 
git checkout master
git checkout -b "New_branch"
git stash apply
11
Alex Burov