Подтвердить что ты не робот

Как я могу начать чистую ветку без родословной, а затем фиксировать файлы постепенно?

У меня есть фреймворк PHP с версией GIT, и я планирую несколько (радикальных) изменений в своем ядре.

Что я хочу сделать, так это начать работу над новым ядром в новой ветке, но поскольку это изменение может потребовать некоторой реструктуризации в файловой системе, я хотел бы начать эту новую ветвь как можно чище.

Я хочу, чтобы чистая ветка включала только файлы ядра. Когда я заканчиваю свои изменения, я хочу добавить остальные модули из фреймворка в рабочий каталог один за другим, но сохраняю возможность слияния, если я делаю изменения на главном сервере.

Как я могу это сделать?

4b9b3361

Ответ 1

Ветка без предков

Вам нужен флаг - сирота. Например:

git checkout master
git checkout --orphan foo

# Unstage all the files in your working tree.
git rm --cached $(git ls-files)

создаст новую ветвь с именем foo без предков, но сохранит текущее рабочее дерево из любой ветки, на которой вы были, когда вы вызвали команду (в данном случае - главную ветку). Затем вы можете изменить свое рабочее дерево и выполнить фиксацию, чтобы начать историю ветвей заново.

Инкрементная настройка файлов

Чтобы выполнить инкрементные добавления к вашей истории, используйте git add для создания только тех файлов, которые вы хотите для каждой фиксации. На странице руководства git -add (1) можно сказать о добавлении файлов выборочно:

Fileglobs (например, *.c) можно указать для добавления всех файлов соответствия. Также может быть предоставлено имя ведущего каталога (например, dir для добавления dir/file1 и dir/file2), чтобы добавить все файлы в каталог, рекурсивно.

Ответ 2

Что вы можете сделать, это просто перейти к новой ветке, git co -b my_new_branch, очистить свой код и сохранить нужные вам вещи и, наконец, совершить. Это commit, первое из my_new_branch, будет тогда чистым.

Ответ 3

Если вы должны работать со старой версией git:

 mkdir some_dir
 cd some_dir
 git init
 echo a>some_file; git add some_file; git commit -m 'initial commit'
 cd ..
 git fetch ./some_dir/ master:new_independent_branch
 rm -rf some_dir