GitHub tylko z poziomu VisualStudio i strony repozytorium

0

Właśnie zacząłem nieśmiało korzystać z GitHuba. Generalnie pisze niezawodowo, na dwóch kompach w domu (w zależności który jest wolny) i dodatkowo na trzecim w pracy. synchronizacja w domu poprzez OneDrive była wystarczająca ale do synchronizacji z kompem w pracy to już chodził pendrive, i to już było meczące. Właśnie przełamałem się i zacząłem testować GitHuba. bez problemu idzie mi już:

  • pobranie repozytorium z ostatniego commita z GitHuba
  • wypchniecie zmian kodu do głównej gałęzi (master)

Czyli mam już wspólna lokalizacje gdzie mam zawsze dostęp do najświeższej wersji projektu z każdego z 3 kompow.

Teraz zaciąłem się i nie wiem jak ogarnąć:
1. jak pobrać wcześniejszy commit, czyli cofnąć się do poprzedniej wersji projektu (rozumiem ze się da i potem edytując kod od tego momentu automatycznie wypchnę zmiany do innej gałęzi skoro w tej samej jest już inny ciąg dalszy))
Teraz otwieram repozytorium bezpośrednio ze strony klikając otwórz w VisualStudio lub otwierając VisualStudio i klonując repozytorium z GitHuba.
widzę w VisualStudio okna "repozytoriom git" i "historie zmian" ze wszystkimi commitami ale nie mam pojęcia jak pracować na poprzednim commicie, klikając na poprzednie commity wyskakują mi różnice miedzy tymi commitami ale projekt jest zawsze otwarty jako ostatni commit.?

2. jak rozgałęzić projekt? i przełączać wypychanie zmian miedzy gałęziami tzn. chodzi mi o taki przypadek, robię w masterze projekt wersje podstawowa zakończoną commitem "finalna_v1". teraz otwieram ja, zaczynam pracować nad kolejna funkcjonalnością i z postępów prac nad nią chce je wypchać na równoległą gałąź np. "funkcjonalnosc_1" i dopiero jak ukończę tą funkcjonalność to chce ponownie wypchnąć finał prac do mastera jako "final_v2". funkcjonalność 2, chciałbym rozwijać w 3 równoległej gałęzi i dopiero finał prac wypchnąć do mastera.

z tym mam problem bo na testowym projekcie próbując z innymi gałęziami "gubie" zmiany, tworzy mi się jakiś chaos i nie wiem jak to poprawnie robić.

prośbę mam o podpowiedzi jak to robić z użyciem tylko VisualStudio i strony GitHub. nie chce wchodzić w dodatkowe oprogramowanie czy konsole - do użytku niezawodowego wydaje mi się ze można to zrobić w VS.

2
  1. Jak jestes w historii to klikasz prawym na commit, dajesz new branch, wpisujesz nazwe, upewnij sie ze masz zaznaczony "checkout branch" i dajesz Create
  2. Jak rozgalezić? No najlepiej przez użycie gałęzi :D podobnie jak wyzej, tworzysz gałąż na podstawie jakiegos commita, commitujesz co chcesz. Na koniec robisz Merge do mastera.

Ale generalnie. Olej te VS. Ogarnij podstawy. Potem wybierz narzędzie które jest stricte do Gita (konsola, SourceTree, itd - jest tego troche.) Bo inaczej to co chwile bedziesz sie odbijał ze czegos nie bedziesz mógl zrobic i skonczy sie na utworzeniu nowego repo :D Polecam ci te książke:
https://helion.pl/ksiazki/git-rozproszony-system-kontroli-wersji-wlodzimierz-gajda,gitroz.htm#format/e
U mnie mocno pomogla mimo ze jakies doswiadczenie z gitem juz mialem.

0

ok @kzkzg dzięki, jeszcze tylko jedno mi nie wychodzi albo czegoś nie rozumiem.
jak Merge'uje, rozwijana funkcjonalność w branch'u "obok" do mastera to do mastera dodaje mi wszystkie commity z tego brancha - tak ma być? tak to działa? spodziewałem się dosłownie przeniesienia jednego w wersji finalnie skończonej commita do mastera a teraz ciągnie mi cala gałąź.

2

Jak chcesz miec jeden commit po mergu to najpierw zrob na galezi rebase do jednego commita. Albo zrob merge razem z --squash . Ale nadal, nie wiem czy da rade to zrobic w VS

1
Varran napisał(a):

ok @kzkzg dzięki, jeszcze tylko jedno mi nie wychodzi albo czegoś nie rozumiem.

jak Merge'uje, rozwijana funkcjonalność w branch'u "obok" do mastera to do mastera dodaje mi wszystkie commity z tego brancha - tak ma być? tak to działa?

Tak, domyślnie Git robi fast-forward merge, czyli próbuje zachować liniową historię.

spodziewałem się dosłownie przeniesienia jednego w wersji finalnie skończonej commita do mastera a teraz ciągnie mi cala gałąź.

No to lepiej użyj merge ze squashem.

Ogólnie spróbuj GitExtensions, jest może brzydkie, ale ma wszystkie ficzery Gita i moim zdaniem jest znacznie bardziej intuicyjne niż obsługa wbudowana w VS.

0

Dzięki za podpowiedzi.
(Na razie walczę tylko z poziomu VS, dopiero jak względnie ogarnę to będę szukał optymalizacji)

Mam jeszcze takie zjawisko. Do tej pory testowałem i uczyłem się czynności "gitowych" na projektach testowych. Względnie już zajarzyłem schemat pracy. Teraz z'upload'owałem swój projekt rzeczywisty żeby już w gicie nad nim pracować.
Ten projekt składa się z czterech podprojektów:

  • projekt główny aplikacji
  • projekt konsolowychTestow
  • projekt WinForm'owychTestow
  • i projekt nUnitTestow
    obraz_2021-12-22_090114.png

** W pracy z tym projektem w gicie, nie kontroluje takich rzeczy:**
1. po sklonowaniu repo po uruchomieniu VS, na dzień dobry mam kilkanaście zmian do zatwierdzenia w master'ze - wszystko w plikach generowanych automatycznie przez VS. Jeżeli nie zatwierdzę tych zmian i nie wypchnę to nie pozwala mi przełączyć się na innego branch'a i zacząć robić cokolwiek - To standardowe zachowanie? teraz radze sobie tak ze dla spokoju wypycham ten commit z komentarzem "startowe smieci 2021-12-22" i działam dalej, trzeba to ogarniać jakoś inaczej?
gitZmiany_naDzienDobry.PNG

2. innym razem, jeżeli próbuje uruchomić VS i sklonować repo nad którym ostatnio pracowałem - nie pozwala mi klonować bo mam to już na dysku lokalnym, wiec otwieram z dysku lokalnego i mam wrażenie w sposób losowy od razu po takim otwarciu albo robię cos jeszcze czego na razie nie wyłapuje - projekt gubi mi projekt startowy - i nie mogę żadnego z tych składowych ustawić jako startowy, zupełnie inne menu jest pod prawym myszy wtedy.
brak setStartup.PNG

Z takimi jak powyżej na razie radze sobie tak ze zawsze lokalne repo kasuje po wypchnięciu wszystkich zmian na GitHub'a, lub podczas ponownego otwierania z VS wskazuje nowy folder pusty dla lokalnego repo i klonuje zawsze z GitHuba swieze. Ale to dziwne, bo tak jakbym w ogóle nie korzystał z lokalnego repo nie wiem czy to dobra praktyka.

Gdzieś wyczytałem ze przy pracy samodzielnej na swoim repo ale z różnych kompow - dobrą praktyką jest zaraz po otworzeniu lokalnego repo wykonanie "Pull" żeby ściągnąć/zsynchronizować zdalne repo z tym otwartym lokalnym. Ale u mnie albo nie pozwala mi wykonać pull bo mam zmiany startowe jak w pkt.1., albo jak zatwierdzę te zmiany śmieciowe na starcie, wypchne je i wykonam pull to tez mi zdarza się losowo usunąć zaznaczenie który projekt jest startowy jak w pkt.2.

Dacie jakąś podpowiedz o co tu chodzi?

0

Ok, mój czeski błąd, w pkt.2 - wystarczy kliknąć dwukrotnie plik solucji (*.sln) i wtedy normalnie się otwiera projekt.

czyli zostaje tylko pytanie z pkt.1. - co z tymi startowymi śmieciami? wypychać dla spokoju i tyle? Czy cos robię nie tak?

2

Jeśli chodzi o punkt 1 to musisz dodać plik '.gitignore' do projektu solucji i w nim decydujesz co GIT ma ignorować.
GitHub w momencie tworzenia repo pozwala wybrać plik w zależności od środowiska w jakimi się pracuje.

0

@mlody_d: ignorowanie tych automatycznie generowanych plików będzie bez szkody dla projektu? wydaje mi się ze mogą być tam ważne zmiany które nie ujęte w commitach mogą doprowadzić do problemow?

a jeżeli będzie to bezpieczne to jakiego typu są to pliki do ignorowania? w GitHubie mam listę plików od sufitu do podłogi i nic mi te typy nie mówią.

da się dodać plik ignore w istniejącym rep? jeżeli tak to gdzie bo nie mogę tego znaleźć.

2

@Varran: Nie powinno być szkodliwe dla samego projektu. Ale najlepiej to sobie przetestuj. W necie możesz znaleźć templatki dla VS, poniżej masz link do przykładu:

https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
https://stackoverflow.com/q/2143956

1

Ja używam tego pliku.

.gitignore

0

@mlody_d: dzięki, z Twoim plikiem spadło z ponad 20 do 12 zmian na starcie, z plikiem z: https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
spadło do 4 zmian na starcie. Pisze głownie na desktop może te pliki są bardziej do Webowych?

Na razie na tym poprzestanę poobserwuje czy to ignorowanie na nic nie wpływa, potem będę ewentualnie jeszcze cos optymalizował. Jeszcze raz dzieki za pomoc. Na razie nie zamykam bo na bank cos jeszcze wyjdzie i będę dopytywał ;).

1
Varran napisał(a):

Dzięki za podpowiedzi.

(Na razie walczę tylko z poziomu VS, dopiero jak względnie ogarnę to będę szukał optymalizacji)

Mistrz nie polecił, żeby unikać niepotrzebnych walek?
Prawdopodobnie tracisz tylko swój czas i nerwy.

Z takimi jak powyżej na razie radze sobie tak ze zawsze lokalne repo kasuje po wypchnięciu wszystkich zmian na GitHub'a, lub podczas ponownego otwierania z VS wskazuje nowy folder pusty dla lokalnego repo i klonuje zawsze z GitHuba swieze. Ale to dziwne, bo tak jakbym w ogóle nie korzystał z lokalnego repo nie wiem czy to dobra praktyka.

No to jest bez sensu, nikt tak nie robi.

Varran napisał(a):

@mlody_d: dzięki, z Twoim plikiem spadło z ponad 20 do 12 zmian na starcie, z plikiem z: https://github.com/github/gitignore/blob/main/VisualStudio.gitignore

spadło do 4 zmian na starcie. Pisze głownie na desktop może te pliki są bardziej do Webowych?

.gitignore to nie jest magia, to po prostu lista plików i katalogów, których Git nie będzie śledził. Możesz tam dodawać swoje rozszerzenia i ścieżki według uznania. Na pewno nie chcesz trzymania w repozytorium gita niczego generowanego automatycznie ani lokalnych ustawień IDE. Co jeszcze jest zbędne, to już Ty musisz stwierdzić patrząc na te niechciane zmiany.

0

Dla porządku zostawiam tu to tak: ciepły materiał sprzed godziny ;)

0

Na komputerze "A", do swojej solucji dodałem w jednej gałęzi projekt z innej solucji - "MatrixLib".
Nie jest uwzględniony jako ten do wypchnięcia na GitHUBa, tzn git nie wyłapuje tej zmiany i czy go dodam czy usunę, zachowuje się tak jakbym nie wprowadzał żadnych zmian w projekcie.
Miałem dziwne problemy z nim jeżeli chodzi o widoczność niektórych klas z tego projektu (nadal nie rozwiązałem tego), ale teraz widzę ze projekt różni się od pozostałych brakiem niebieskiej kłódki

Co znaczy że jakiś projekt jest zaewidencjonowany (ma niebieska kłódkę) i jak ten mój "MatrixLib" zaewidencjonować?

obraz_2022-05-04_175240557.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1