Git konflikty u jedynego developera.

0

Hej, mam dość spory problem z gitem. Mianowicie, projekt posiada tylko jednego developera który wypuszcza po kolei kolejne funkcjonalności:

git add file
git commit -m "Some description"
git push origin HEAD:kategory/branch
git pull --rebase=false

Problem wygląda tak:

Załóżmy że wypchnął w ten sposób trzy funkcjonalności na gita.
Nie pokazuje by którakolwiek miała konflikt z masterem na gitlabie.
Następnie, gdy próbuje się zrobić merge do developa, to pierwsza idzie w porządku, kolejne mają już konflikty. Czy ktoś wie może dlaczego tak się może dziać, albo potrzebuje jakieś 'odczyty z gita' żeby móc to ustalić? Byłbym bardzo wdzięczny za jakieś rady, bo ciągłe naprawianie konfliktów które jeszcze w dodatku czasem występują przy próbie naprawienia jedną metodą, czasem inną itd. to już po prostu irytuje, ja rozumiem konflikty między różnymi developerami, ale jeden sam ze sobą, to już masakra.

0

Ale to są pushe na 3 różne branche? I potem co do czego chcesz mergować?

2

Bardzo prosto to można zrobić nawet lokalnie:

echo foo >> file
echo bar >> file
git add file
git commit -am commit-1

# Tworzymy gałąź ze zmianą
git checkout -b branch
sed -i '' 's/bar/baz/' file
git commit -am commit-2

# Na masterze zmieniamy tą samą linijkę
git checkout master
sed -i '' 's/bar/quux/' file
git commit -am commit-3

# Robimy merge i jest konflikt
git merge branch

Czyli inaczej mówiąc, nawet jak jesteś sam i w 2 różnych branczach zmienisz tę samą linijkę, to będziesz miał konflikt.

4

Konflikty są czasami nie do uniknięcia. Załóżmy że jest takie wywołanie funkcji:

foo(1, 2, "test");

na jednej branczy trzeba dodać kolejny parametr:

foo(1, 2, "test", false);

a na innej zmienić jeden z istniejących:

foo(1, 4, "test");

Wynikowy merge prawdopodobnie (choć nie jest to pewne) powinien wyglądać tak:

foo(1, 4, "test", false);

ale tego już Git sam nie zrobi, a nawet nie powinien. Nie wnika w składnię danego języka, a tym bardziej w logikę programu. Takim przypadkom powinien przyjrzeć się programista.

1 użytkowników online, w tym zalogowanych: 0, gości: 1