[git use] Как очистить все записи фиксации

внешний интерфейс Git GitHub
[git use] Как очистить все записи фиксации

предисловие


Зачем очищать записи коммитов в git?

Большинству разработчиков нравится создавать свой собственный репозиторий на github, а затем продолжать разработку, а затем продолжать добавлять, коммитить, отправлять и т. д. В середине они неизбежно отправят свою более важную информацию о конфиденциальности в удаленный источник.Если вы удалите это, нажмите его снова.Также существуют удаленные записи происхождения и фиксации, и большинство из них создаются разработчиками как общедоступный репозиторий, который является бесплатным, и каждый может клонировать непосредственно в локальный репозиторий по уникальной ссылке на репозиторий. Тогда это приведет к прямому раскрытию неявной информации.

пройти первымgit checkout --helpУзнать о--orphan, потому что мы собираемся использовать его.

git checkout --help

git checkout --help

--help для --orphan

--orphan的说明

Объяснение --orphan :

// Create a new orphan branch, named <new_branch>, started from
// <start_point> and switch to it. The first commit made on this new
// branch will have no parents and it will be the root of a new
// history totally disconnected from all the other branches and
// commits.
// 中文翻译:
// 创建一个独立的new_branch分支,HEAD指向当前分支,并自动切换到该分支;
// 分支没有父级结点,它是一个新的根记录,不与其他任何分支和提交记录有连接。

// The index and the working tree are adjusted as if you had
// previously run "git checkout <start_point>". This allows you to
// start a new history that records a set of paths similar to
// <start_point> by easily running "git commit -a" to make the root
// commit.
// 中文翻译:
// 它会基于你之前执行"git checkout <start_point>"的 start_point 分支,调整新的索引和分支树
// 你可以通过"git commit -a"提交一个新commit记录作为根提交记录,这样的话你就有个一个新的历史记录,
// 类似于 start_point 分支的一系列提交记录痕迹;

// This can be useful when you want to publish the tree from a commit
// without exposing its full history. You might want to do this to
// publish an open source branch of a project whose current tree is
// "clean", but whose full history contains proprietary or otherwise
// encumbered bits of code.
// 中文翻译:
// 如果你想把你的分支树变成只有一个commit记录,不想暴露他所有提交历史,那么它就很有用。
// 如果你想通过这样做发布一个开源分支工程,当前所有包含专利记录分支树就会被清空,否则就是一堆冗余的代码;

// If you want to start a disconnected history that records a set of
// paths that is totally different from the one of <start_point>, then
// you should clear the index and the working tree right after
// creating the orphan branch by running "git rm -rf ." from the top
// level of the working tree. Afterwards you will be ready to prepare
// your new files, repopulating the working tree, by copying them from
// elsewhere, extracting a tarball, etc.
// 中文翻译:
// 如果你想开始一个全新的提交记录,完全与start_point分支不同,在你创建这个独立分支后,
// 通过 'git rm -rf',从根工作空间删除所有工作空间和索引里面的文件。
// 随后,你可以通过从别处复制准备你的新文件来从新填充你的工作空间。

решение

Итак, как решить эту проблему?

Идея заключается в следующем:

  • Используйте git checkout --orphan new_branch для создания независимой ветки new_branch на основе текущей ветки;
    git checkout --orphan  new_branch
  • Добавить все изменения файлов в промежуточное пространство
    git add -A
  • Зафиксировать и добавить запись фиксации
    git commit -am "commit message"
  • удалить текущую ветку
    • (Моя текущая ветка — master, и мой личный небольшой проект не использует управление рабочим процессом gitflow, не забудьте аккуратно удалить master 😁)
    git branch -D master
  • Переименуйте текущую автономную ветку в master
   git branch -m master
  • отправить в удаленную ветку
    • -f — это сокращение от --force, его нужно использовать с осторожностью, во многих проектах ваш или чужой код покрывается этой операцией, если вы не являетесь единственным разработчиком;
    git push -f origin master

Ладно, ушел!

PS:

  • Не забудьте тщательно удалить локальную ветку master;
  • -D — это сокращение от --delete;
  • -f --force для форсирования действия;
  • Используйте git rm -rf с осторожностью;
  • Не используйте вышеуказанное по своему желанию, помните! Помните! Помните!
  • Иначе вас могут зарубить 😁😁😁