GIT: Tworzenie zdalnego repozytorium


(pocolog) #1

Wiem, że temat nie nadaje się do tego działu, ale uznałem że tutaj najszybciej i najkonkretniej otrzymam pomoc.
Mam lokalne repo i chciałem z niego utworzyć zdalne, tak aby zachować całą historię zmian. Jak to zrobić, bo kiedy przekopiuję po prostu katalog .git/ to przy próbie wypchnięcia zmian dostaję błędy, więc nie robię tego prawidłowo.


(nThou) #2

Eeee… chodzi ci o przeniesienie lokalnego projektu do gita? Hmmm… to może wejdź do konsoli, idź do folderu z projektem, i tam kolejno.

git init
git add .
git status
sprawdzasz czy wszystko się dodało
git commit -m “tutaj wiadomość, np. Projekt Apollo13 do nawigacji międzyplanetarnej”
git push


(pocolog) #3

Nie, chodzi mi o utworzenie z lokalnego projektu zdalnego repozytorium.


(nThou) #4

No dobrze, spróbuję jeszcze raz XD Stworzyłem na pulpicie projekt, dodałem dwa pliki i zrobiłem tak

cd /mnt/c/User/Administrator/Desktop/Project
git init
git add .
git commit -m “test”

Poszedłem do mojego gita, utworzyłem repo test2

git remote add origin https://github.com/marsek/test2.git
git push --set-upstream origin master
Username for ‘https://github.com’:
Password for ‘https://marsek@github.com’:
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 226 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/marsek/test2.git

  • [new branch] master -> master
    Branch master set up to track remote branch master from origin.

Jak wejdziesz w link to możesz zobaczyć że repo utworzone, i tam lokalne pliki


(pocolog) #5

Ale utworzeniem zdalnego repo zajął się chyba w tym wypadku github? Ja potrzebuję go zrobić we własnej lokalizacji, bez wykorzystywania portali tego typu.


(hindus) #6

https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/

Czyli interesującą Cię komendą będzie git remote add origin <remote repository URL>


(nThou) #7

W tym linku jest to samo co napisałem wyżej co koledze, z tego co zrozumiałem, nie pasuje i nie mam pojęcia o co mu chodzi -_-


(pocolog) #8

Dobrze spróbuję tak że zainicjuję puste repo w lokalizacji zdalnej i wypchnę tam swój projekt. Potrwa to długo i mam nadzieję że ze wszystkimi zmianami historycznymi :wink:

Ja wiem jak dodać adres zewnętrznego repo, wiem jak zainicjować nowe repo, wiem jak wypchnąć zmiany. Chodziło mi o to jak zainicjować zdalne repo mając już na serwerze cały projekt. No ale jeśli robi się to tak jak lokalne to chyba wiem wszystko.


(nThou) #9

To może git submodule? Nie używałem więc nie wiem jak działa w 100%


(hindus) #10

Na jakim serwerze?


(pocolog) #11

Ok, wypycha się. Wygląda na to że przekombinowałem ze względu na niezrozumienie działania :wink: . Wystarczyło zainicjować puste repozytorium w zdalnej lokalizacji i tam popchnąć. Wychodzi na to, że mogę tak potraktować każde repozytorium i np wypchnąć projekt zamiast na serwer to do kolegi.
Człowiek całe życie się uczy :wink:

edit.
Jednak błąd :confused:
Czy ktoś mi to może przetłumaczyć na ludzki?

Counting objects: 9518, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4122/4122), done.
Writing objects: 100% (9518/9518), 1.12 GiB | 3.73 MiB/s, done.
Total 9518 (delta 5341), reused 9450 (delta 5306)
remote: Resolving deltas: 100% (5341/5341), done.
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: is denied, because it will make the index and work tree inconsistent
remote: with what you pushed, and will require 'git reset --hard' to match
remote: the work tree to HEAD.
remote: 
remote: You can set 'receive.denyCurrentBranch' configuration variable to
remote: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: its current branch; however, this is not recommended unless you
remote: arranged to update its work tree to match what you pushed in some
remote: other way.
remote: 
remote: To squelch this message and still keep the default behaviour, set
remote: 'receive.denyCurrentBranch' configuration variable to 'refuse'.

(Fizyda) #12
  1. Lokalne repo:
    git init
    some changes
    git add .
    git commit

  2. Przygotowanie zdalnego repo
    git init --bare

  3. Podpięcie lokalnego repo do zdalnego
    git remote add nazwazdalna adres/zdalnego/repo

  4. Synchronizacja zdalnego repo względem lokalnego
    git push nazwazdalna nazwabrancha
    ewentualnie:
    git push nazwazdalna --all

Więcej opisów i informacji: https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server

Zdalne repo do którego się pushuje różni się od lokalnego tym, że nie zawiera head ponieważ ono tylko przechowuje zmiany i nie potrzebuje wskaźnika na aktualny “stan”. Dlatego trzeba je utworzyć trochę inaczej niż lokalne.