Добавить новую ветку в удалённый репозиторий:
опция -u - установит эту ветку в качестве 'апстрима'.
Добавить в локальный репозиторий новую ветку из удалённого репозитория:
git fetch && git checkout <remote-branch-name>
- git checkout -b <local-branch-name>
- git push [-u] <remote-name> <local-branch-name>:<remote-branch-name>,
опция -u - установит эту ветку в качестве 'апстрима'.
Удалить ветку из удалённого репозитория:
git push <remote-name> :<remote-branch-name>Добавить в локальный репозиторий новую ветку из удалённого репозитория:
git fetch && git checkout <remote-branch-name>
Добавить новый удалённый репозиторий:
git remote add <remote-name> <remote-path>
Установить ветку из удалённого репозитория в качестве апстрима:
git branch -u <remote-name>/<remote-branch-name> [local-branch-name],
если local-branch-name не задана, используется текущая ветка
-----------------------------------------------------------------------------------------------
Создать патч:
git diff COMMIT - патч без учёта автора и подписей
git format-patch START_COMMIT - патч с учётом автора и подписей
git format-patch START_COMMIT..END_COMMIT - то же, но для заданного диапазона
Применить патч:
git apply < FILE.patch - применит патч без учёта подписей и автора
git am < FILE.patch - применит патч с учётом подписей и автора
-----------------------------------------------------------------------------------------------
Если изменения были в обеих ветках, которые надо слить:
git rebase -i TARGET_COMMIT - на TARGET_COMMIT накладывается текущая ветка
git rebase -i TARGET_COMMIT SRC_COMMIT - на TARGET_COMMIT накладывается SRC_COMMIT
При возникновении конфликтов при поочередном накладывании коммитов работа команды будет останавливаться, а в проблемные местах файлов появятся соответствующие метки. После редактирования — разрешения конфликтов — файлы следует внести в индекс командой git add и продолжить наложение следующих коммитов командой git rebase --continue. Альтернативными выходами будут команды git rebase --skip (пропустить наложение коммита и перейти к следующему) или git rebase --abort (отмена работы команды и всех внесенных изменений).
git remote add <remote-name> <remote-path>
Установить ветку из удалённого репозитория в качестве апстрима:
git branch -u <remote-name>/<remote-branch-name> [local-branch-name],
если local-branch-name не задана, используется текущая ветка
-----------------------------------------------------------------------------------------------
Создать патч:
git diff COMMIT - патч без учёта автора и подписей
git format-patch START_COMMIT - патч с учётом автора и подписей
git format-patch START_COMMIT..END_COMMIT - то же, но для заданного диапазона
Применить патч:
git apply < FILE.patch - применит патч без учёта подписей и автора
git am < FILE.patch - применит патч с учётом подписей и автора
-----------------------------------------------------------------------------------------------
Если изменения были в обеих ветках, которые надо слить:
git rebase -i TARGET_COMMIT - на TARGET_COMMIT накладывается текущая ветка
git rebase -i TARGET_COMMIT SRC_COMMIT - на TARGET_COMMIT накладывается SRC_COMMIT
При возникновении конфликтов при поочередном накладывании коммитов работа команды будет останавливаться, а в проблемные местах файлов появятся соответствующие метки. После редактирования — разрешения конфликтов — файлы следует внести в индекс командой git add и продолжить наложение следующих коммитов командой git rebase --continue. Альтернативными выходами будут команды git rebase --skip (пропустить наложение коммита и перейти к следующему) или git rebase --abort (отмена работы команды и всех внесенных изменений).
Если нужно применить выборочный коммит к текущей ветке:
git cherry-pick COMMIT [-n] - ключ -n показывает, что изменения будут применены без индексации и создания нового коммита
Найти коммит в истории изменений, даже если на него нет указателей (он впереди всех):
git reflog
Для редактирования конфликтов:
git mergetool
Удалить лишний файл из всей истории коммитов git:
git filter-branch --tree-filter 'rm <top/secret/file>' HEAD
В результате директория .git/refs/original будет описывать состояние дел до выполнения операции. Убедиться, что команда filter-branch сделала то, что нужно => и потом можно удалить эту директорию.
Эту директорию нужно удалить, чтобы использовать данную команду снова.
Найти коммит в истории изменений, даже если на него нет указателей (он впереди всех):
git reflog
Для редактирования конфликтов:
git mergetool
Удалить лишний файл из всей истории коммитов git:
git filter-branch --tree-filter 'rm <top/secret/file>' HEAD
В результате директория .git/refs/original будет описывать состояние дел до выполнения операции. Убедиться, что команда filter-branch сделала то, что нужно => и потом можно удалить эту директорию.
Эту директорию нужно удалить, чтобы использовать данную команду снова.