Autor Zpráva
Tori
Profil
Pokouším se trochu zorientovat na GitHubu, a hned se mi povedla chyba, kterou neumím opravit.
Původní adresáře na GitHubu:
projektX/
examples/
libs/

U sebe jsem spustila:

git clone https://github.com/user/ProjektX.git   -- ok
git init   -- myslela jsem, že při klonování se automaticky vytvoří lokální repo, ale ne
git remote -v    -- nevrátilo nic, takže:
git remote add origin https://github.com/user/ProjektX.git
-- u předchozích pokusů jsem měla problémy s non-fast-forward a v nápovědě radili pull, takže:
git pull origin  
  * [new branch]      master     -> origin/master
  You asked to pull from the remote 'origin', but did not specify
  a branch. Because this is not the default configured remote
  for your current branch, you must specify a branch on the command line.
-- ok, takže ještě jednou i s určením větve
git pull origin master   
  * branch            master     -> FETCH_HEAD
git status
# On branch master
# Untracked files:
#    ProjektX/ProjektX/
#    ProjektX/LICENSE
#    ProjektX/README.md
#    ProjektX/examples/
#    ProjektX/libs/
-- tedy se to posunulo o adresář výš, ale to jsem myslela, že je normální
git add *
git commit -m "init"

-- teď jsem zkusila, jestli mi github řekne, že push je v pořádku, ale nejsou žádné změny,
   anebo po xté uvidím "! [rejected]        master -> master (non-fast-forward)"
git push origin master
  Counting objects: 5, done.
  Delta compression using up to 2 threads.
  Compressing objects: 100% (3/3), done.
  Writing objects: 100% (3/3), 636 bytes, done.
  Total 3 (delta 1), reused 0 (delta 0)
  To https://github.com/user/ProjektX.git
    123456..123456  master -> master

-- to vypadalo ok, ale výsledkem na githubu je:
projektX/
  - nějaké soubory
  - projektX/
    - nějaké soubory
  - examples/
  - libs/
examples/
libs/
Prostě celý adresář se nakopíroval ještě jednou. Co se s tím dá udělat? Pomůže mi amendovat lokální commit, vyházet ty duplicity, a pak znovu pushnout na github? Commit z githubu asi smazat nemůžu, že?

Díky moc za případnou radu.
Jan Tvrdík
Profil
Tori:
Já bych se s tím neštval a agresivně bych vyhodil poslední commit.
git reset HEAD^ --hard          # agresivně "zruší" všechny změny ve working directory a změny provedené poslední commitem
git push origin master --force
juriad
Profil
Souhlasím s Jan Tvrdík. Vrať vše zpět.

Vidím problém hned na začátku na 2. řádku. Pokud ti clone nevytvořil lokální repo, tak nějak podivně selhal.
Každopádně, git clone vytvoří nový adresář s repository v aktuálním adresáři.

Lokální repo smaž a znovu ho naclonuj a podívej se do toho adresáře, vsadím svoje boty, že tam adresář ProjectX bude a uvnitř něj projectX, examples, libs.
Tori
Profil
Jan Tvrdík:
Super, to jsem přesně chtěla, děkuju.

juriad:
A potom je lepší nějaké svoje změny dělat v jiné větvi nebo v master? To repo na githubu je fork, chtěla jsem pak poslat pull request.
Jan Tvrdík
Profil
Tori:
chtěla jsem pak poslat pull request
V tom případě určitě do vlastní větve.
Tori
Profil
juriad:
Lokální repo smaž a znovu ho naclonuj a podívej se do toho adresáře, vsadím svoje boty, že tam adresář ProjectX
Vyhráls, ať se ti v nich dobře chodí i nadále. :-)

Kdyby náhodou někdo dělal stejnou blbost, tu je příčina: předpokládala jsem, že to funguje stejně jako init, tj.

~: mkdir somedir
~: cd somedir
~/somedir: git init  <-- vytvoří repo v tomto adresáři
, jenže ono to je takhle:
~: git clone https://github.com/user/someProject.git
~: cd someProject
~/someProject: <-- repo už je tady
Jan Tvrdík
Profil
Tori:
Jenom doplním, že pro naklonování repozitáře do aktuální složky používám:
git clone https://github.com/user/someProject.git .

Vaše odpověď

Mohlo by se hodit

Pokuste se již v titulku uvést název programu související s tématem.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: