אני לא מבין בכלל מה מסובך בכל מה שרשמת
GIT לא מכריח אותך לסנכרן שום דבר, זו בדיוק הגדולה שלו.   אם אתה מנסה לעבוד עם GIT כאילו הוא מערכת מונולטית, ומה שיש לך במחשב זה ה-"working copy" אז אתה מסתבך.   ברגע שאתה מבין שמה שיש אצלך זה ריפוזיטורי נפרד, ואתה תמיד יכול לבחור בפינצטה מה נכנס אליו ומה יוצא ממנו, הכל מסתדר.   אני לא זוכר את הפקודות, אבל ברוב ה-GUI, וגם ב-Plugin שיש ב-Android Studio למשל, אתה תמיד יכול לסמן V על קבצים שאתה רוצה לדרוס, או להפך - לעשות להם קומיט.   למעשה, ברירת מחדל בקומיטים של GIT היא ששום שינוי לא מועמד להיכנס לקומיט עד שעשיתה לו במפורש ADD. יש כמובן גם אופציה להגיד לו "תיקח את כל הקבצים שהשתנו" לשם נוחות אבל זו לא ברירת מחדל!   סוג הניסויים שדיברתי עליהם זה לא שינויים בקוד שאתה בוחר עם לעשות להם commit או לא, אלא דווקא פעולות ב-GIT עצמו.   אתה רוצה לבדוק מה עושה עכשיו merge או rebase או השד יודע מה. איך אתה בודק את זה מול שרת מונוליטי בלי לסכן את השרת עצמו?   יש עוד יתרון לריפוזיטורי מקומי במקרים מסוימים, וזה כשיש בעיות בגישה לשרת הקוד מעמדות הפיתוח. למשל, בארגון שאנחנו עובדים, יש הבדלה בין רשתות בטעמי אבטחה, ויש כל מיני סיבוכים בשינוע קוד בין עמדות פיתוח לשרת ה-TFS הראשי.   אם היינו עובדים מול מערכת מונוליטית, מפתחים היו מהר מאוד מפתחים נטייה להמעיט בקומיטים, וליצור קומיטים ענקיים שמאגדים כמה משימות נפרדות רק כדי לעבוד פחות מול השרת.   ב-GIT בעיה כזו לא קיימת.   ברור לי שלא כל אחד סובל מסוג ספציפי זה של בעיות, ועדיין, זה עוד יתרון למערכת המבוזרת.