Изменить первый коммит проекта с помощью Git? [Дубликат]

Вы должны проверить имя родительского процесса, см. статью Code Project о решении, основанном на .NET ** .

Непрограммный способ проверить:

  1. Запустить Cmd.exe
  2. Запустить приложение (например, c:\windows\notepad.exe)
  3. Проверить свойства Notepad.exe процесс в Process & nbsp; Explorer
  4. Проверить родительский процесс (это показывает cmd.exe)

То же самое можно проверить, получив родительский имя процесса.

450
задан VonC 25 May 2014 в 13:13
поделиться

3 ответа

Как упоминалось ecdpalma ниже, git 1.7. 12+ (август 2012) была улучшена опция --root для git rebase:

"git rebase [-i] --root $tip" теперь можно использовать для перезаписи всей истории, ведущей к "$tip", вплоть до корневого коммита.

Это новое поведение первоначально обсуждалось здесь:

Я лично думаю, что "git rebase -i --root" должен работать без требования "--onto" и позволять вам "редактировать" даже первый коммит в истории.
Понятно, что это никого не беспокоило, так как люди гораздо реже переписывают в самом начале истории, чем в других случаях.

Последовал патч.


(оригинальный ответ, февраль 2010)

Как упоминается в Git FAQ (и в этом SO вопросе), идея такова:

  1. Создать новую временную ветку
  2. Отмотать её до коммита, который вы хотите изменить, используя git reset --hard
  3. Изменить этот коммит (он будет вершиной текущего HEAD, и вы сможете изменить содержимое любого файла)
  4. Пересоздать ветку поверх изменённого коммита, используя:

    git rebase --onto   `.
    

Хитрость заключается в том, чтобы убедиться, что информация, которую вы хотите удалить, не была повторно введена более поздним коммитом в другом месте вашего файла. Если вы подозреваете это, то вам нужно использовать filter-branch --tree-filter чтобы убедиться, что содержимое этого файла не содержит ни в одном коммите разумной информации.

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

724
ответ дан 22 November 2019 в 22:49
поделиться

Если вы хотите изменить только первый коммит, вы можете попробовать git rebase и изменить коммит, что похоже на этот пост: Как изменить указанный коммит в git?

А если вы хотите изменить все коммиты, содержащие необработанный email, то лучшим выбором будет filter-branch. В книге Pro Git есть пример глобального изменения адреса электронной почты, и вы можете найти эту ссылку полезной http://git-scm.com/book/en/Git-Tools-Rewriting-History

0
ответ дан 22 November 2019 в 22:49
поделиться

git rebase -i позволяет вам удобно редактировать любые предыдущие коммиты, за исключением корневого коммита . Следующие команды показывают, как это сделать вручную.

# tag the old root, "git rev-list ..." will return the hash of first commit
git tag root `git rev-list HEAD | tail -1`

# switch to a new branch pointing at the first commit
git checkout -b new-root root

# make any edits and then commit them with:
git commit --amend

# check out the previous branch (i.e. master)
git checkout @{-1}

# replace old root with amended version
git rebase --onto new-root root

# you might encounter merge conflicts, fix any conflicts and continue with:
# git rebase --continue

# delete the branch "new-root"
git branch -d new-root

# delete the tag "root"
git tag -d root
81
ответ дан 22 November 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: