You are on page 1of 18

GIT

‫מה זה בעצם ‪?GIT‬‬

‫• ‪ Git‬היא מערכת בקרת גרסאות קוד מבוזרת מבוססת קוד פתוח‪.‬‬


‫• ניהול גרסאות "לוקאלי"‪.‬‬
‫• כמערכת בקרת גרסאות מבוזרת‪ ,‬כל ספרייה שלה בכל‪ ‬מחשב‪ ‬נחשבת למאגר נתונים‪ ‬עם‬
‫תיעוד מלא ואפשרויות מעקב אחר שינויי גרסה‪ ,‬ללא תלות בגישה לרשת או בשרת מרכזי‪.‬‬
‫• גיט נוצר על ידי לינוס טורבאלד (‪  )Linus Torvalds‬בתאריך ‪ 7‬באפריל‪ 2005 ‬ונכון לשנת‬
‫‪ 2020‬היא נחשבת מערכת ניהול הגרסאות הפופולרית ביותר‪.‬‬
‫?למה כדאי להשתמש בגיט‬
‫• ‪ Git‬מאפשר לנו לעקוב אחרי קבצי טקסט ‪ ,‬קוד ‪ ,‬ומסמכים ‪ ,‬פרויקטים גדולים וקטנים‪.‬‬
‫• ‪ Git‬מאפשרת לנו לעבוד בצוות‪ ,‬כל אחד על חלקו ולשגר את השינויים למאגר אחד המכיל‬
‫את כל השינויים של כולם‪ ,‬שמו המקצועי של המאגר הוא "‪"Repository‬‬
‫• ‪ GIT‬עוקב אחרי השינויים שהוכנסו ל‪ Repository‬ומאפשר לעקוב ‪ ,‬לשמור ולשחזר כל‬
‫שינוי שנעשה בקוד‪.‬‬
‫מה זו בקרת תצורה (‪? )Version Control‬‬

‫לעבודה עצמאית ‪:‬‬


‫• נותן לך יכולת לחזור אחורה "בזמן" לגרסאות קודמות של הקוד שלך‪.‬‬
‫• נותן לך אפשרות לשמור גרסאות ולנהל גרסאות נפרדות לתוכנה שלך (גרסה לווינדוז ‪ ,‬ווב ‪ ,‬לינוקס‬
‫וכו‪)....‬‬
‫לעבודה בצוות ‪:‬‬
‫• מפשט עבודה במקביל ‪ ,‬איחוד גרסאות וייעול עבודת הפיתוח הצוותי‪.‬‬
‫‪ Git‬שומר רשימה של שינויים‬
‫שנעשו לקבצים ‪ ,‬כל שינוי שנעשה‬
‫לקובץ נקרא “‪. ”Commit‬‬
‫לפני שעושים ‪ Commit‬צריך‬
‫להגיד איזה קבצים לשמור ולעקוב‬
‫אחריהם‪.‬‬

‫פעולה זו נקראת ‪Git Add‬‬


‫מבנה‬

‫• גיט היא מערכת ניהול גרסאות מבוזרת ‪ -‬כל עותק מקומי של המאגר מכיל את כל המידע (כל ההיסטוריה)‬
‫• המידע הזה נשמר בדרך כלל בתת‪-‬תיקיה בשם "‪"git.‬‬
‫• גיט שומרת אובייקטים מסוג‪ ‬מידע‪ ,blob ( ‬בדרך כלל קובץ)‬
‫• ‪ ‬עץ‪ tree ( ‬מבנה ספריות)‬
‫• גרסה‪ commit(  ‬האובייקטים מזוהים על ידי שם שהוא‪ ‬גיבוב‪ ‬תוכנם‬
‫לפי‪)SHA-1 ‬‬
‫מושגים בגיט‬

‫‪   Working area‬כל הקבצים במיקום בו קיים ‪ git.‬הספרייה אשר התווספו או עודכנו‪.‬‬


‫‪  Index (staging area‬המקום בו ‪ git‬מנהל רישום ומעקב של כל מה שקורה ב‪.repo‬‬
‫הפקודה ‪ git add‬מעבירה קבצים מה‪ working area -‬ל‪.index-‬‬
‫‪  Local repository‬הרפו המקומי בו נשמרת ההיסטוריה של כל ה‪.commits-‬‬
‫הפקודה ‪ git commit‬מעבירה קבצים מה‪ index-‬ל‪ local repo-‬ומגדירה ‪ commit id‬ייחודי עבור‬
‫ההסטוריה‪.‬‬
‫‪  Remote repository‬אתר מרוחק וחשוף בו ניתן לאחסן ולשתף את ה‪.repository-‬‬
‫הפקודה ‪ git push‬תעביר את כל ה‪ commits-‬מה‪ local repo-‬ל‪.remote repo-‬‬
‫‪ ‬‬
‫‪Branching‬‬

‫• לפעמים אנו רוצים ליצור גרסה חדשה במקביל לגרסה הקיימת‬


‫• בעבודה רגילה עם קבצים‪ ,‬במצב שכזה היינו יוצרים את הקבצים‬
‫• ‪story.txt‬‬
‫• ‪Story_copy.txt‬‬
‫• ‪Story_copy_copy.txt‬‬
‫• פיצול גרסאות שכזה נקרא ‪( branching‬ענפים)‬
‫?ענפים ‪ ,‬מה הם‬

‫ענף הוא "גרסא" של ה‪ Repository‬שלך ‪.‬‬

‫• אנחנו יוצרים ענף חדש על פעם כשנרצה לעבוד על פיצ'ר חדש ‪ ,‬שנפרד‬
‫מהגרסא הראשית ‪.‬‬
‫התקנה והרצה‬
‫מורידים את ההתקנה מהלינק הבא ‪:‬‬
‫‪https://git-scm.com/download/win‬‬

‫ומריצים ‪:‬‬
‫אתחול‪Repository‬‬
‫משיכת ‪ repository‬מתוך שרת מרוחק (ענן)‬ ‫יצירת ‪ Repository‬חדש מקומית‬
‫]‪Git clone [repository_url‬‬ ‫יצירת ‪Repository‬יוצרים תיקיה ומנווטים עליה בתוך‬ ‫‪.1‬‬
‫ה‪Git Bash‬‬
‫מקבלים את כל הענפים ואת כל ההסטוריה של הפרויקט‪.‬‬
‫לדוגמה ‪cd /c/GitExample :‬‬
‫‪ ry‬חדש ‪git init:‬‬ ‫‪.2‬‬
‫מכניסים תוכן לתקיה‬ ‫‪.3‬‬
‫‪Git add‬‬ ‫‪.4‬‬
‫‪Git commit‬‬ ‫‪.5‬‬
‫פקודות בסיסיות‬
‫‪ git init‬יצירת סביבת גיט לוקלית חדשה‪.‬‬
‫‪  git clone‬יצירת העתק של סביבה קיימת למחשב הלוקלי‪.‬‬
‫‪ git add‬הוספת קובץ‪/‬קבצים ל‪staging area‬‬
‫‪ git commit‬יצירת נקודת מצב של הפרויקט ושמירתו בגיט‬
‫‪ git config‬הגדרות פנימיות של הגיט‪.‬‬
‫‪ git status‬מציג את תמונת המצב של הקבצים שחלו בהם שינויים‪.‬‬
‫‪ git checkout‬מעבר לנקודת קומיט אחרת על הגרף של הגיט‬
‫‪ git remote‬מציג מידע על המאגר שממנו נלקח הקוד‪.‬‬
‫‪ git branch‬פעולות על הענפים‪ .‬תצוגה‪ ,‬הוספה‪ ,‬מחיקה‪.‬‬
‫‪ git pull‬מבצע ‪ merge‬של כל השינויים על ‪ remote repository‬אל הקבצים הלוקליים‪.‬‬
‫פקודות נוספות‬

‫‪ hard git reset [commit]--‬מאפסת את כל הקבצים ב ‪ Staging Area‬ולוקחת את הגירסא מהריפוזיטורי‪.‬‬


‫מוריד גרסא משרת מרוקח כגון ‪ ) )GitHub , BitBucket , Git Lab‬לתקיה במחשב‬ ‫]‪git clone [url‬‬
‫מוסיף קובץ למעקב (‪)Staging‬‬ ‫]‪git add [file‬‬
‫מסיר את הקובץ מ‪Staging Area‬‬ ‫]‪git reset [file‬‬
‫קומיט לקבצים ששונו או נמחקו ‪ ,‬קבצים חדשים לא יושפעו‪.‬‬ ‫‪git commit –a‬‬
‫מציג הסטוריית קומיטים בענף‬ ‫‪git log‬‬
‫פותח כלי שנועד לראות את השינויים בקבצים מול התגרסא האחרונה שלהם‪.‬‬ ‫‪git difftool‬‬
‫מציג רשימה של ענפים ב‪Repository‬‬ ‫‪git branch‬‬
‫‪Git Merge‬‬
‫]‪Git Merge [branch_to_merge_from‬‬
‫ביצוע איחוד של ענפים ‪ ,‬כאשר שני ענפים "מתפתחים לכיוונים שונים אחד מהשני‪.‬‬
‫נהוג לבצע זאת כאשר מסיימים לעבוד על ענף מסויים ורוצים לאחד גרסאות עם הענף‬
‫הראשי שממנו יצאנו ‪.‬‬
‫אם יהיו ‪ conflict‬ים במהלך האיחוד אז נתצרך לבצע איחוד ידני בעזרת ‪gif‬‬
‫‪. mergetool‬‬
‫רצוי להגדיר מראש ‪ mergetool‬חיצוני שנוח לשימוש כגון תוכנת ‪Beyond‬‬
‫‪ Compare‬ע"י הפקודות ‪:‬‬

‫‪git config --global diff.tool bc3‬‬


‫""\‪git config --global difftool.bc3.cmd "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE‬‬
‫‪git config --global difftool.prompt false‬‬
Git Flow
‫‪Git ignore‬‬

‫קובץ המכניסים ל‪ Repo‬שנועד להגדיר אילו תקיות או קבצים לא "לעקוב" אחריהם ולא‬
‫להכניס לבסיס נתונים ‪ .‬למשל קבצים מופקים בתהליך קימפול או קבצים בינאריים (‪dll , exe‬‬
‫וכו‪)...‬‬
‫דוגמא ל‪ gitignore.‬בשביל ‪: Stm32‬‬

‫‪https://github.com/istarc/stm32/blob/master/.gitignore‬‬
The End

You might also like