Dobrý den Ve firmě jsem z TFS přešli na Git. Hlavní repositář je na serveru, kde je repositář bez pracovní verze. Programátoři mají VS2015 s integrovaným nástrojem na git a připojujeme se k repositáři přes UNC cestu. Každý má na svém počítači lokální verzi toho co je na serveru a potom vlastní větve. A problém který nám komplikuje práci. Nástroj, který spojuje změněné soubory se soubory na serveru (nebo v jiné větvi) někdy ignoruje změny a nezapíše je. Uvedu příklad. Já i kolegyně provede nad repositářem SYNC, aby jsme měli aktuální verzi, která je na serveru. Pak si založíme lokální větev, ve které budeme provádět změny a budeme oba měnit ty samé soubory. Když máme vše hotové, tak kolegyně udělá commit změn a pak provede merge s hlavní větví. Vše proběhne bez problému. A změny se sesynchronizují se serverem. Já udělám také commit svých změn. Než udělám merge, tak si udělám se serverem SYNC abych merge prováděl s aktuální verzí, tedy i se změnami, které tam udělala kolegyně. Když dám merge, tak čekám, že dojde ke konfliktům, a zde nastane problém. Visual studio se rozhodne, že všechny změny, které jsem udělal já zahodí, a ke konfliktu dojde pouze v souboru, kde jsme oba změnili stejný řádek. Zde použiji nástroj určený pro merge a ten mi hlásí, že vše co jsem upravil bude zahozeno a zůstane serverová verze a konflikt je pouze u těch společně upravených řádků. Tedy dochází ke stavu, kdy VS zahazuje změny, které jsme udělali, a někdy je dokonce přepíše staršími, když někdo po delší době udělá sync. Dále při přepíná větví, VS hlásí, že některé soubory byly změněny, i-když DIFF nástroj ukazuje že nebyly a GitGui také žádné změny nehlásí. Jedná se o soubory, které jsou ve větvích různé a při přepnutí větve se skutečně musí na disku přepsat verzí v dané větvi. Jsou tyto problémy normální u integrovaného nástroje Git v VS nebo máme něco špatně nastavené?
|