זוהי הפקודה git-update-index שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות החינמיות שלנו כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS.
תָכְנִית:
שֵׁם
git-update-index - רישום תוכן הקובץ בעץ העבודה לאינדקס
תַקצִיר
סילון עדכון-אינדקס
[--הוסף] [--הסר | --כפה הסרה] [--החלף]
[--refresh] [-q] [--unmerged] [--ignore-missing]
[(--מידע במטמון , , )...]
[--chmod=(+|-)x]
[--[לא-]הנח-שלא-שינוי]
[--[no-]דילוג-worktree]
[--ignore-submodules]
[--[ללא]פיצול-אינדקס]
[--[ללא-|כפייה-]מטמון-לא-מעקב]
[--refresh-really] [--unresolve] [--again | -g]
[--מידע-בלבד] [--אינדקס-מידע]
[-z] [--stdin] [--index-version ]
[--מִלוּלִי]
[--] [ ...]
תיאור
משנה את מטמון האינדקס או הספרייה. כל קובץ המוזכר מתעדכן באינדקס ו...
כל לא ממוגן or צרכי עדכון המדינה מנוקה.
ראה גם git-add(1) לדרך ידידותית יותר למשתמש לבצע חלק מהפעולות הנפוצות ביותר
על המדד.
הדרך סילון עדכון-אינדקס מטפל בקבצים עליהם מסופר, ניתן לשנות אותם באמצעות האפשרויות השונות
אפשרויות:
אפשרויות
--לְהוֹסִיף
אם קובץ מסוים אינו נמצא כבר באינדקס, הוא נוסף. התנהגות ברירת המחדל היא
להתעלם מקבצים חדשים.
--לְהַסִיר
אם קובץ מסוים נמצא באינדקס אך חסר, הוא מוסר. התנהגות ברירת מחדל
הוא להתעלם מהקובץ שהוסר.
--לְרַעֲנֵן
בודק את האינדקס הנוכחי ובודק אם יש צורך במיזוגים או עדכונים על ידי
בדיקת מידע stat().
-q
שקט. אם --refresh מגלה שהאינדקס זקוק לעדכון, התנהגות ברירת המחדל היא
שגיאות. אפשרות זו גורמת סילון עדכון-אינדקס להמשיך בכל מקרה.
--ignore-submodules
אל תנסה לעדכן תת-מודולים. אפשרות זו נכבת רק כאשר היא מועברת לפני כן.
--לְרַעֲנֵן.
--לא ממוזג
אם --refresh מוצא שינויים שלא אוחדו באינדקס, התנהגות ברירת המחדל היא שגיאה
החוצה. אפשרות זו הופכת סילון עדכון-אינדקס להמשיך בכל מקרה.
--התעלם-חסר
מתעלם מקבצים חסרים במהלך --refresh
--מידע על מטמון , , , --מידע במטמון
הכנס את המידע שצוין ישירות לאינדקס. לצורך תאימות לאחור, תוכל
גם תנו את שלושת הארגומנטים הללו כשלושה פרמטרים נפרדים, אבל משתמשים חדשים
מומלץ להשתמש בצורה של פרמטר יחיד.
--אינדקס-מידע
קרא מידע אינדקס מ- stdin.
--chmod=(+|-)x
הגדר את הרשאות ההפעלה על הקבצים המעודכנים.
--[לא-]הנח-ללא-שינוי
כאשר דגל זה מצוין, שמות האובייקטים הרשומים עבור הנתיבים אינם מתעדכנים.
במקום זאת, אפשרות זו מגדירה/מבטלת את הסיבית "הנחת שינוי" עבור הנתיבים. כאשר ה
הסיבית "הנח ללא שינוי" פעילה, המשתמש מבטיח לא לשנות את הקובץ ומאפשרת ל-Git
להניח שקובץ עץ העבודה תואם את מה שנרשם באינדקס. אם אתה
אם רוצים לשנות את קובץ עץ העבודה, צריך לבטל את הביט שיורה ל-Git. זה
לפעמים מועיל כשעובדים עם פרויקט גדול על מערכת קבצים איטית מאוד
lstat(2) קריאה למערכת (למשל cifs).
גיט ייכשל (בצורה חיננית) במקרה שיהיה צורך לשנות קובץ זה באינדקס, למשל כאשר
מיזוג ב-commit; לכן, במקרה שהקובץ שככל הנראה לא עוקב משתנה במעלה הזרם, אתה
יצטרך לטפל במצב באופן ידני.
--באמת-רענן
כמו --לְרַעֲנֵן, אך בודק מידע סטטיסטי ללא תנאי, ללא קשר ל-
הגדרה "הנח ללא שינוי".
--[no-]דילוג-worktree
כאשר אחד מהדגלים הללו מצוין, שם האובייקט שנרשם עבור הנתיבים אינו
עודכן. במקום זאת, אפשרויות אלו מגדירות ומבטלות את הסיבית "skip-worktree" עבור הנתיבים.
ראה סעיף "דילוג על סיבית עץ עבודה" להלן למידע נוסף.
-g, --שוב
ריצות סילון עדכון-אינדקס עצמו על הנתיבים שרשומות האינדקס שלהן שונות מאלה
מה-HEAD commit.
--לבטל פתרון
משחזר את לא ממוגן or צרכי עדכון מצב של קובץ במהלך מיזוג אם הוא היה
נוקה בטעות.
--מידע בלבד
אל תיצור אובייקטים במסד הנתונים של האובייקטים עבור כולם טיעונים הבאים בעקבות זאת
דגל; פשוט הכנס את מזהי האובייקט שלהם לאינדקס.
--כוח-הסרה
הסר את הקובץ מהאינדקס גם כאשר ספריית העבודה עדיין מכילה קובץ כזה.
(מרמז על --הסר.)
--החלף
כברירת מחדל, כאשר קיים נתיב קובץ באינדקס, סילון עדכון-אינדקס מסרב לניסיון
כדי להוסיף נתיב/קובץ. באופן דומה, אם קיים נתיב/קובץ לקובץ, לא ניתן להוסיף נתיב קובץ.
בעזרת הדגל --replace, ערכים קיימים המתנגשים עם הערך שנוסף ייכללו.
מוסר אוטומטית עם הודעות אזהרה.
--סטדין
במקום לקחת רשימת נתיבים משורת הפקודה, קרא את רשימת הנתיבים מה-
קלט סטנדרטי. נתיבים מופרדים על ידי LF (כלומר נתיב אחד לכל שורה) כברירת מחדל.
--מִלוּלִי
דווח על מה שנוסף ומה מוסר מהאינדקס.
--גרסת-אינדקס
כתוב את האינדקס המתקבל בפורמט הדיסק הרשום. גרסאות נתמכות
הם 2, 3 ו-4. גרסת ברירת המחדל הנוכחית היא 2 או 3, תלוי אם נוספים
נעשה שימוש בתכונות, כגון git add -N.
גרסה 4 מבצעת דחיסת נתיב פשוטה שמפחיתה את גודל האינדקס ב-30%-50%
מאגרים גדולים, מה שמביא לזמן טעינה מהיר יותר. גרסה 4 היא יחסית צעירה
(פורסם לראשונה בגרסה 1.8.0 באוקטובר 2012). יישומים אחרים של Git כגון JGit
וייתכן ש-libgit2 עדיין לא תומך בזה.
-z
בעל משמעות רק עם --stdin או --index-info; נתיבים מופרדים באמצעות תו NUL
במקום LF.
--split-index, --no-split-index
הפעלה או בטל של מצב אינדקס מפוצל. אם מופעל, האינדקס מפוצל לשני קבצים,
$GIT_DIR/index ו- $GIT_DIR/sharedindex. שינויים מצטברים ב
`$GIT_DIR/index` בעוד שקובץ האינדקס המשותף מכיל את כל ערכי האינדקס נשאר ללא שינוי.
אם מצב פיצול אינדקס כבר מופעל ו--split-index ניתן שוב, כל השינויים
בקובץ $GIT_DIR/index נדחפים חזרה לקובץ האינדקס המשותף. מצב זה מיועד עבור
אינדקסים גדולים מאוד שלוקח להם זמן רב לקרוא או לכתוב.
--מטמון-לא-עוקב, --אין-מטמון-לא-עוקב
הפעלה או השבתה של הרחבת מטמון שלא עוקב. פעולה זו עלולה להאיץ פקודות ש
כרוכים בקביעת קבצים שלא עוקבים אחריהם, כגון סטטוס git. ההפעלה הבסיסית
המערכת ומערכת הקבצים חייבות לשנות את השדה st_mtime של ספרייה אם קבצים מתווספים או
נמחק באותה ספרייה.
--force-untracked-cache
לשם בטיחות, --untracked-cache מבצע בדיקות על ספריית העבודה כדי לוודא
ניתן להשתמש במטמון שאינו מְעוּרָק. בדיקות אלו עשויות להימשך מספר שניות.
ניתן להשתמש ב--force-untracked-cache כדי לדלג על הבדיקות.
--
אל תפרש טיעונים נוספים כאפשרויות.
קבצים לפעולה עליהם. שימו לב שקבצים המתחילים ב- . נזרקים. זה כולל ./file
ו-dir/./file. אם אינך מעוניין בכך, השתמש בשמות נקיים יותר. אותו הדבר חל גם על
ספריות שמסתיימות / ושבילים עם //
משתמש --לְרַעֲנֵן
--לְרַעֲנֵן לא מחשב קובץ sha1 חדש או מעודכן את האינדקס עבור
שינויים במצב/תוכן. אבל מה זה עושה לעשות הוא "להתאים מחדש" את המידע הסטטיסטי של קובץ
עם האינדקס, כך שתוכלו לרענן את האינדקס עבור קובץ שלא שונה אך
כאשר ערך הסטטיסטיקה אינו מעודכן.
לדוגמה, תרצו לעשות זאת לאחר ביצוע א סילון עץ קריאה, כדי לקשר את אינדקס הסטטיסטיקה
פרטים עם הקבצים המתאימים.
משתמש --מידע על מטמון OR --מידע בלבד
--מידע על מטמון משמש לרישום קובץ שאינו נמצא בספריית העבודה הנוכחית. זה
שימושי למיזוג של הוצאות מינימום.
כדי להעמיד פנים שיש לך קובץ עם mode ו-sha1 ב-path, אמור:
$ git update-index --cacheinfo , ,
--מידע בלבד משמש לרישום קבצים מבלי למקם אותם במסד הנתונים של האובייקטים. זהו
שימושי עבור מאגרי סטטוס בלבד.
שניהם --מידע על מטמון ו --מידע בלבד מתנהגים באופן דומה: האינדקס מתעדכן אך האובייקט
מסד נתונים לא. --מידע על מטמון שימושי כאשר האובייקט נמצא במסד הנתונים אך הקובץ
אינו זמין באופן מקומי. --מידע בלבד שימושי כאשר הקובץ זמין, אך אינך
מעוניין לעדכן את מסד הנתונים של האובייקטים.
משתמש --מידע-אינדקס
--index-info הוא מנגנון חזק יותר המאפשר לך להזין הגדרות רשומות מרובות
מהקלט הסטנדרטי, ומעוצב במיוחד עבור סקריפטים. הוא יכול לקבל קלטים של
שלושה פורמטים:
1. מצב SP sha1 נתיב TAB
הפורמט הראשון הוא מה ש-"git-apply --index-info" מדווח, ומשמש לשחזור
עץ חלקי המשמש לעץ בסיס של מיזוג מזויף בעת נסיגה במיזוג תלת-כיווני.
2. מצב SP סוג SP sha1 נתיב TAB
הפורמט השני הוא למלא סילון ls-עץ פלט לקובץ האינדקס.
3. מצב SP sha1 SP שלב TAB נתיב
פורמט זה נועד להכניס שלבים מסדר גבוה יותר לקובץ האינדקס וההתאמות סילון ls-קבצים
--שלב פלט.
כדי להוסיף ערך שלב גבוה יותר לאינדקס, יש להסיר תחילה את הנתיב על ידי הזנת
ערך mode=0 עבור הנתיב, ולאחר מכן הזנת שורות קלט נחוצות בפורמט השלישי.
לדוגמה, נתחיל עם האינדקס הזה:
$ git ls-files -s
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0 frotz
ניתן להזין את הקלט הבא ל--index-info:
$ git update-index --index-info
0 0000000000000000000000000000000000000000 פרוץ
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz
100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
השורה הראשונה של הקלט מזינה את 0 כמצב להסרת הנתיב; ה-SHA-1 לא
משנה כל עוד הוא מעוצב כראוי. לאחר מכן השורה השנייה והשלישית מזינות את שלב 1 ו-
ערכי שלב 2 עבור נתיב זה. לאחר האמור לעיל, נקבל את זה:
$ git ls-files -s
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz
100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
משתמש "לְהַנִיחַ ללא שינוי" מקדח
פעולות רבות ב-Git תלויות במערכת הקבצים שלך כדי לפעול בצורה יעילה. lstat(2)
יישום, כך שניתן יהיה לבדוק בזול את מידע st_mtime עבור קבצי עץ עבודה
כדי לראות אם תוכן הקובץ השתנה מהגרסה שנרשמה בקובץ האינדקס.
למרבה הצער, חלק ממערכות הקבצים אינן יעילות lstat(2). אם מערכת הקבצים שלך היא אחת מ
אותם, אתה יכול להגדיר את הסיבית "הנח ללא שינוי" לנתיבים שלא שינית כדי לגרום ל-Git לא לעשות זאת.
בצע בדיקה זו. שים לב שהגדרת ביט זה בנתיב לא אומרת ש-Git יבדוק את
תוכן הקובץ כדי לראות אם הוא השתנה - זה גורם לגיט להשמיט כל בדיקה ו
נניח שיש לו לֹא השתנה. כאשר אתה מבצע שינויים בקבצי עץ עבודה, עליך
ספרו במפורש ל-Git על כך על ידי הסרת הסיבית "הנחי שלא נעשה בה שימוש", לפני או אחרי
אתה משנה אותם.
כדי להגדיר את הסיבית "הנח ללא שינוי", השתמש באפשרות --assume-unchanged. כדי לבטל את ההגדרה, השתמש
--no-assume-unchanged. כדי לראות אילו קבצים הוגדרה להם הסיבית "assume unchanged", השתמש ב-git
ls-files -v (ראה קבצי git-ls(1)).
הפקודה בוחנת את משתנה התצורה core.ignorestat. כאשר זה נכון, נתיבים
עודכן עם נתיבי עדכון-index של git... ונתיבים עודכנו עם פקודות Git אחרות ש
עדכון האינדקס וגם עץ העבודה (למשל סילון להגיש מועמדות --אינדקס, סילון אינדקס קופה -u, ו סילון
עץ קריאה -u) מסומנים אוטומטית כ"הנחת שינוי". שימו לב ש"הנחת שינוי"
קצת הוא לֹא הגדר אם git update-index --refresh מוצא שקובץ עץ העבודה תואם לאינדקס
(השתמשו בפונקציה git update-index --really-refresh אם ברצונכם לסמן אותם כ-"הניחו ללא שינוי").
דוגמאות
כדי לעדכן ולרענן רק את הקבצים שכבר הוצאו מהתיק:
$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh
במערכת קבצים לא יעילה עם הגדרת core.ignorestat
$ git update-index --really-refresh (1)
$ git update-index --no-assume-unchanged foo.c (2)
$ git diff --name-only (3)
עריכת foo.c
$ git diff --name-only (4)
M foo.c
$ git update-index foo.c (5)
$ git diff --name-only (6)
עריכת foo.c
$ git diff --name-only (7)
$ git update-index --no-assume-unchanged foo.c (8)
$ git diff --name-only (9)
M foo.c
1. כוחות lstat(2) להגדיר ביטים של "הנחת שינוי" עבור נתיבים התואמים לאינדקס.
2. סמן את הנתיב לעריכה.
3. זה עושה lstat(2) ומוצאת אינדקס התואם את הנתיב.
4. זה עושה lstat(2) ומוצאת שאינדקס עושה לֹא להתאים את הנתיב.
5. רישום הגרסה החדשה לאינדקס מגדיר את הסיבית "הנח ללא שינוי".
6. וההנחה היא שהוא לא השתנה.
7. אפילו אחרי שאתה עורך אותו.
8. אפשר לספר על השינוי לאחר מעשה.
9. עכשיו זה בודק עם lstat(2) ומגלה שהוא שונה.
דלג על עץ העבודה מקדח
ניתן להגדיר את סיבית Skip-worktree במשפט אחד (ארוך): בעת קריאת ערך, אם הוא
מסומן כ-skip-worktree, אז גיט מעמיד פנים שגרסת ספריית העבודה שלו מעודכנת ו
קרא את גרסת האינדקס במקום זאת.
כדי לפרט, "קריאה" פירושה בדיקת קיומו של קובץ, קריאת תכונות קובץ או קובץ
תוכן. גרסת ספריית העבודה עשויה להיות קיימת או נעדרת. אם קיימת, התוכן שלה
ייתכן שתתאים לגרסת האינדקס או לא. הכתיבה אינה מושפעת מקטע זה, תוכן
בטיחות היא עדיין בראש סדר העדיפויות. שימו לב שגיט יכול עדכון קובץ ספריית העבודה, כלומר
מסומן כ-skip-worktree, אם זה בטוח לעשות זאת (כלומר, גרסת ספריית העבודה תואמת לאינדקס
גִרְסָה)
למרות שביט זה נראה דומה לביט של "הנחת שינוי", מטרתו שונה מ-
סיביות בהנחה ללא שינוי. Skip-worktree מקבל גם עדיפות על פני סיביות בהנחה ללא שינוי כאשר
שניהם מוגדרים.
תְצוּרָה
הפקודה מכבדת את משתנה התצורה core.filemode. אם המאגר שלך נמצא על
מערכת קבצים שסיביות ההפעלה שלהן אינן אמינות, יש להגדיר זאת ל שקר (ראה גיט-
config(1)). פעולה זו גורמת לפקודה להתעלם מהבדלים במצבי הקובץ שהוקלטו ב
אינדקס ומצב הקובץ במערכת הקבצים אם הם שונים רק בסיבית ההפעלה. על כאלה
מערכת קבצים מצערת, ייתכן שתצטרך להשתמש סילון עדכון-אינדקס --chmod=.
באופן דומה למדי, אם משתנה התצורה core.symlinks מוגדר ל- שקר (ראה גיט-
config(1)), קישורים סמליים מוכנסים לחשבון כקבצים רגילים, ופקודה זו אינה
שינוי מצב קובץ מוקלט מקישור סמלי לקובץ רגיל.
הפקודה בוחנת את משתנה התצורה core.ignorestat. ראה שימוש "לְהַנִיחַ ללא שינוי"
קצת הסעיף לעיל.
הפקודה בוחנת גם את משתנה התצורה core.trustctime. זה יכול להיות שימושי כאשר
זמן שינוי ה-inode משתנה באופן קבוע על ידי משהו מחוץ ל-Git (סורקי מערכת הקבצים)
ומערכות גיבוי משתמשות ב-ctime לסימון קבצים שעובדו) (ראה git-config(1)).
השתמש ב-git-update-index באופן מקוון באמצעות שירותי onworks.net