2013-08-04 12 views
5

Jakie są zalecane kroki do wprowadzenia zmian w głównej gałęzi za pomocą Eclipse + egit?Jak scalać pliki i zatwierdzać je za pomocą poleceń egit i Eclipse?

Używam Eclipse i svn przez długi czas i wszystko działa pięknie. Ilekroć mam zamiar popełnić zmiany, mój flow jest następujący:

  • Synchronizacja z obszaru roboczego
  • wyszukać konflikty
  • gdy występują konflikty, łączyć ręcznie, a następnie oznaczyć plik jako połączyła
  • aktualizacji
  • popełnić

w rzadkich przypadkach, gdy próbuję popełnić grupę plików bez popełnienia, jestem ostrzeżony o tym i może dobrze popraw te zmiany.

Nawet jeśli aktualizuję pliki, które powodują konflikty, odzyskiwanie plików nie jest złe, ale uważam, że synchronizacja z pierwszym obszarem roboczym w celu identyfikacji i scalania plików z konfliktami jest znacznie lepszym rozwiązaniem niż próba scalenia po aktualizacji. nie powiodło się z powodu konfliktów.

Dzięki temu żaden przepływ, który próbowałem, nie zadziałał prawidłowo. Po pierwsze, jeśli popełniam błąd z serwera i że są konflikty, powiedziano mi, że był konflikt, ale jestem bardzo zdezorientowany: mam problem z pobraniem najnowszego z serwera i nie mogę zatwierdzić moich plików bez względu na to, jak dużo synchronizacji robię. Nawet zastąpienie mojego pliku najnowszym z głowy i wykonanie kolejnego pociągnięcia, a następnie zatwierdzenie, nie wydaje się już działać.

Nawet jeśli stosuję to samo podejście, którego używałem z svn (najpierw synchronizuję i łączę ręcznie pliki z konfliktami) i śledzę drugie z ciągnięciem, nadal otrzymuję te same błędy, o których wspomniałem powyżej, tak jakbym zaznaczał plik jako scalony nie było rozliczane.

Więc ... pusty arkusz papieru, jakie są zalecane instrukcje, gdy wprowadzam pewne zmiany, chcę połączyć je z najnowszym kodem na serwerze (który może zawierać zmiany plików sprzeczne z moim zestawem zmian), oraz opcjonalnie, chcesz zatwierdzić moje zmiany? Wskaźnik do dobrego samouczka jest świetny, jeśli dyskutuje się na temat tego rodzaju problemów.

Odpowiedz

7

Nie jestem pewien, czy dobrze zrozumiałem twoje pytanie. Ale teraz próbuję ci dać kilka wskazówek. Niedawno przekonwertowaliśmy repozytorium naszej firmy z CVS na git, co było sporym wyzwaniem, ponieważ mieliśmy wiele pytań skupiających się na tym samym problemie, na który celujesz.

Przede wszystkim muszę powiedzieć, że pochodząc z SVN lub CVS, nie będziesz w stanie wykonywać swojej pracy tak jak od lat.

Szczególnie praca nad małym zestawem plików i aktualizowanie tylko tych zsynchronizowanych nie działa z git. Oto kroki, które podejmuję podczas synchronizacji (pod względem uzyskania najnowszego z serwera) z naszym git.

  1. Zobowiązuję się. Wczesne zatwierdzenie jest tym, co oszczędza Ci wiele bólu! Nie oczekuj zmian podczas synchronizacji z zdalnym repo, tak jak w przypadku np. Może to spowodować sporo bólu.
  2. I fetch. Z egit możesz umieścić akcję na pasku narzędzi lub nawet utworzyć dla niej skrót, co sprawia, że ​​jest to całkiem wygodne.
  3. Wynik pobrania zostanie wyświetlony w oknie dialogowym.Studiuję zmiany, ponieważ jest to najlepszy punkt, aby to zrobić, na przykład, jak sądzę. Możesz przeczytać wszystkie komunikaty o zatwierdzeniu, a nawet podwójnie je kliknąć, aby otworzyć zatwierdzenie w tle i przestudiować różnicę. Tak, to okno dialogowe nie jest modalne ... więc możesz przenieść je na drugi monitor.
  4. Wykonuję rebase. Co jest podobne do scalania, ale nie pozostawia informacji, od którego momentu zacząłeś swój tymczasowy rozwój. Jest to rodzaj decyzji projektowej podjętej przez moją firmę - preferuję rebase over merge.
  5. W razie konfliktów można użyć narzędzia scalania, aby je rozwiązać. Jest to podobne do synchronizacji z CVS. Pamiętaj, aby zrobić Add to index, ponieważ jest nowy mark as merged. Potem powinieneś wykonać Rebase > Continue, jeśli wykonałeś rebase.
  6. Pcham. I jeśli nikt nie pchnął w międzyczasie, to wszystko.

To jest mój przepływ pracy. Jeśli jest to właściwy kierunek, mogę dodać więcej szczegółów, dlaczego robię kilka kroków, tak jak ja i jak myślę, jak najlepiej to zrobić, używając np..

+0

Czy możesz doradzić, jak przezwyciężyć konflikt w kasie http://stackoverflow.com/questions/18050220/eclipse-egit-checkout-conflict-with-files-egit-doesnt-want-to-continue. Jeśli chodzi o przyszłość, teraz się nauczyłem, powinienem był popełnić to zanim przyniosłem. –

+1

Tak, przyjrzę się temu. Może zająć kilka minut ;-) Ale ten problem jest jednym z powodów, dla których zatwierdzenie przed synchronizacją jest dobrym pomysłem. git daje ci wiele możliwości radzenia sobie z tym commitem, jeśli nie chcesz tego publikować w ten sposób. –

+0

Wiele możliwości jest mylące na początku. Trzeba znać ścieżkę. –

Powiązane problemy