it-swarm.asia

تحرير رسالة التزام في SourceTree Windows (تم الدفع بالفعل إلى جهاز التحكم عن بُعد)

كيف يمكنني تحرير رسالة التزام غير صحيحة في SourceTree دون لمس سطر الأوامر؟

تفاصيل اضافية:

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

النتيجة:

  • نظرًا لأنه يبدو مستحيلًا في الوقت الحالي وفقًا لتعليقاتك وردودك ، سأقوم بإنشاء مستودع جديد وأبدأ من جديد. شكرا لكم جميعا لمساعدتكم!
178
Community

فيما يلي خطوات تحرير رسالة الالتزام الخاصة بالتزام سابق ( وهي ليست أحدث التزام ) باستخدام SourceTree for Windows الإصدار 1.5.2.0 :

الخطوة 1

حدد الالتزام مباشرة قبل الالتزام الذي تريد تحريره. على سبيل المثال ، إذا كنت ترغب في تعديل الالتزام بالرسالة "FOOBAR!" ثم أحتاج إلى تحديد الالتزام الذي يأتي قبله مباشرةً:

Selecting commit before the one that I want to edit.

الخطوة 2

انقر بزر الماوس الأيمن على الالتزام المحدد وانقر فوق Rebase children...interactively:

Selecting "Rebase children interactively".

الخطوه 3

حدد الالتزام الذي تريد تحريره ، ثم انقر فوق Edit Message في الأسفل. في هذه الحالة ، أقوم بتحديد الالتزام مع الرسالة "FOOBAR!":

Select the commit that you want to edit.

الخطوة 4

قم بتحرير رسالة الالتزام ، ثم انقر فوق OK. في مثالي ، أضفت "SHAZBOT! SKADOOSH!"

Edit the commit message

الخطوة 5

عندما تعود إلى نافذة rebase التفاعلية ، انقر فوق OK لإنهاء rebase:

Click OK to finish.

الخطوة 6

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

انقر فوق Terminal من واجهة المستخدم الرسومية لفتح محطة.

Click Terminal

الخطوة 7

من المحطة الطرفية ، اضغط مع الأمر التالي ،

git Push Origin <branch> -f

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

هذا هو! انت انتهيت!

369
user456814

على الإصدار 1.9.6.1. لالتزام UnPushed.

  1. انقر على وصف ارتكبت سابقا
  2. انقر فوق أيقونة الالتزام
  3. أدخل رسالة التزام جديدة ، واختر " تعديل الالتزام الأخير " من القائمة المنسدلة خيارات الالتزام.
  4. ارتكاب رسالتك.
28
Franc

تحديث

ملاحظة: تمت كتابة هذه الإجابة في الأصل فيما يتعلق بالإصدارات القديمة من SourceTree لنظام التشغيل Windows ، وهي الآن قديمة.

انظر إجابتي الجديدة للحصول على الإصدار الحالي من SourceTree لنظام التشغيل Windows ، 1.5.2.0 . سأترك هذه الإجابة وراءها لأغراض تاريخية.

الجواب الأصلي

نظرًا لأنني على نظام Windows ، لا أملك أداة لسطر الأوامر ولا أعرف كيفية استخدام واحدة :( هل هي الطريقة الوحيدة للحصول على هذا التصنيف؟ لا تغطي واجهة المستخدم الرسومية جميع وظائف git؟ - ملصق أصلي

فيما يتعلق بـ Git GUIs ،لا ، فهي لا تغطي جميع وظائف Git.حتى أنهم لا يقتربون. أقترح عليك التحقق من إحدى الإجابات في كيف يمكنني تحرير رسالة التزام غير صحيحة في Git؟ ، بوابة مرنة بما فيه الكفاية أن هناك حلول متعددة ... من سطر الأوامر.

قد يأتي SourceTree بالفعل مع برنامج msysgit bash Shell بالفعل ، أو قد يكون قادراً على استخدام أمر Windows القياسي. في كلتا الحالتين ، يمكنك فتحه نموذج SourceTree بالنقر فوق الزر المحطة الطرفية:

enter image description here

يمكنك تعيين أي طرف يستخدم Source Source (bash أو Windows) هنا:

enter image description here

طريقة واحدة لحل المشكلة في SourceTree

أن يقال ، وهنا طريقة واحدة يمكنك القيام بذلك في SourceTree. بما أنك ذكرت في التعليقات أنك لا تمانع في "العودة إلى الالتزام الخاطئ" (التي أفترض أنك تعني إعادة تعيينها ، وهي عملية مختلفة في Git) ، فإليك الخطوات التالية:

  1. قم بإعادة تعيين ثابت في SourceTree إلى الالتزام السيئ عن طريق النقر بزر الماوس الأيمن فوقه وتحديد Reset current branch to this commit ، وتحديد خيار إعادة التعيين الثابت من القائمة المنسدلة. enter image description here
  2. انقر فوق زر الالتزام ، ثم
  3. انقر فوق مربع الاختيار الموجود في الأسفل والذي يشير إلى "تعديل الالتزام الأخير". enter image description here
  4. قم بإجراء التغييرات التي تريدها على الرسالة ، ثم انقر فوق "التزام" مرة أخرى. فويلا!

بخصوص هذا التعليق :

إذا لم يكن ذلك ممكنًا لأنه تم دفعه بالفعل إلى Bitbucket ، فلن أمانع في إنشاء مستودع جديد والبدء من جديد.

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

كن على دراية بذلك ، لأنك قمت بإعادة ضبط صارم للالتزام الخاطئ ، ثم دفعك يؤدي إلى خسارة كل العمل الذي يأتي بعده سابقًا. إذا كان هذا جيدًا ، فقد تحتاج إلى استخدام الأمر التالي في سطر الأوامر للقيام بالقوة Push ، لأنني لم أجد خيارًا للقيام بذلك في SourceTree:

git Push remote-repo head -f

يفترض هذا أيضًا أن BitBucket سيسمح لك بإجبار Push على إعادة الشراء.

يجب أن تتعلم حقًا كيفية استخدام Git من سطر الأوامر على أي حال ، سوف يجعلك أكثر كفاءة في Git. #ProTip ، استخدم msysgit وقم بتشغيل وضع "التحرير السريع" في خصائص المحطة الطرفية ، بحيث يمكنك النقر نقرًا مزدوجًا لتمييز سطر النص ، والنقر بزر الماوس الأيمن للنسخ ، والنقر بزر الماوس الأيمن مرة أخرى للصقه. انها سريعة جدا.

12
user456814

إذا كانت رسالة التعليق تتضمن غير الإنجليزية أحرف ، باستخدام الطريقة التي يوفرها user456814 ، فسيتم استبدال هذه الأحرف بعلامات استفهام. (تم اختباره وفقًا لـ sourcetree Ver2.5.0)

لذلك لا بد لي من استخدام الطريقة التالية.

الحذر: إذا تم سحب الالتزام من قبل أعضاء آخرين ، فقد تؤدي التغييرات الواردة أدناه إلى حدوث فوضى لهم.

الخطوة 1 : في الإطار الرئيسي sourcetree ، حدد علامة تبويب الريبو الخاصة بك ، وانقر فوق الزر " terminal " لفتح وحدة التحكم في أمر git.

الخطوة 2 :

[الموقف A] : الالتزام الهدف هو الأحدث.

1) في وحدة تحكم أمر git ، الإدخال

git commit --amend -m "new comment message"

2) إذا تم دفع الالتزام الهدف إلى جهاز التحكم عن بعد ، يجب عليك الدفع مرة أخرى بالقوة. في وحدة تحكم الأمر git ، الإدخال

git Push --force

[الموقف B] : الالتزام الهدف ليس هو الأحدث.

1) في وحدة تحكم أمر git ، الإدخال

git rebase -i HEAD~n

هو الاسكواش الاحدث ن يرتكب. مثلا إذا كنت ترغب في تحرير الرسالة قبل آخرها ، n is 2. سيفتح هذا الأمر نافذة vi ، أول كلمة في كل سطر هي " pick " ، ويمكنك تغيير " اختر "إلى" إعادة صياغة "للخط الذي تريد تحريره. ثم ، أدخل :wq لحفظ وإنهاء نافذة vi هذه. الآن ، سيتم فتح نافذة vi جديدة ، في هذه النافذة تقوم بإدخال رسالتك الجديدة. استخدم أيضًا :wq لحفظ وإنهاء الخدمة.

2) إذا تم دفع الالتزام الهدف إلى جهاز التحكم عن بعد ، يجب عليك الدفع مرة أخرى بالقوة. في وحدة تحكم الأمر git ، الإدخال

git Push --force


أخيرًا : في نافذة sourcetree الرئيسية ، اضغط على F5 للتحديث.

8
Hosi Golden