Как создать ветку git, чтобы файлы, которые я добавляю к ней, не добавлялись в master?
Я хочу создать ветку git, которая будет работать независимо от главной ветви. Я хочу, чтобы весь код, который присутствует в Мастере до сих пор, но любые дальнейшие изменения в Мастере не должны отражаться в ветви, и любые изменения в ветви не должны отражаться в Мастере.
я использовал эту команду для создания филиала:
git branch test
но любой файл, который я добавляю в master, Я вижу в test. И любой новый файл, добавленный в test, Я вижу в master. Как избежать это? Я не использовал параметр --track при создании ветви.
3 ответов
что вы просили именно то, что git branch test делает (точка, из которой две истории больше не являются общими). Однако здесь есть два уровня путаницы:
когда вы
git add newfile, вы добавляете его в индекс, но не фиксируете его или не обновляете какую-либо ветку с его содержимым. Когда вы проверяете новую ветку, то, пока нет конфликта, git не сбросит эти изменения из индекса. Это желательное поведение, например, если вы работа над другой ветвью и хотите взять только подмножество незафиксированных изменений в другую ветвь. Если ты ... --2--> состояние индекса в исходной ветви, индекс не сохранит эти изменения, когда вы вернетесь в тестовую ветвь.при перемещении между деревьями, в которых добавлены или удалены новые файлы, a
git checkoutне обязательно удалять их из файловой системы (если есть операция сброса). Затем вы можете "увидеть" эти файлы при переключении ветви, например, в выводеlsилиgit status-- но они "не отслеживаются" , и git не будет пытаться ничего с ними делать (git commit -a, например, не будет добавлять этот файл в индекс перед написанием нового дерева). Это не о чем беспокоиться, но если вы ОКР об этом, вы можете удалить их (или использоватьgit clean).
Я думаю, что ты хотела:
git checkout --orphan somebranch
это создаст somebranch без истории вообще, вы можете добавить, какие файлы вы хотите к этому, и они могут отличаться на 100% от ваших предыдущих ветвей.
git branch test
git add .
git checkout test
git checkout master
пока вы не зафиксируете, вы увидите свое рабочее дерево и свой индекс (который ссылается на то, что вы добавили) в обеих ветвях test и master.
git checkout test
git commit -m "files for test"
git checkout master
тогда вы не увидите в master файлы, которые вы только что совершено в test.
Ты новая ветвь test будет иметь запись нового коммита (с новым контентом), независимо от master.