W git, jak usunąć commit z jednej gałęzi i zastosować go do innej gałęzi?
Mam dwie gałęzie od master, każda dla innej funkcji, a następnie mam gałąź syntezy, która łączy te dwie. Zaangażowałem coś w gałąź syntezy, ale teraz widzę, że raczej zastosowałbym tę zmianę do jednej z gałęzi specyficznych dla tej funkcji. Czy jest jakiś sposób na zrobienie tego nieaplikowanego/apply gdzie indziej z Gitem?
2 answers
Cherry-wybierz commit do gałęzi docelowej i zresetuj gałąź źródłową. Zakładając, że chcesz przenieść najnowszy commit z gałęzi source
do gałęzi target
, wykonaj:
git checkout target
git cherry-pick source
git checkout source
git reset --hard source^
Jeśli commit nie był ostatnim, musisz użyć git rebase -i
zamiast ostatniego polecenia i wybrać konkretną nazwę commitu dla twojego cherry-pick
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-20 23:00:20
Ogólnie, gdy zrobię coś takiego, zrobię to:
- Tworzenie odwrotnego pliku łaty przy użyciu git diff (np.
git diff HEAD^ HEAD
) - Zastosuj tę odwrotną łatkę do gałęzi, z której chcę usunąć zmianę.
- Sprawdź gałąź, na której chcę zmienić
- Użyj
git cherry-pick
, Aby zastosować odpowiedni commit
Wierzę, że jest łatwiejszy sposób, ale wolę to, ponieważ używam (i pamiętam) poleceń diff/cherry-pick lepiej
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-20 23:00:44