שמונה עשרה תרגילי גיט כדי להבין איך עובדים עם Remotes
לא מזמן פרסמתי פה סידרה של שמונה עשרה תרגילי גיט שמתרגלים עבודה עם קומיטים וענפים על מכונה מקומית וכבר חודש שאני מחפש הזדמנות לכתוב את החלק השני של הרשימה - תרגילי גיט שיעזרו לנו להתאמן על עבודה עם Git Remote Repositories.
1. 18 תרגילי גיט על עבודה עם מאגרים מרוחקים
צרו מאגר ריק (Bare Repository) בתיקיה חדשה על המחשב שלכם
צרו Clone של המאגר בתיקיה בשם clone1
צרו קובץ חדש ב clone1, בצעו קומיט, ואז שנו אותו כמה פעמים והמשיכו לעשות קומיטים. בסוף הפעילו push כדי לדחוף את כל הקומיטים למאגר. בצעו את אותו דבר ב branch חדש ודחפו גם אותו.
וודאו שאתם מצליחים לראות את כל הקומיטים והענף החדש במאגר הריק המקורי.
צרו Clone חדש של המאגר בתיקיה בשם clone2. עכשיו יש לנו שני משתמשים שעובדים על מאגר משותף. וכל זה בלי גיטהאב.
צרו קומיט ב clone1, דחפו אותו למאגר המשותף והפעילו pull מ clone2.
צרו קומיט ב clone1, דחפו אותו ואז ב clone2 הפעילו
fetch
ואזmerge
ידנית.צרו קומיט חדש ב clone1 וקומיט אחר ב clone2. הפעילו push מ clone1 ו fetch מ clone2, ואז השתמשו ב merge כדי למזג את השינויים ל clone2. דחפו למאגר את התוצאה ומשכו אותה מ clone1.
צרו קומיט חדש ב clone1 וקומיט אחר ב clone2. הפעילו push מ clone1 ו fetch מ clone2, ואז השתמשו ב rebase כדי למזג את השינויים ב clone2. אחרי שהכל במקום הפעילו push ו pull כדי לסנכרן את שני העותקים.
חזרו על סעיפים 8 ו-9, הפעם השתמשו ב
git pull
ובgit pull --rebase
בהתאמה במקום בfetch
.צרו ענף חדש ב clone1, צרו קומיט בענף זה ודחפו למאגר. הפעילו
fetch
מ clone2. האם אתם יכולים לראות את הענף החדש?ב clone1 תקנו את הודעת הקומיט של הקומיט האחרון עם
git commit --amend
. הפעילוpull
בclone2
. האם אתם יכולים לראות את השינוי? האם משהו נשבר?עכשיו הגיע הזמן לשבור דברים:
- עברו לענף main בשני העותקים
- ב clone1 צרו קומיט ודחפו
- ב clone2 הפעילו pull, צרו קומיט חדש ודחפו
- עכשיו ב clone1 תקנו את הודעת הקומיט האחרונה עם
git commit --amend
. - ב clone2 הפעילו
pull
- מה קרה?
תקנו את הקונפליקט שנוצר, בצעו קומיט ודחפו. אל תפעילו עדיין pull ב clone1. בשני המאגרים הפעילו
git log --oneline --graph
. מה הבעיה שאתם מזהים בהיסטוריה?הפעילו
git pull
ב clone1. הפעילוgit log --oneline --graph
שוב. וודאו ששני המאגרים מסונכרנים ושאותה בעיה בהיסטוריה מופיעה עכשיו בשניהם.חזרו על תרגילים 13, 14 ו 15 אך הפעם השתמשו ב
git pull --rebase
במקום ב pull. מה קרה הפעם?השתמשו ב
git reflog
בתיקייתclone2
כדי למצוא את הקומיט שנעלם לכם בריבייס.Aהשתמשו ב
git cherry-pick
כדי לשחזר את הקומיט הנעלם.
2. הערה על פיתרונות
בפעם הקודמת שפרסמתי רשימה כזאת הרבה אנשים שאלו על פיתרונות. אני לא חושב שפירסום פיתרונות יוסיף לפוסט כזה או יועיל למי שקורא אותו.
הדרך להתיחס לפוסט כזה היא לקחת מפה רעיונות לדברים ששווה לנסות לבד. אם אתם לא יודעים איך להשתמש באחת הפקודות כדי לנסות לבד את התרגיל אז שווה לקרוא עליה. אפשר ורצוי לחפש בגוגל. המטרה היא לא "לדעת" את כל התשובות, אלא לבלות יותר זמן עם רשימת התרגילים הזאת, לבלות יותר זמן במשחק עם גיט ויותר זמן בחיפוש וקריאה על גיט ברשת.