Jeśli nie dokonałeś zmian
Jeśli Twoje zmiany są zgodne z inną gałęzią
Tak jest w przypadku pytania, ponieważ OP chce zatwierdzić nową gałąź i ma również zastosowanie, jeśli zmiany są zgodne z gałęzią docelową bez wyzwalania nadpisania.
Jak w zaakceptowanej odpowiedzi Johna Brodiego, możesz po prostu pobrać nową gałąź i wykonać pracę:
git checkout -b branch_name
git add <files>
git commit -m "message"
Jeśli Twoje zmiany są niezgodne z inną gałęzią
Jeśli pojawi się błąd:
error: Your local changes to the following files would be overwritten by checkout:
...
Please commit your changes or stash them before you switch branches
Następnie możesz schować swoją pracę, utworzyć nową gałąź, a następnie pobrać zmiany w skrytce i rozwiązać konflikty:
git stash
git checkout -b branch_name
git stash pop
Będzie tak, jakbyś wprowadził te zmiany po utworzeniu nowej gałęzi. Następnie możesz zatwierdzić jak zwykle:
git add <files>
git commit -m "message"
Jeśli dokonałeś zmian
Jeśli chcesz zachować zmiany w oryginalnej gałęzi
Zobacz odpowiedź Carla Noruma z selekcją wiśni, która jest właściwym narzędziem w tym przypadku:
git checkout <target name>
git cherry-pick <original branch>
Jeśli nie chcesz zachować zatwierdzeń w oryginalnej gałęzi
Zobacz odpowiedź joeytwiddle na temat tego potencjalnego duplikatu . Wykonaj odpowiednio dowolny z powyższych kroków, a następnie przywróć oryginalną gałąź:
git branch -f <original branch> <earlier commit id>
Jeśli wprowadziłeś zmiany do udostępnionego pilota, takiego jak GitHub, nie powinieneś próbować tego wycofywania, chyba że wiesz, co robisz.