Powiedzmy, że mamy następującą sytuację w Git:
Utworzone repozytorium:
mkdir GitTest2 cd GitTest2 git init
Niektóre zmiany w wzorcu mają miejsce i zostają popełnione:
echo "On Master" > file git commit -a -m "Initial commit"
Feature1 rozgałęził master i część pracy została wykonana:
git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit for feature1"
W międzyczasie wykryto błąd w kodzie głównym i utworzono gałąź poprawki:
git checkout master git branch hotfix1 git checkout hotfix1
Błąd został naprawiony w gałęzi poprawek i scalony z powrotem w master (być może po żądaniu ściągnięcia / sprawdzeniu kodu):
echo "Bugfix" > bugfixFile git commit -a -m "Bugfix Commit" git checkout master git merge --no-ff hotfix1
Prace nad funkcją 1 trwają:
git checkout feature1
Powiedz, że potrzebuję poprawki w mojej gałęzi funkcji, być może dlatego, że błąd również tam występuje. Jak mogę to osiągnąć bez powielania zatwierdzeń w mojej gałęzi funkcji?
Chcę zapobiec otrzymaniu dwóch nowych zatwierdzeń w mojej gałęzi funkcji, które nie mają związku z implementacją funkcji. Wydaje mi się to szczególnie ważne, jeśli używam żądań ściągnięcia: wszystkie te zatwierdzenia zostaną również uwzględnione w żądaniu ściągnięcia i będą musiały zostać przejrzane, chociaż zostało to już zrobione (ponieważ poprawka jest już w systemie głównym).
Nie mogę zrobić git merge master --ff-only
: „fatalny: nie można szybko przewinąć do przodu, przerywanie.”, Ale nie jestem pewien, czy to mi pomogło.
git rebase
wydaje mi się czarną magią ....
git branch feature1
i git checkout feature1
mogą być łączone w git checkout -b feature1
4. i mogą być całkowicie zredukowane dogit checkout -b hotfix1 master
feature1
jest całkowicie lokalny, spójrz nagit rebase
.