Я люблю мерзавца добавить - интерактивно . Теперь это часть моего ежедневного рабочего процесса.
Кажется, проблема в том, что он не работает с неотслеживаемыми файлами. Я хочу отследить новый файл, но добавить только его часть, т.е. некоторые части этого нового файла еще не готовы к постановке.
Например, с помощью git add -i я могу выбрать опцию patch и даже отредактировать отдельные фрагменты, чтобы разместить части нового кода, оставив комментарии кода отладки без изменений. Мне нравится работать таким образом, потому что становится очевидным, над какими местами мега-патча, над которым я сейчас работаю, все еще нужно работать.
К сожалению, я не могу сделать то же самое с неотслеживаемым файлом. Либо я ставлю весь файл, либо ничего. Обходной путь, который я использовал, - это подготовка или даже фиксация нового файла, когда он пуст, а затем подготовка отдельных изменений обычным способом. Но это решение похоже на грязный взлом, и когда я забываю или передумал, оно создает больше проблем, чем должно быть.
Таким образом, вопрос заключается в следующем: как подготовить только часть нового файла, чтобы этот новый файл отслеживался, но оставлял все или части его содержимого без изменений?
</shame>
-N
открытие, спасибо! Хотя я бы предпочел объединить это-p
в таком случае.gid add -N the_file
&git add -p
. Следует добавить, что-N
также работает с-A
Самый простой способ сделать это (и imho интерактивная постановка в целом) это
git gui
. Он поставляется в комплекте с git и должен работать практически на всех платформах, которые поддерживаются git.Просто запустите,
git gui
и откроется графический интерфейс, который позволяет размещать и фиксировать фрагменты и даже отдельные строки отслеживаемых и неотслеживаемых файлов.источник
git gui
. Например, в Debian он находится в отдельном пакете, называемом «git-gui».git gui
никогда не работала. На самом деле, это отключает эти пункты меню .git gui
для нового файла, вы должныgit add -N new_file
сначала запустить - см. Ответ Ричарда Хансена.Простая демонстрация:
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
вместо этого жестко закодировать хеш . Я не рекомендую делать этоNUL:
вместо/dev/null
. В противном случае используйте что-то вродеecho -n '' | git hash-object --stdin -w
Теперь индекс будет содержать
newfile
пустой BLOB-объект, а пустой BLOB-объект будет введен в базу данных объектов, если он еще не существовал:Это должно быть именно то, что вы хотите. Могу ли я также порекомендовать подключаемый модуль vim fugitive для очень интеллектуального управления индексами (см. Better git add -p? )
источник
Изменить: это, кажется, не работает сейчас. Я уверен, что это было раньше (на git 1.7.1). В случае, если это не сработает, я предлагаю постановку,
/dev/null
как показано выше:Если вы используете Windows (без
/dev/null
), вы можете заменить ее на путь к пустому файлу.Оригинальный ответ
Вы хотите
Это добавляет неотслеживаемые файлы для меня. Со страницы руководства:
источник
git add -p newfile
не работает вообще (ню-эффект) и эффектgit add --interactive
'[a] dd unracked' имеет эффектgit add newfile
; Редактировать также проверено с помощью git 1.7.5.3; нет костиПросто для записи другой возможности: я использую
И тогда вы можете ставить куски или редактировать их на месте.
источник
add -N
сadd -i
. Я просто добавил, чтоadd -p
вместоadd -i
работ тоже.