Hoe kan ik een schone vertakking starten zonder voorouders en vervolgens bestanden progressief vastleggen?

Ik heb een PHP-framework met GIT-versie en ik ben van plan verschillende (drastische) wijzigingen in de kern ervan te maken.

Wat ik wil doen is aan de nieuwe kern gaan werken in een nieuwe branch, maar aangezien deze verandering misschien ook wat herstructurering van het bestandssysteem vereist, zou ik deze nieuwe branch graag zo schoon mogelijk willen starten.

p>

Ik wil dat de schone vertakking alleen met de kernbestanden wordt opgenomen. Terwijl ik mijn wijzigingen aan het afronden ben, wil ik de rest van de modules van het framework één voor één toevoegen aan de werkdirectory, maar de mogelijkheid behouden om samen te voegen als ik wijzigingen aanbreng in de master.

Hoe kan ik dat doen?


Antwoord 1, autoriteit 100%

Tak zonder voorouders

U wilt de vlag –orphan. Bijvoorbeeld:

git checkout master
git checkout --orphan foo
# Unstage all the files in your working tree.
git rm --cached $(git ls-files)

maakt een nieuwe branch met de naam foozonder voorouders, maar het behoudt de huidige werkboom van de branch waar je op zat toen je het commando aanriep (in dit geval de master tak). Je kunt dan je werkboom aanpassen aan je wensen, en dan een commit doen om de geschiedenis van die branch opnieuw te beginnen.

Incrementele fasering van bestanden

Om incrementele toevoegingen aan je geschiedenis uit te voeren, gebruik je git addom alleen de bestanden te stagen die je wilt voor elke commit. De git-add(1) handleiding heeft dit te zeggen over het selectief toevoegen van bestanden:

Fileglobs (bijv. *.c) kunnen worden gegeven om alle overeenkomende bestanden toe te voegen. Ook kan een leidende directorynaam (bijv. dir om dir/file1 en dir/file2) toe te voegen worden gegeven om alle bestanden in de
directory, recursief.


Antwoord 2

Als je met een oude versie van git moet werken:

mkdir some_dir
 cd some_dir
 git init
 echo a>some_file; git add some_file; git commit -m 'initial commit'
 cd ..
 git fetch ./some_dir/ master:new_independent_branch
 rm -rf some_dir

Antwoord 3

Wat je kunt doen is simpelweg verhuizen naar een nieuwe branch, git co -b my_new_branch, je code opschonen en de dingen behouden die je nodig hebt, en tenslotte committen. Die commit, de eerste op my_new_branch, zou dan een schonezijn.

Other episodes