Git School · FluxGit

נקודות שחזור ו-stash ידני ב-Git

FluxGit ·

הקטעים מתארים מקרים שונים, לא סקריפט אחד. בחרו את המקרה המתאים והחליפו שמות ענפים, נתיבים ו-VERIFIED_COMMIT לפני השימוש. פקודות ביטול שייכות רק לפעולה הפעילה המתאימה; אין לבצע את שני החלופות.

התשובה הקצרה

נקודות שחזור ב-FluxGit מתעדות מצבים לשחזור פעולות היסטוריה מכוסות. stash ידני שומר עריכות מקומיות לשימוש מאוחר יותר, במסלול נפרד.

הדוגמה והתנאים

מדריך G12 מחליף ענף עם שינויים ממתינים בקובצי tracked. קובצי untracked נשארים בתיקייה, אלא אם כוללים אותם במפורש.

בדיקת המצב לפני שינוי

בדקו git status --short ו-git diff. החליטו מה לשמור לפני מעבר הענף; תיקייה נקייה אינה גיבוי קבוע.

git status --short
git diff

שמירת הפניה או checkout נפרד

צרו stash ידני עם הודעה מזוהה. git stash push שומר שינויים tracked; השתמשו באפשרות -u רק אם רוצים לכלול גם קובצי untracked.

git stash push -m "school/manual-before-switch"
git stash list

המסלול הראשון

בדקו git stash list ועברו לענף המבוקש. כשחוזרים, בדקו את ההקשר לפני החלת הרשומה שנבחרה.

git switch target-branch

בחירה מכוונת בתוצאה אחרת

git stash apply שומר את הרשומה. git stash pop מוחק אותה רק לאחר החלה מוצלחת; בקונפליקט הרשומה נשמרת.

git stash show --patch 'stash@{0}'
git stash apply 'stash@{0}'

מגבלות וחריגים

הנקודות האוטומטיות מכסות reset, rebase, cherry-pick, revert ו-merge במסלולים מוגנים. discard ו-clean אינם יוצרים Flux restore point אוניברסלי.

התנגשויות וניקוי

כשיש קונפליקט, בדקו את הקבצים ופתרו במכוון. אל תחזרו על pop ואל תמחקו רשומה כדי להסתיר מצב שטרם הושלם.

אימות התוצאה

בדקו קבצים, אינדקס ובדיקות אחרי החלת ה-stash. מחקו רשומה רק לאחר שווידאתם שהעבודה הדרושה נשמרה.

git status --short
git diff
git diff --cached

שאלות נפוצות

stash אינו מתפרסם אוטומטית עם push ואינו מחליף גיבוי. השחזור דורש שהמצב המקומי הרלוונטי עדיין יהיה זמין.

בדיקת הפעולה ב-FluxGit

Safety Timeline מרכז תנועות reflog, סיכונים ונקודות שחזור. נתוני הנקודות נשארים מקומיים; השתמשו בתצוגה המקדימה ובהקשר השחזור המיוחד לכל פעולה.

תיעוד Git הרשמי

Git School · 1:51

החלפת ענף Git עם עבודה לא גמורה: git stash באופן חזותי

שמרו שינוי במעקב עם git stash, תנו לו שם, החליפו ענף וחזרו כדי להשתמש ב-pop. נלמד מדוע קבצים שאינם במעקב נשארים ומה ההבדל בין apply ל-pop מוצלח, כולל פקודות המסוף.

החלפת ענף Git עם עבודה לא גמורה: git stash באופן חזותי
הקריינות באנגלית. ב-YouTube זמינות כתוביות ידניות ב-11 שפות. התמליל הזה בעברית.

צפייה ב-YouTube — נפתח בלשונית חדשה

הוקלט במאגר בדיקה. קריינות באנגלית וכתוביות בעברית.

קריאת תמליל הקריינות
  1. 00:03 אתם באמצע שינוי וצריכים לבדוק ענף אחר עכשיו. העבודה עוד לא מוכנה ל-commit, ואתם לא רוצים לאבד אותה.
  2. 00:12 הנה השינוי הלא גמור ב-app.py.
  3. 00:19 stash שומר שינויים ש-Git עוקב אחריהם. כאן הוא שומר את השינוי ב-app.py ומסיר אותו מתיקיית העבודה. קבצים ש-Git אינו עוקב אחריהם נשארים בדיסק. pop מוצלח משחזר את השינוי ומסיר את רשומת ה-stash שלו.
  4. 00:36 בחרו Stash current changes ותנו שם שתזהו בהמשך.
  5. 00:48 עברו לענף האחר. השינוי במעקב שמור ב-stash. הקובץ שאינו במעקב נשאר בתיקייה.
  6. 00:58 סיימתם שם. חוזרים ל-main.
  7. 01:05 בצעו pop ל-stash. השינוי חזר ל-app.py וה-stash נעלם.
  8. 01:15 apply או pop? apply משחזר את השינויים ומשאיר את רשומת ה-stash. pop מסיר את הרשומה רק אם השינויים הוחלו בהצלחה. אם יש התנגשויות, ה-stash נשמר.
  9. 01:29 במסוף: git stash push עם הודעה, החליפו ענף וחזרו, ואז git stash pop.
  10. 01:37 סיכום: עבודה לא גמורה הולכת למדף, לא ל-commit חצי גמור. בשיעור הבא: סידור commits לפני בקשת משיכה.

מסלולים קשורים

הורדת FluxGit