Список поточных бранчей:
Создать новый бранч, из HEAD поточного и переключиться на него:
Создать новый бранч из указанного, а не поточного
Удалить безопасно бранч, гит удалит его только в тому случае, если мы сделали мердж в master
Если же мы реально осознали, что работа в указанном бранче реально не должна попасть ни в историю, ни в проект, тогда удаляем силой:
Переименовать поточный бранч:
Все это делается для того, чтобы мы в конце концов сомогли сделать:
После этого возможны два варинта событий:
- master:HEAD еще не успел продвинуться дальше, поэтому происходит Fast forward мердж, что означает, что у нас будет ровная история master:HEAD - как буд-то разработка так и велась в master, а не в отдельной ветке.
- уже успели накомитить в master:HEAD, поэтому происходит 3-Way Merge, и при необходимости мы будем решать конфликты, после этого история будет бугристая.
Чтобы было видно бранчевание даже в случае когда не успели накомитить в master, мы можем смерджить со следующим ключом:
Чтобы без сюрпризов и у нас точно не было ненужного ветвеления можем указать так(чаще всего это нужно если мы до этого уже делали --no-ff, или ставили ):
Есчли бранч был создан не только локально но и удаленно, то нужно его удалить удаленно тоже.
Нужно помнить, что когда мы пушим мы неявно делаем следующее:
Но если мы уже удалили локальную бранчу, то так мы сделать не можем потому что ее нет, поэтому мы удаляем удаленную таким образом:
Связать свою локальную бранчу с удаленной:
git branchИли с указанием также на каждый бранеч хеша его последнего комита (HEAD)
git branch -v
Создать новый бранч, из HEAD поточного и переключиться на него:
git branch new_branch_name git checkout new_branch_name # или вариант в одну строку git checkout -b new_branch_name
Создать новый бранч из указанного, а не поточного
git checkout -b new_branch_name existed_local_branch_name
git checkout -b new_branch_name remote_name/existed_remote_branch_name
Удалить безопасно бранч, гит удалит его только в тому случае, если мы сделали мердж в master
git checkout -d existed_branch_name
Если же мы реально осознали, что работа в указанном бранче реально не должна попасть ни в историю, ни в проект, тогда удаляем силой:
git checkout -D existed_branch_name
Переименовать поточный бранч:
git checkout -m new_name_for_curbranch
Все это делается для того, чтобы мы в конце концов сомогли сделать:
$ git checkout master $ git merge already_tested_branch $ git branch -d already_tested_branch
После этого возможны два варинта событий:
- master:HEAD еще не успел продвинуться дальше, поэтому происходит Fast forward мердж, что означает, что у нас будет ровная история master:HEAD - как буд-то разработка так и велась в master, а не в отдельной ветке.
- уже успели накомитить в master:HEAD, поэтому происходит 3-Way Merge, и при необходимости мы будем решать конфликты, после этого история будет бугристая.
Чтобы было видно бранчевание даже в случае когда не успели накомитить в master, мы можем смерджить со следующим ключом:
$ git merge --no-ff already_tested_branch $ git branch -d already_tested_branch
Чтобы без сюрпризов и у нас точно не было ненужного ветвеления можем указать так(чаще всего это нужно если мы до этого уже делали --no-ff, или ставили ):
$ git merge --ff-only already_tested_branch
Есчли бранч был создан не только локально но и удаленно, то нужно его удалить удаленно тоже.
Нужно помнить, что когда мы пушим мы неявно делаем следующее:
$ git push remote local_branch:remote_branch
Но если мы уже удалили локальную бранчу, то так мы сделать не можем потому что ее нет, поэтому мы удаляем удаленную таким образом:
$ git push remote_name :remote_branchили же алиасом:
$ git push remote_name --delete remote_branch
Связать свою локальную бранчу с удаленной:
$ git branch --set-upstream mymaster origin/master
Комментариев нет:
Отправить комментарий