Jak przekonwertować istniejący niepusty katalog na katalog roboczy Git i wypchnąć pliki do zdalnego repozytorium


644
  1. Mam niepusty katalog (np. / Etc / coś) z plikami, których nazwy nie można zmienić, przenieść ani usunąć.

  2. Chcę sprawdzić ten katalog w git na swoim miejscu.

  3. Chcę być w stanie przekazać stan tego repozytorium do zdalnego repozytorium (na innym komputerze) za pomocą „git push” lub czegoś podobnego.

Jest to trywialne przy użyciu Subversion (obecnie robimy to przy użyciu Subversion) przy użyciu:

svn mkdir <url> -m <msg>
cd <localdir>
svn co <url> .
svn add <files etc>
svn commit -m <msg>

Co to jest odpowiednik git?

Czy mogę „sklonować git” do pustego katalogu i po prostu przenieść katalog .git i wszystko działa?


5
Może po prostu tego nie rozumiem, ale nie możesz po prostu uruchomić git initw lokalnym katalogu?
Philipp

Czy masz na myśli, że masz repozytorium gdzie indziej i chcesz do niego dodać całą zawartość tego innego katalogu, który nie jest repozytorium? A może po prostu próbujesz utworzyć nowe repozytorium w tym katalogu?
Cascabel

Wiele odpowiedzi wspomina o github, ale samo pytanie dotyczy git. github nie jest gitem i nie jest centrum wszechświata git.
vfclists

Odpowiedzi:


1055

Biorąc pod uwagę, że masz skonfigurowanego demona git <url>i puste repozytorium:

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin master

12
instrukcje abyx wydają się działać. Czy mam teraz uruchomić: git config branch.master.remote origini git config branch.master.merge refs/heads/master to, co skończę, będzie dokładnie takie samo, jak gdybym sklonował zdalne repozytorium? tzn git pulli git pushbędzie po prostu pracować ?
HMW

34
To również działało dla mnie. Musiałem najpierw stworzyć projekt AppNamew GitHub. Nie było dla mnie jasne, jakie dokładnie <url>środki. Tak więc dla tych, którzy mają to samo pytanie, po prostu korzystamy z GitHub.com, nie uruchamiamy naszego repozytorium, a wtedy ten <url>używany w 5. linii wyglądał https://github.com/CompanyName/AppName
Bart

12
Jeśli konfigurujesz repozytorium, które nie jest w GitHub, pamiętaj, aby użyć „git --bare init”, aby skonfigurować puste zdalne repozytorium, a nie „git init” (tak jak ja), w przeciwnym razie wypychanie nie powiedzie się.
jdusbabek

3
Chciałem tylko dodać, że nie mogłem naciskać, dopóki nie zrobię: git pull --rebase
Artemix,

6
Jeśli git odrzuci, ponieważ pilot zawiera niewielkie zmiany (.README, .gitignore itp.), Spróbuj git pull origin master --allow-unrelated-historieswykonać scalenie.
karlisup

80

Tak właśnie robię. Dodałem wyjaśnienie, aby zrozumieć, co się do cholery dzieje.

Zainicjuj lokalne repozytorium

  • najpierw zainicjuj Git za pomocą

    git init

  • Dodaj wszystkie pliki do kontroli wersji za pomocą

    git add.

  • Utwórz zatwierdzenie z wybraną wiadomością

    git commit -m 'AddingBaseCode'

Zainicjuj zdalne repozytorium

  • Utwórz projekt w GitHub i skopiuj adres URL swojego projektu. jak pokazano niżej:

    wprowadź opis zdjęcia tutaj

Połącz zdalne repozytorium z repozytorium lokalnym

  • Teraz użyj skopiowanego adresu URL, aby połączyć lokalne repozytorium ze zdalnym repozytorium GitHub. Po sklonowaniu repozytorium za pomocą git clone automatycznie tworzy zdalne połączenie o nazwie origin, wskazujące z powrotem na sklonowane repozytorium. Zdalne polecenie służy do zarządzania zestawem śledzonych repozytoriów.

    git zdalnie dodaj pochodzenie https://github.com/hiteshsahu/Hcium-Word.git

Synchronizować

  • Teraz musimy połączyć kod lokalny ze zdalnym kodem. Ten krok jest krytyczny, w przeciwnym razie nie będziemy mogli wypchnąć kodu na GitHub. Przed wypchnięciem kodu musisz wywołać „git pull”.

    git pull master master --allow-nonrelated-histories

Zatwierdź swój kod

  • Wreszcie wypchnij wszystkie zmiany w GitHub

    git push -u origin master


1
Wykonałem „git pull” jak opisano w tym poście i otrzymałem błąd. Kontynuowałem „git push”, który został zaakceptowany, a kiedy przechodzę do Bonobo Git Server, widzę teraz zmianę. Dzięki za ten post z jasnymi objaśnieniami do polecenia GIT.
schlebe

Co to znaczy: „i skopiuj adres URL swojego projektu i skopiuj adres URL projektu.” Czy to błąd w pisaniu, czy próbujesz mówić o dwóch różnych adresach URL, czy?
gwideman

To błąd typografii, wystarczy skopiować adres URL projektu, jak pokazano na
zrzucie

2
To jest poprawna odpowiedź i powinna być zaakceptowana. W zaakceptowanej odpowiedzi brakuje kroku „Synchronizuj”.
Ilan

28

Oto moje rozwiązanie:

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

Dobre rozwiązanie, jeśli skonfigurujesz zdalne repozytorium za pomocą .gitignore&README.dm
Hattori Hanzō

12

Jeśli zdalne repozytorium nie jest puste (tak jest w przypadku korzystania z IBM DevOps na hub.jazz.net), należy użyć następującej sekwencji:

cd <localDir>
git init
git add -A .
git pull <url> master
git commit -m "message"
git remote add origin <url>
git push

EDYCJA 30 stycznia 17: Proszę zobaczyć komentarze poniżej, upewnij się, że jesteś na właściwym repo!


Powyższe polecenia usunęły wszystkie moje istniejące kompilacje :( Zachowaj ostrożność przed wykonaniem powyższych kroków
Selenium Framework

7

Kiedy repozytorium github nie jest puste, takie jak .gitignore i licencja

Użyj pull --allow-niepowiązanych historii i push --force-with-leasing

Użyj poleceń

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/...
git pull origin master --allow-unrelated-histories
git push --force-with-lease

1
Musiałem zmodyfikować to ostatnie zdanie, aby było bardziej podobnegit push -u origin master --force-with-lease
od

2

Najprostszym sposobem na zrobienie tego, co uważam za przydatne, jest poniżej.

To może nie być oficjalny sposób, ale działa dobrze.

Załóżmy, że masz na komputerze projekt o nazwie „ XYZ”. Teraz chcesz zrobić git repo tego projektu na github i korzystać z jego funkcjonalności.

Krok 1 : przejdź do „ www.github.com

Krok 2 : utwórz repozytorium z README.mdplikiem „ ” (nazwij go tak, jak lubisz)

Krok 3 : klonowanie repozytorium na komputerze.

Krok 4 : W sklonowanym folderze otrzymasz dwie rzeczy: .gitfolder „ README.md” i plik „ ”. Skopiuj te dwa do folderu projektu „ XYZ”.

Krok 5 : Usuń sklonowane repozytorium.

Krok 6 : dodaj, zatwierdź i pchnij wszystkie pliki i foldery swojego projektu.

Teraz możesz po prostu użyć swojego projektu XYZjako repozytorium git.


0

Miałem podobny problem. Utworzyłem nowe repozytorium, NIE W KATALOGU, KTÓRE CHCIAŁEM ZROBIĆ REPOZYTORIUM . Następnie skopiowałem pliki utworzone do katalogu, w którym chciałem utworzyć repozytorium. Następnie otwórz istniejące repozytorium za pomocą katalogu, do którego właśnie skopiowałem pliki.

UWAGA: Użyłem github pulpitu, aby utworzyć i otworzyć opuszczające repozytorium.


0

Oto moje rozwiązanie, jeśli utworzyłeś repozytorium z domyślnymi readme filelublicense

git init
git add -A
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.git //Add your username so it will avoid asking username each time before you push your code
git fetch
git pull https://github.com/xyz.git <branch>
git push origin <branch> 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.