2016-01-09 36 views
17

Próbuję zmienić nazwę pracy kolegi.Awaria git rebase

Po pierwsze, mam mnóstwo konfliktów gdzie < < < < < głowy szwów zawierających nowy kod.

Następnie po jakimś czasie pojawia się następujący błąd:

fatal: update_ref failed for ref 'refs/heads/dev_504': 
cannot lock ref  'refs/heads/dev_504': ref refs/heads/dev_504 is at 
XXXXXXX 
but expected  XXXXXXXX 
Could not move back to refs/heads/dev_504 

Następnie, jeśli staram się mimo to w dalszym ciągu pojawia się następujący błąd:

fatal: cannot resume: .git/rebase-apply/final-commit does not exist. 

Jak mogę rozwiązać ten tak więc rebase wygrane czy dajesz błąd?

+5

zajrzyj na http://stackoverflow.com/questions/3685001/git-how-to-fix-corrupted-interactive-rebase. może pomóc –

+5

Czy próbowałeś zacząć od nowa po 'git rebase --abort'? – dahlbyk

+1

jakie było pierwsze polecenie, którego użyłeś? –

Odpowiedz

-2

Upewnij się, że wprowadzono zmiany i zmiany wprowadzone przez współpracownika.

Jeśli chcesz zmiany kolegi utrzymują się na Ciebie, możesz po prostu zrobić,

git rebase < your branch > < another_branch >

Else

git rebase < another_branch > < your_branch >

-2

Gdy aktualizujesz swój lokalny oddział z innego oddziału, należy rozwiązywać konflikty wybierając między modyfikacjami i ich modyfikacjami. Po rozwiązywania konfliktów można kontynuować podścielanie pisząc to polecenie git:

git rebase --continue

W przypadku, gdy chcemy przerwać swoje działanie przebazowania można napisać to polecenie git:

`git rebase --abort` 
5
  • Możesz uruchomić git rebase --abort, aby całkowicie cofnąć bazę danych. Git zwróci cię do stanu twojego oddziału, tak jak przed wywołaniem git rebase.

  • Możesz uruchomić git rebase --skip, aby całkowicie pominąć zatwierdzenie. Oznacza to, że nie zostaną uwzględnione żadne zmiany wprowadzone przez problematyczne zatwierdzenie. Bardzo rzadko wybierasz tę opcję.

  • Możesz naprawić konflikt.

  • W przeciwnym razie należy ponownie utworzyć oddział lub można usunąć katalog .git/rebase-merge, który zawiera stan rebase.

2

Widocznie gałąź, na której chcesz rebase, został również rebased między czasie odgałęziana, może czyszczenie historii w górę lub przebazowania na kolejny oddział.Jeśli tak, to musisz:

  • przerwanie, obecny bałagan: git rebase --abort
  • być obecny: git fetch
  • obecnie interesująca część:

    git rebase --onto BUDDY_BRANCH YOUR_BRANCH~ YOUR_BRANCH

np ty rozgałęzione z lokalnym mistrza (kasie pochodzenia/Master), nowy oddział test_branch (które teraz chcą uaktualnić z bieżącej pochodzenia/Master)

git rebase --onto master test_branch~ test_branch 

Co to robi to w prostych słowach , zajmuje początkowe zatwierdzenie nadrzędne dla twojego oddziału, wyszukuje jego odpowiednik w bieżącym wzorzec i bazuje na tym podstawie.