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?

HMW
źródło
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
abyx
źródło
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

Hitesh Sahu
źródło
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
csomakk
źródło
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!

Romeo Kienzler
źródło
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
Sebastian Oscar Lopez
źródło
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.

Geniusz
źródło
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.

strona
źródło
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> 
Harish Karthick
źródło