# 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).
git config --global user.name "Имя Фамилия"
git config --global user.email user@mail.com
git config --list --show-origin
git filter-repo --mailmap my-mailmap
Correct Name <correct@email.com> <old@email.com>
# Если хочешь внести изменения во внешний репозиторий, то просто клонируй его к себе
git clone https://github.com/github-name/test.git
# Войди в рабочий каталог
cd test
# Переключись в нужную ветку
git switch additional
# Измени файл и закоммить его
git add "index.html"
git commit -m "add new sections"
# Отправь на GitHub
git push
git reset --soft HEAD^1 # откатываем локальную ветку, но не трогаем рабочую копию кода
git push --force origin HEAD # заменяем ветку во внешнем репозитории
git revert HEAD # отменяем предыдущую правку
git push # отправляем во внешний репо
git revert --no-commit HEAD # отменяем отмену, но не коммитим сразу
# дальше оформляем уже правильный коммит, без ненужных файлов.
git reset --soft master # начнём ветку заново от текущего мастера
# но все уже сделанные правки не пропадут, а останутся в индексе
git commit -m 'Это один коммит' # зафиксируем работу