Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

GIT - wypychanie zmian

Ostatnio zmodyfikowano 2017-06-28 15:34
Autor Wiadomość
Anim
Temat założony przez niniejszego użytkownika
GIT - wypychanie zmian
» 2017-06-26 13:17:02
Zastanawiałem się, czy odświeżyć poprzedni temat, ale zgodnie z zasadą: jeden problem, jeden wątek; postanowiłem stworzyć nowy temat.

Niestety nadal mam problemy z obsługą gita :( , które pojawiają się mimo czytania tutoriala (zapewne w wyniku marnego zrozumienia ;p). Pozwolę sobie przedstawić problem od początku:

Stworzyłem sobie projekt na jednym komputerze. Korzystając z drugiego komputera, skopiowałem (git clone ssh://__adres__) projekt master/origin na ten drugi komputer. W celu treningu chcę wprowadzić zmiany lokalnie i zatwierdzić je na "komputerze serwerze". Niestety po dokonaniu zmian lokalnych, po próbie zatwierdzenia zmian poprzez commit i wypchnięcie zmian używając polecenia 'git pull', repozytorium oryginalne nie zostało zmienione. Czy ktoś mógłby mi w 4 punktach wypisać, jak się do tego zabrać? Jeśli według Was powinienem przenieść się na forum gita, to zrozumiem i ucieknę tam :D

Pozdrawiam i dziękuję :)
P-162835
maly7
» 2017-06-26 16:17:20
git pull pobiera dane z serwera, żeby wysłać dane na serwer użyj git push.
P-162843
Anim
Temat założony przez niniejszego użytkownika
» 2017-06-28 11:29:21
Cześć ponownie.

Niestety nadal mam problemy ze zrozumieniem działania podstawowych funkcjonalności GIT-a. Pozwolę sobie poniżej napisać co po kolei robię. Byłbym wdzięczny jeśli znajdzie się ktoś kto będzie w stanie mi pomóc.

Sytuacja wygląda tak: Chcę na jednym komputerze posiadać główny, oryginalny projekt. Natomiast na drugim komputerze będę posiadał jego kopie. W tym celu robię tak:

KOMPUTER 1:
- tworzę projekt:
a) git init
b) tworzenie 3 katalogów (źródła, nagłówki, reszta)

i praktycznie zostawiam ten komputer w spokoju.



KOMPUTER 2:

- dodaję adres repozytorium docelowego/oryginalnego (w tym przypadku KOMPUTER 1)
a) git remote add origin ssh://adres_KOMPUTER_1

- klonuję repozytorium
a) git clone origin

- wprowadzam pewne zmiany w pewnym pliku źródłowym (wiem, że powinienem stworzyć nowe gałęzie dl dobrych praktyk, ale póki co chcę zrozumieć działanie):
a) git add -u
b) git commit -m "change..."

- chcę wysłać zmiany do oryginalnej wersji:
a) git push origin master

I teoretycznie wszystko w porządku. Na KOMPUTER_1 po sprawdzeniu:
- git log

zostają wyświetlone zmiany z KOMPUTER_2, ale szkopuł w tym, że wszelkie pliki zostają talkie jakie były, czyli bez wprowadzonych zmian. Dlaczego? Czy powinienem to jeszcze łączyć (polecenie fetch/merge lub pull?) A jeśli tak to dlaczego?... Czy git musi działać w połączeniu z GitHubem? lub z podobnym serwerem? Nie mogę używać gita w taki sposób jak ja chcę? Czyli jeden komputer "serwerowy" a reszta w sieci jako lokalne gałęzie? Proszę o pomoc. Dziękuję.



//EDIT

Dobra... Jestem na etapie, że udało mi się "zatwierdzić" po stronie serwera i otrzymać wynik końcowy... Jednak jest to dość karkołomne rozwiązanie (chyba). Otóż, aby móc widzieć na KOMPUTER_1 nowe pliki muszę zrobić dodatkowo:

- git reset HEAD <fileName>
- git checkout -- <fileName>

Ale chyba nie o to chodzi, abym musiał zatwierdzać drugi raz zmiany na KOMPUTER_1, skoro stwierdziłem, że KOMPUTER_2 daje dobre zmiany? ^^ Jak zrobić, aby zmiany dokonywały się automatycznie?
P-162904
Anim
Temat założony przez niniejszego użytkownika
» 2017-06-28 14:37:45
//EDIT 2


Teraz to już niewiele rozumiem. Obawiam się, że mam zbyt dużą naleciałość z SVN-a

Bo wiem, że ta metoda zatwierdzania zmian, którą stosuję powyżej jest karkołomna. Jednak w międzyczasie stworzyłem na KOMPUTER_1 (mój tz. serwer) dodatkową gałąź. I po zatwierdzeniu jakichś zmian na KOMPUTER_2 i wysłaniu ich w świat (push) okazało się, że gałąź master "na serwerze" zatwierdziła się sama. Jednak, gdy przerzuciłem się na gałąź master, to znowu zmiany nie dokonują się "automatycznie". Dlaczego tak się dzieje? Dlaczego, gdy w trakcie komitowania z KOMPUTER_2 chcę, aby zmiany pojawiły się na KOMPUTER_1 nie mogę zajmować się gałęzią master? Dziwna dla mnie kolejność -> 1) zmień gałąź na mniej ważną, 2) wrzuć commit na innym komputerze 3) commit na serwerze robi się automatycznie 4) dokonaj pomiędzy gałęziami serwera polecenie 'merge'...

Czy w GICIE można w ogóle cokolwiek traktować jako serwer? Czy wszystkie komputery w sieci są "jednakowo równe", a gałęzie oznaczone jako master mają znaczenie priorytetowe?


Ps.: Przepraszam, nie miało iść jako nowa wiadomość ;p
P-162910
Monika90
» 2017-06-28 14:53:09
Mnie dziwi że w ogóle udało ci się zrobić push do aktywnego brancha w zdalnym repozytorium, bo mi git na to nie pozwala. Może mam starego gita.
P-162911
Anim
Temat założony przez niniejszego użytkownika
» 2017-06-28 15:09:52
No pozwolił ;p poprzez wykonanie tych dwóch komend, o których wspomniałem...


Czyli dobrze zrozumiałem, że nie jest łatwo push'owac do aktywnej gałęzi ;p Dobrze. A jak to jest w takim razie z 'projektem matką' ? Rozumiem, że każdy ma na swoim komputerze kopię projektu i dodatkowo migawki. Ale przecież "musi" być jakieś miejsce "serwer" ^^ (czy nie ? ^^) Czy to jest tylko umowne? Czyli tam gdzie wypuszczam push'em to tam jest serwer dla mojego projektu? A jeśli tak, to czy On też potrzebuje też jakiejś "fałszywej - nieaktywne" gałęzi, żeby można było aktualizować projekt?

W takim razie jeszcze inne pytanie. Czy istnieje możliwość wypuszczenia w świat plików z gałęzi potomnej? Czy zawsze trzeba najpierw łączyć zmiany lokalnie ze swoją gałęzią master i następnie dopiero zrobić push?
P-162912
Monika90
» 2017-06-28 15:21:00
chodzi o to że u mnie nawet git push nie zadziała w takiej sytuacji

remote: error: refusing to update checked out branch: refs/heads/master
To C:/temp/git/test1
 ! [remote rejected] master -> master (branch is currently checked out)

Myślę że normalnie to na serwerze tworzysz repozytorium bez drzewa roboczego
git init --bare

A potem klonujesz je i możesz robić commit i push do woli, ale w katalogu na serwerze tych plików nie będziesz widział, one będą tylko w repozytorium.
P-162913
Anim
Temat założony przez niniejszego użytkownika
» 2017-06-28 15:34:07
Aaaa.... to już wiem czego brakuje u mnie... polecenie --bare :) Jutro do tego wrócę i mam nadzieję, że wtedy wszystko będzie dla mnie jasne. Dziękuję Tobie :) Mam nadzieję, że nie będę musiał więcej jutro pytać ^^

To w takim razie faktycznie może być kwestia wersji gita, bo u mnie nie ma problemu z wypychaniem nowych wersji.

Raz jeszcze dziękuję.
P-162914
« 1 »
  Strona 1 z 1