Git amend: תיקון ה-commit האחרון
הקטעים מתארים מקרים שונים, לא סקריפט אחד. בחרו את המקרה המתאים והחליפו שמות ענפים, נתיבים ו-VERIFIED_COMMIT לפני השימוש. פקודות ביטול שייכות רק לפעולה הפעילה המתאימה; אין לבצע את שני החלופות.
התשובה הקצרה
commit --amend מחליף את הקצה ב-commit חדש ולא עורך את העצם המקורי. הוא מתקן הודעה או תוכן של האחרון המקומי לאחר בדיקת האינדקס. כשההיסטוריה משותפת, commit תיקון נוסף בדרך כלל פשוט יותר לתיאום משכתוב.
הדוגמה והתנאים
הדוגמה היא commit מקומי רגיל עם הודעה שגויה ושינוי חסר ב-src/parser.js. אלו תיקוני הודעה בלבד או גם תוכן. זה אינו מקרה של commit ישן, ראשון או merge. התאימו קובץ והודעה והתחילו בקצה הנוכחי.
בדיקת המצב לפני שינוי
קראו status, אחרון ו-diff --cached. האינדקס מספק תוכן ל-amend רגיל, ולכן קבצים ממשימה אחרת עלולים להיכנס. בדקו גם שינויים שלא הוכנו כדי להבין מה נשאר בחוץ. לפני שינוי זהות בררו אם המקור פורסם, שולב או שימש אחרים.
git status --short
git log -1 --oneline
git diff --cached
git diffשמירת הפניה או checkout נפרד
צרו rescue/before-amend ב-HEAD לשמירת המקור והשוואה. זה לא שומר כל קובץ מקומי; שמרו חשובים בנפרד. reflog יכול לזהות מצבים קודמים שעוד נשארו, אך אינו מבטיח עצמים קבועים או גיבוי לעריכות שלא בוצע להן commit.
git branch rescue/before-amend HEADהמסלול הראשון
להודעה בלבד, --amend --only בלי נתיבים מוציא שינויים שכבר הוכנו. -m מספק את הנוסח המתוקן. בדקו commit ואינדקס אחר כך: העבודה המוכנה צריכה להישאר ל-commit נפרד. גם תוכן האינדקס הוא מסלול אחר, אף ששניהם משתמשים ב-amend.
git commit --amend --only -m "Fix parser error message"
git diff --cachedבחירה מכוונת בתוצאה אחרת
לקובץ חסר הכינו את הנתיב, בדקו diff מלא של האינדקס והשתמשו ב--amend --no-edit לשמירת ההודעה. קבצים מוכנים אחרים נכנסים אלא אם מוצאים במכוון. הפעילו בדיקות פרויקט. בחירת hunks מסייעת לבדיקה אך אינה מוכיחה commit משולב נכון.
git add -- src/parser.js
git diff --cached
git commit --amend --no-editמגבלות וחריגים
בקצה משותף העדיפו commit תיקון חדש. פרסום קצה משוכתב דורש אולי תיאום ועלול להיות אסור בענף מוגן. אין כאן force push כללי. אם הצוות מאפשר, פעלו בתהליך הנפרד שלו ל-lease, ענף ובדיקת שותפים.
git add -- src/parser.js
git diff --cached
git commit -m "Correct parser handling"התנגשויות וניקוי
ל-amend בדרך כלל אין מסלול התנגשויות משלו. כישלון hook או commit שנדחה מחייבים בדיקת הודעה ומצב, לא reset --hard אוטומטי. לתוכן שגוי השוו קודם rescue/before-amend. שמרו עותקים מאומתים של קבצים מקומיים לפני reset מתקן.
אימות התוצאה
השוו הודעה וקבצים בשני commits. מזהים שונים הם צפויים. בהודעה בלבד העצים צריכים להתאים; בתוכן רק השינוי הרצוי שונה. בדקו עבודה מוכנה שנותרה ושמרו חילוץ עד שילוב בטוח של ההחלפה שנבדקה בהיסטוריה הרצויה.
git show --stat HEAD
git diff rescue/before-amend HEAD
git status --shortשאלות נפוצות
no-edit לא מונע שינוי תוכן, רק משמר הודעה. האינדקס עדיין משפיע. amend לא מתקן ישן ישירות; נדרש מסלול אחר. אחרי push רק במדיניות שיתוף מפורשת; commit נוסף חוסך תיאום רב.
בדיקת הפעולה ב-FluxGit
השתמשו בהיסטוריה החזותית ובתצוגת השינויים של FluxGit לבדיקת הפעולה וה-commits הרלוונטיים. שמרו את בדיקות הענף, השיתוף והקבצים המקומיים מהדוגמה. דף ההורדה מציג גרסאות ופלטפורמות זמינות כעת.