Autor Zpráva
Ivorius
Profil
Potřebuji přenést commity z eshopu A do eshopu B, který ovšem nemá zaveden git a byl od dob fyzické kopie upravován. Oba vychází sice ze stejného fyzického základu, ale logicky nemají žádný společný commit. Chtělo by to asi nejprve nějaké fyzické porovnání souborů. 1) Neví někdo jak na to?

2) Jaké je worklfow pro situaci kdy mám nějakou master verzi aplikace A a budu klonovat aplikace B,C,D.... ve kterých následně budu dělat drobné změny. Jakmile udělám změny v A, budu je chtít zmergovat do ostatních B, C, D. Jediné co mě napadá je to mít ve větvích, ale zase nevím jak udělat aby větve měly samostatné adresáře (používám lokální url pro testování: a.local -> adresář A, b.local > adresář B, atd.)
juriad
Profil
Určitě nechceš mít jednotlivé aplikace v různých adresářích na úrovni gitového repository. Tím by vznikali duplicitní soubory a merge by doslova postrádaly smysl.

Předpokládejme že máš adresáře A, B.
Budeš provádět následující (netestováno):

mkdir repo # vytvoří vedle adresářu A a B nový adresář repo
cd repo # přejde do adresáře repo
git init # inicializuje gitové repository
cp -R ../A/* . #překopíruje obsah eshopu A - toto bude první commit a základ celého repository
git add --all # přidá vše ke commitnutí
git commit -m "eshop A" # commitne obsah eshopu A do větve master
git branch a # vytvoří větev a - aby se osamostanila od masteru
git checkout -b b # přejde do nové větve b
rm -R * # odstraní vše z working directory
cp -R ../B/* . # překopíruje obsah eshopu B
git add --all # přidá vše ke commitnutí
git commit -m "eshop B odvozen z A" # commitne eshop B do větve b; nejspíš bude mít s A hodně společného, takže diff bude mít "trochu smysl"
git checkout master # přejde do masteru

# ukázka merge z masteru do b:
git checkout master # přejde na master
touch nejaky-novy-soubor # vytvoří soubor
git add nejaky-novy-soubor # přidá soubor ke commitnutí
git commit -m "pridan nejaky novy soubor" # commit na větvi master
git checkout b # přejde na větev b
git merge master # zamerguje větev master do větve b
# v b přibyl soubor nejaky-novy-soubor
pak už adresáře A, B nebudeš potřebovat, nahradíš je (odzálohuješ jinam)
více adresářu pro jednotlivé větve budeš simulovat pomocí skriptu git-new-workdir
cd .. # teď jsi v adresáři, který obsahuje jen repo
git-new-workdir repo a.local a # vytvoří working directory a.local podle větve a
git-new-workdir repo b.local b # to samé pro větev b
v adresářích *.local budeš provádět jen: git merge master, git pull a vývoj specifický pro danou branch
hlavní vývoj budeš provádět v masteru v adresáři repo, bez ohledu na to, že existují další větve

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: