git reset --soft github/master
git commit -с
git push github -all
# 1 -> 2
git rebase --onto master tmp1~2 tmp1 # пересадить два коммита ветки tmp1
git rebase --onto master tmp2~3 tmp2 # пересадить три коммита ветки tmp2
git reset HEAD~1 # обрезать ветку tmp2 на один коммит
# 1 -> 3
git rebase --onto master tmp1~3 tmp1# пересадить три коммита ветки tmp1
git switch master # вернуться в мастер
git reset tmp1~2 # и подвинуть его на шаг вперёд
git rebase --onto master tmp2~3 tmp2 # пересадить три коммита ветки tmp2
git update-index --assume-unchanged файл
# create a repository interactively
gh repo create
# create a new remote repository and clone it locally
gh repo create my-project --public --clone
# create a remote repository from the current directory
gh repo create my-project --private --source=. --remote=upstream
# create a repository under your account using the current directory name
$ glab repo create
# create a repository under a group using the current directory name
$ glab repo create --group glab-cli
# create a repository with a specific name
$ glab repo create my-project
# create a repository for a group
$ glab repo create glab-cli/my-project
Грубо говоря на компе [папка1], а в репе лежит [папка1, папка2]
git reset --hard HEAD^
git push --force
A - B - C - - - - J [master]
\
D - E - F - G [branch-A]
\
H - - I [branch-B]
diff -u <(git rev-list --first-parent child_branch) <(git rev-list --first-parent parent_branch) | sed -ne 's/^ //p' | head -1
git reset --hard example/ветка
git reset --hard
git checkout '*'
git restore '*'
git clean -d -f
Но если я создам новую ветку не запушенный коммит пропадет.
git branch feature_branch # создать новую ветку для текущего коммита
git reset origin/master # удалить коммит, он останется только в новой ветке
одной командой сказать, что бы запушил коммит не в мастер а в другую ветку, не переходя на нее
git push origin HEAD:feature_branch
Например, допустим в вашем проекте огромная история изменений и вы хотите разбить ваш репозиторий на два — один с короткой историей для новых разработчиков, а другой с более длинной историей для людей, интересующихся анализом истории. Вы можете пересадить одну историю на другую, 'заменяя' самый первый коммит в короткой истории последним коммитом в длинной истории. Это удобно, так как вам не придётся по-настоящему изменять каждый коммит в новой истории, как это вам бы потребовалось делать в случае обычного объединения историй (так как родословная коммитов влияет на SHA-1).