Git היא מערכת שהתחילה כמערכת ניהול קוד מבוזרת, ומתפתחת גם כדרך לבצע Deployment של אפליקציות Web. במדריך Git על Windows זה, שיתפרס על פני מספר חלקים אסביר כיצד להתקין Git בסביבת חלונות, לבצע הגדרות ראשוניות ואדגים שימוש על פרוייקט דוגמא.
התקנת Git בסביבת חלונות
הדרך המומלצת לעבודה עם Git בסביבת חלונות היא ע”י ה- Client ששמו msysgit. בעמוד הפרוייקט נחפש את הגירסא העדכנית ביותר של Gitברשימה (Full installer for official Git for Windows) ונלחץ על הקישור כדי להגיע לעמוד ההורדה.

בעמוד ההורדה, נלחץ על הקובץ להורדה ונשמור אותו מקומית.

לאחר סיום ההורדה, נתחיל בתהליך ההתקנה.

בעמוד ה- Welcome נלחץ על Next.

נאשר את תנאי השימוש ונמשיך הלאה.

נקבע / נאשר את מיקום ההתקנה של Git על חלונות ונמשיך הלאה.

במסך הגדרות ההתקנה נבצע מספר התאמות: נבחר האם להוסיף קיצורי דרך על ה- Desktop או בשורת ה- Quick Launch, וכן נסמן את האפשרויות של הוספת הפקודות ל- Context Menu בעת לחיצה ימנית על קבצים. זה יעזור לנו מאד בעבודה עם Git בסביבת חלונות בהמשך.

נאשר את שם התיקייה בתפריט “התחל” בה ישמרו קיצורי הדרך לעבודה עם Git בסביבת Windows, ונמשיך הלאה, או שנבקש לא ליצור תיקייה כזאת.

במסך הגדרות סביבת ההפעלה נבחר באפשרות “Use Git Bash only”.

כידוע, מערכות הפעלה שונות מקודדות תוים באופן שונה, ואחד ההבדלים הבולטים הוא התו CRLF (תו המציין מעבר שורה) ששונה באופן שהוא מיוצג בין Windows למערכות הפעלה אחרונות. כדי לא להתקל בבעיות בעת עבודה על פרוייקטים שלאו דווקא נוצרו בסביבת חלונות נבחר באפשרות: Checkout as-is, commit as-is.

ההתקנה תתבצע, ותיארך מספר שניות ובסופה נקבל את מסך סיום ההתקנה.

הפעלה ראשונית והגדרות ראשוניות
לאחר ההתקנה נפעיל את Git Bash מתפריט התוכניות.

Git Bash הוא ממשק Console לעבודה מול Git. נשתמש בו לצורך אינטראקציה עם Git דרך פקודות.

בחלק העליון של חלון ה- Git Bash נראה את הגרסה איתה אנחנו עובדים (מסומן באדום) וכן נראה את שורת הפקודה המציינת את שם המשתמש ואת שם המחשב.
הגדרת שם המשתמש וכתובת המייל
כל פקודה בשימוש ב- Git מתחילה במילה git, ולאחריה הפקודה עצמה והארגומנטים. לדוגמא כדי להגדיר הגדרות נשתמש בפקודה git config.
נגדיר מספר הגדרות גלובליות עבור השימוש שלנו ב- Git ונתחיל בהגדרת שם המשתמש וכתובת המייל. נשתמש בפקודה הבא בשינוי השם המלא שלכם:
git config --global user.name ‘Guy Burstein’
והגדרת כתובת המייל:
git config --global user.email guyb@microsoft.com
הרצת הפקודות האלה לא אמורה להחזיר פלט כלשהו, אז לא צריך להבהל אם לא רואים אישור על הפעולה.

יצירת מפתחות SSH לתקשורת מאובטחת מול מאגר הקוד
SSH (ראשי תיבות של Secure Shell) הוא פרוטוקול לתקשורת מאובטחת בין מחשבים, ומאפשרת להתחבר למחשב מרוחק ולבצע מולו פקודות.
כדי שנוכל לעבוד מול שרת Git באופן מאובטח, עלינו להגדיר מפתח SSH ייחודי לנו. כדי לעשות זאת, נשתמש בפקודה הבא (בשינוי כתובת המייל כמובן):
ssh-keygen –C ‘guyb@microsoft.com’ –t rsa

לאחר הקשת הפקודה נישאל איפה לשמור את הקובץ המכיל את מפתח ה- SSH. אפשר להקיש שם של קובץ או פשוט לאשר ע”י לחיצה על אנטר את מיקום ברירת המחדל (בתיקיית ה- User תיווצר תיקיית ssh. ובתוכה ישמרו הקבצים הרלוונטים).

כעת נתבקש להזין passphrase, וגם כאן נוכל לאשר ע”י הקשה על אנטר פעמיים.
בסיום התהליך אמור להיראות הפלט כך:

התהליך ייצור שני קבצים בתיקיית המשתמש שלי (אצלי: c:\users\guyb\.ssh). אחד מהם הוא המפתח הפרטי (id_rsa) והשני הוא המפתח הציבורי (id_rsa) בו נשתמש כדי להרשם וליצור remote repositories מאוחר יותר.

חשוב! כדאי לשמור את הקבצים האלה במקום מאובטח כדי שנוכל לשחזר אותם בכל זמן לצורך תקשורת עם שרתי ה- Git המרוחקים גם ממחשבים אחרים / אחרי פורמט וכו’.
עד כאן ההגדרות הנדרשות לעבודה עם Git בסביבת חלונות.
שימוש בסיסי ב- Git
כעת נשתמש בפרוייקט לדוגמא, כדי להדגים שימוש בסיסי ב- Git. יצאתי כאן Console Application פשוט ביותר.

לאחר ביצוע פעולת Build לפרוייקט (היוצרת את ספריות ה- Bin וה- Obj), נפתח את הספרייה בה יושב הפרוייקט, נלחץ על הכפתור הימני של העכבר ונבחר באפשרות Git Bash Here.

יצירת Git Repository
כעת, ניצור Git Repository עבור ה- Console Application שיצרנו. לאחר פתיחת Git Bash בספריית הפרוייקט נקבל את החלון הבא:

כדי ליצור Repository מהתיקייה הנוכחית נשתמש בפקודה:
זה הכל? כן! התיקייה הנוכחית היא כרגע Repository מקומי, ונקבל את הפלט הבא:

נשים לב כי המילה master נוספה לשורת המיקום שלנו. השם master מציין את ה- branch שלנו בעץ הגירסאות של הפרוייקט, והענף הראשון שנוצר עבור פרוייקט הוא master. נדבר יותר על branches בפוסט מאוחר יותר.
עוד נשים לב כי בתיקיית הפרוייקט נוצרה לנו תקייה מוסתרת חדשה בשם git.:

בדיקת סטטוס ניהול הקבצים (git status)
כדי לבדוק את סטטוס ניהול הקבצים ב- repository נריץ את הפקודה:
ונקבל את הפלט הבא:

הפלט הזה מציג מספר קבצים בצבע בורדו, שהם הקבצים שקיימים בתיקייה, אך לא משוייכים ל- Repository (זה מסביר את הכותרת Untracked files). בין הקבצים ניתן לראות קבצים חיוניים לפרוייקט כמו program.cs, תיקיית Properties ועוד, אך גם תיקיות וקבצים שלא נרצה לשמור אותם ב- Repository (כמו התיקיות Bin ו- Obj שדאגנו ליצור קודם). אלו קבצים שמפתח אחר בפרוייקט לא צריך אותם כדי לעבוד על הפרוייקט, לבנות אותו ולהריץ אותו.
שימוש בקובץ git ignore כדי להתעלם מקבצים מסויימים
כדי לציין למערכת Git כי ישנם קבצים שלא נרצה לנהל אותם, עלינו ליצור קובץ בשם gitignore. (קובץ ללא שם, ועם סיומת gitignore).
כדי ליצור קובץ ignore כזה נשתמש בפקודה touch שיוצרת קובץ ריק לפי שם נתון:

לא נקבל כאן פלט מסויים, אך בתיקיית הפרוייקט נוצר לנו קובץ חדש:

נערוך את הקובץ עם כל עורך טקסט (Notepad לדוגמא) כדי להזין בו את השמות של הקבצים והספריות זמהן נרצה להתעלם. למשל:
לסיום, נשמור את הקובץ. נוכל תמיד לערוך אותו ולהוסיף קבצים בשלב מאוחר יותר.
אם כעת נציג סטטוס (ע”י שימוש בפקודה git status), נראה שרשימת הקבצים קטנה. היא מכילה אמנם את קובץ ה- ignore אך לא מכילה את רשימת הקבצים שביקשנו לא להוסיף.

העברה ל- Staging
בניגוד למערכת ניהול תצורה אחרות בהן מבצעים Check In לקבצים ישירות לשרת, תהליך העבודה עם Git מכיל עוד שלב באצמע.

בשלב ראשון, יש לי קבצים בספריית העבודה שלי אותם אני עורך ומשנה. בשלב מסויים, אני רוצה לקבץ אוסף של קבצים ששונו / התווספו לתוך קבוצה שבעתיד תעבור לשלב הבא.
כדי להוסיף קבצים לסביבת ה- Staging, נשתמש בפקודה git add עם שמות הקבצים. לדוגמא, נשתמש בפקודה הבאה כדי להוסיף את כל הקבצים תחת הספרייה המקומית:
אם נציג כרגע את סטטוס ניהול הקבצים שלנו ע”י git status נראה את הפלט הבא:

הקבצים בספרייה הנוכחית ובספריות המשנה התווספו ומוצגת הכותרת: “Changes to be committed”. כלומר, הקבצים נמצאים בסביבת ה- Staging ומוכנים להעברה ל- Repository המקומי.
הם מסומנים בירוק ומצויין ליד כל אחד מהם new file. במהלך העבודה נוכל להוסיף עוד קבצים וספריות.
להעברת הקבצים האלה ל- Repository המקומי, נשתמש בפקודה git commit בצירוף label כלשהו שיתן תיעוד כלשהו לפעולה. למשל:
git commit -m "my first commit to git"
הרצת הפקודה תציג לנו את הפלט הבא.

אם נציג כרגע את הסטטוס נראה שאין קבצים חדשים / ששונו וכו’ שניתן להוסיף ל- Repository.

אם נשנה קובץ בספרייה המקומית (למשל את Program.cs) ונציג שוב סטטוס, נראה שהוא מופיע כקובץ ששונה. אנחנו יכולים להעביר אותו לסביבת ה- Staging ע”י git add, או להשאיר אותו כרגע בסביבת העבודה.

ע”י שימוש בפקודה git log נוכל להציג את לוג השינויים שיש לנו ב- Repository:

נשים לב כי שם המשתמש וכתובת המייל שלו מוצגים כאן בלוג. אלו הפרטים שהגדרנו מוקדם יותר במדריך Git על Windows.
סיכום
בפרק הראשון של מדריך Git על Windows ביצענו התקנה של Git על Windows, הגדרנו הגדרות ראשוניות וראינו דוגמא לעבודה מול Repository מקומי. בפרקים הבאים נלמד על העבודה עם GitHub, נכיר את AppHarbor ונראה איך עובדים איתם באמצעות Git.